This commit is contained in:
parent
ca42c72e0f
commit
f09d0d2994
@ -14,7 +14,6 @@ func Task() {
|
||||
return
|
||||
}
|
||||
|
||||
_, _ = sch.NewJob(gocron.DurationJob(3*time.Minute), gocron.NewTask(task.NetworkClient().ClientOfflineNotify())) // 每三分钟检测离线的客户端并且发送消息
|
||||
|
||||
_, _ = sch.NewJob(gocron.DurationJob(1*time.Minute), gocron.NewTask(task.NetworkClient().ClientOfflineNotify)) // 每分钟执行一次
|
||||
sch.Start()
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import (
|
||||
)
|
||||
|
||||
type NetworkClientImpl interface {
|
||||
ClientOfflineNotify() error // 客户端离线通知
|
||||
ClientOfflineNotify() // 客户端离线通知
|
||||
}
|
||||
|
||||
type networkClient struct{}
|
||||
@ -28,35 +28,36 @@ func NetworkClient() NetworkClientImpl {
|
||||
// @description: 客户端离线通知
|
||||
// @receiver c
|
||||
// @return error
|
||||
func (c networkClient) ClientOfflineNotify() error {
|
||||
// 查询出所有配置了离线通知的客户端
|
||||
var clients []model.Client
|
||||
if err := client.DB.Where("offline_monitoring = ?", 1).Find(&clients).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(clients) <= 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c networkClient) ClientOfflineNotify() {
|
||||
log.Debugf("开始执行离线通知任务")
|
||||
// 开始扫描已经链接过的客户端
|
||||
connectedPeers, err := component.Wireguard().GetClients()
|
||||
if err != nil {
|
||||
log.Errorf("获取已连接客户端失败: %v", err.Error())
|
||||
return err
|
||||
return
|
||||
}
|
||||
|
||||
// 查询一下通知配置
|
||||
code, err := service.Setting().GetByCode("WECHAT_NOTIFY")
|
||||
if err != nil {
|
||||
log.Errorf("获取微信通知配置失败: %v", err.Error())
|
||||
return err
|
||||
return
|
||||
}
|
||||
|
||||
// 查询出所有配置了离线通知的客户端
|
||||
var clients []model.Client
|
||||
if err := client.DB.Where("offline_monitoring = ?", 1).Find(&clients).Error; err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if len(clients) <= 0 {
|
||||
return
|
||||
}
|
||||
|
||||
for _, peer := range connectedPeers {
|
||||
var clientName string
|
||||
if !slices.ContainsFunc(clients, func(cli model.Client) bool {
|
||||
isExist := peer.PublicKey.String() == jsoniter.Get([]byte(cli.Keys), "publicKey").ToString()
|
||||
isExist := peer.PublicKey.String() == jsoniter.Get([]byte(cli.Keys), "PublicKey").ToString()
|
||||
if isExist {
|
||||
clientName = cli.Name
|
||||
}
|
||||
@ -78,7 +79,7 @@ func (c networkClient) ClientOfflineNotify() error {
|
||||
|
||||
// 已经离线,发送通知
|
||||
msg := fmt.Sprintf(`
|
||||
[离线通知]
|
||||
[离线通知]
|
||||
客户端名称 : %v
|
||||
客户端IP : %v
|
||||
最后在线时间 : %v
|
||||
@ -92,5 +93,5 @@ func (c networkClient) ClientOfflineNotify() error {
|
||||
|
||||
}
|
||||
|
||||
return nil
|
||||
return
|
||||
}
|
||||
|
5
main.go
5
main.go
@ -22,8 +22,6 @@ func init() {
|
||||
log.Errorf("执行脚本失败: %v", err.Error())
|
||||
}
|
||||
|
||||
// 启动定时任务
|
||||
go cron.Task()
|
||||
}
|
||||
|
||||
func main() {
|
||||
@ -35,6 +33,9 @@ func main() {
|
||||
pprof.Register(handler, "/monitoring")
|
||||
}
|
||||
|
||||
// 启动定时任务
|
||||
cron.Task()
|
||||
|
||||
httpServe := http.Server{
|
||||
Addr: fmt.Sprintf(":%d", config.Config.Http.Port),
|
||||
Handler: handler,
|
||||
|
Loading…
x
Reference in New Issue
Block a user