mirror of
https://github.com/hamster1963/HomeDash-Backend.git
synced 2025-06-16 20:21:23 +08:00
171 lines
4.7 KiB
Go
171 lines
4.7 KiB
Go
package boot
|
|
|
|
import (
|
|
"context"
|
|
"github.com/gogf/gf/v2/os/gcron"
|
|
"github.com/gogf/gf/v2/os/gctx"
|
|
"github.com/gogf/gf/v2/os/glog"
|
|
"home-network-watcher/utility/ha_utils"
|
|
"home-network-watcher/utility/network_utils"
|
|
"home-network-watcher/utility/server_utils"
|
|
"home-network-watcher/utility/uptime_utils"
|
|
)
|
|
|
|
// Boot
|
|
//
|
|
// @dc: 定时任务启动
|
|
// @return: error
|
|
func Boot() (err error) {
|
|
_, err = gcron.AddOnce(context.TODO(), "@every 1s", func(ctx context.Context) {
|
|
glog.Debug(context.Background(), "定时任务启动中...")
|
|
if err := bootMethod(); err != nil {
|
|
glog.Fatal(context.Background(), "定时任务启动失败: ", err)
|
|
}
|
|
glog.Debug(context.Background(), "定时任务启动成功")
|
|
}, "开始启动定时任务")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = gcron.AddOnce(context.TODO(), "@every 15s", func(ctx context.Context) {
|
|
glog.Info(context.Background(), "定时任务测试中...")
|
|
if err := bootCheck(); err != nil {
|
|
glog.Fatal(context.Background(), "定时任务测试失败: ", err)
|
|
} else {
|
|
glog.Info(context.Background(), "定时任务测试成功")
|
|
}
|
|
}, "开始测试定时任务")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// bootCheck
|
|
//
|
|
// @Description: 定时任务测试
|
|
// @return error
|
|
func bootCheck() (err error) {
|
|
return nil
|
|
}
|
|
|
|
// bootMethod
|
|
// @Description: 定时任务启动
|
|
// @return error
|
|
func bootMethod() (err error) {
|
|
var ctx = gctx.New()
|
|
|
|
glog.Notice(ctx, "开始获取科学上网网速")
|
|
_, err = gcron.AddSingleton(ctx, "@every 1s", func(ctx context.Context) {
|
|
err = network_utils.ProxyNetwork.GetProxyNetwork()
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取代理速度"+err.Error())
|
|
}
|
|
}, "获取代理速度")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
glog.Notice(ctx, "开始获取家庭路由器网速")
|
|
_, err = gcron.AddSingleton(ctx, "@every 1s", func(ctx context.Context) {
|
|
err = network_utils.NetworkUtils.GetHomeNetwork()
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取家庭路由器速度"+err.Error())
|
|
}
|
|
}, "获取家庭路由器速度")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
glog.Notice(ctx, "开始获取当前代理节点信息")
|
|
_, err = gcron.AddSingleton(ctx, "@every 5s", func(ctx context.Context) {
|
|
err = network_utils.NodeUtils.GetNodeInfo()
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取当前代理节点信息"+err.Error())
|
|
}
|
|
}, "获取当前代理节点信息")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// 进行第一次机场信息缓存
|
|
err = network_utils.ProxyProvider.GetSubscribeInfo()
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取机场订阅信息失败"+err.Error())
|
|
}
|
|
|
|
glog.Notice(ctx, "开始获取机场订阅信息")
|
|
_, err = gcron.AddSingleton(ctx, "@every 10m", func(ctx context.Context) {
|
|
err = network_utils.ProxyProvider.GetSubscribeInfo()
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取机场订阅信息失败"+err.Error())
|
|
}
|
|
}, "开始获取机场订阅信息")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// 获取服务器信息
|
|
glog.Notice(ctx, "开始获取服务器信息")
|
|
_, err = gcron.AddSingleton(ctx, "@every 1s", func(ctx context.Context) {
|
|
err = server_utils.Nezha.GetAllServerInfo(ctx)
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取服务器信息失败"+err.Error())
|
|
}
|
|
}, "开始获取服务器信息")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// 获取 xui 信息
|
|
glog.Notice(ctx, "开始获取 xui 信息")
|
|
_, err = gcron.AddSingleton(ctx, "@every 5s", func(ctx context.Context) {
|
|
err = network_utils.ProxyNetwork.GetXuiUserList()
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取 xui 信息失败"+err.Error())
|
|
}
|
|
}, "开始获取 xui 信息")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// 获取服务概览信息
|
|
glog.Notice(ctx, "开始获取服务概览信息")
|
|
_, err = gcron.AddSingleton(ctx, "@every 10s", func(ctx context.Context) {
|
|
err = server_utils.ServerCron.CronGetDockerAndMonitor(ctx)
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取服务概览信息失败"+err.Error())
|
|
}
|
|
}, "开始获取服务概览信息")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// 获取 UptimeKuma 信息
|
|
glog.Notice(ctx, "开始获取 UptimeKuma 信息")
|
|
_, err = gcron.AddSingleton(ctx, "@every 10s", func(ctx context.Context) {
|
|
err = uptime_utils.Kuma.GetUptimeData(ctx)
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取 UptimeKuma 信息失败"+err.Error())
|
|
}
|
|
}, "开始获取 UptimeKuma 信息")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// 获取智能家居信息
|
|
glog.Notice(ctx, "开始获取智能家居信息")
|
|
_, err = gcron.AddSingleton(ctx, "@every 1s", func(ctx context.Context) {
|
|
err = ha_utils.HaUtils.GetEntitiesInfo(ctx)
|
|
if err != nil {
|
|
glog.Warning(ctx, "获取智能家居信息失败"+err.Error())
|
|
}
|
|
}, "开始获取智能家居信息")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|