package monitor

import (
	"time"

	"github.com/coreos/go-systemd/sdjournal"
	"github.com/wuko233/sysmonitord/internal/config"
)

type Alert struct {
	Type      string      `json:"type"`      // 告警类型
	Level     string      `json:"level"`     // 告警级别
	Message   string      `json:"message"`   // 告警消息
	Timestamp time.Time   `json:"timestamp"` // 时间戳
	Data      interface{} `json:"data"`      // 附加数据
}

type SSHMonitor struct {
	config    *config.SSHMonitor
	alertChan chan<- Alert
	stopChan  chan struct{}
	journal   *sdjournal.Journal
}

type SSHLoginEvent struct {
	Timestamp time.Time `json:"timestamp"`

	Hostname string `json:"hostname"`  // 主机名
	Username string `json:"username"`  // 用户名
	Method   string `json:"method"`    // 登录方式：password/publickey
	SourceIP string `json:"source_ip"` // 来源IP
	Port     string `json:"port"`      // 端口
	Service  string `json:"service"`   // 服务名
	PID      string `json:"pid"`       // 进程ID
	Message  string `json:"message"`   // 原始日志消息
}
