mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-10 17:26:38 +08:00
[新增] 对接 Uptime Kuma
This commit is contained in:
@@ -26,6 +26,14 @@ func InitCronJobs() {
|
||||
slog.Info("registered WAF IP group sync cron job")
|
||||
}
|
||||
|
||||
// Register Uptime Kuma sync job (check every minute)
|
||||
_, err = cronRunner.AddJob("* * * * *", &UptimeKumaSyncJob{})
|
||||
if err != nil {
|
||||
slog.Error("failed to register Uptime Kuma sync cron job", "error", err)
|
||||
} else {
|
||||
slog.Info("registered Uptime Kuma sync cron job")
|
||||
}
|
||||
|
||||
cronRunner.Start()
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package job
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"openflare/common"
|
||||
"openflare/service"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
var lastUptimeKumaSyncTime time.Time
|
||||
var uptimeKumaSyncMutex sync.Mutex
|
||||
|
||||
type UptimeKumaSyncJob struct{}
|
||||
|
||||
func (j *UptimeKumaSyncJob) Run() {
|
||||
if !common.UptimeKumaEnabled {
|
||||
return
|
||||
}
|
||||
|
||||
interval := common.UptimeKumaSyncInterval
|
||||
if interval <= 0 {
|
||||
interval = 5
|
||||
}
|
||||
|
||||
if time.Since(lastUptimeKumaSyncTime) < time.Duration(interval)*time.Minute {
|
||||
return
|
||||
}
|
||||
|
||||
if !uptimeKumaSyncMutex.TryLock() {
|
||||
slog.Warn("Uptime Kuma sync job is already running, skipping this scheduled run")
|
||||
return
|
||||
}
|
||||
defer uptimeKumaSyncMutex.Unlock()
|
||||
|
||||
slog.Info("Starting scheduled Uptime Kuma sync")
|
||||
if err := service.SyncToUptimeKuma(); err != nil {
|
||||
slog.Error("Uptime Kuma sync failed", "error", err)
|
||||
} else {
|
||||
lastUptimeKumaSyncTime = time.Now()
|
||||
slog.Info("Uptime Kuma sync completed successfully")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user