mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-02 23:06:36 +08:00
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package tasks
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
"time"
|
|
|
|
"github.com/Rain-kl/Wavelet/internal/apps/openflare/uptimekuma"
|
|
"github.com/Rain-kl/Wavelet/internal/model"
|
|
"github.com/Rain-kl/Wavelet/pkg/logger"
|
|
)
|
|
|
|
var (
|
|
lastUptimeKumaSyncTime time.Time
|
|
uptimeKumaSyncMutex sync.Mutex
|
|
)
|
|
|
|
func init() {
|
|
registerJob("uptime_kuma_sync", "* * * * *", runUptimeKumaSyncJob)
|
|
}
|
|
|
|
func runUptimeKumaSyncJob(ctx context.Context) {
|
|
if !model.UptimeKumaEnabled {
|
|
return
|
|
}
|
|
|
|
interval := model.UptimeKumaSyncInterval
|
|
if interval <= 0 {
|
|
interval = 5
|
|
}
|
|
|
|
if time.Since(lastUptimeKumaSyncTime) < time.Duration(interval)*time.Minute {
|
|
return
|
|
}
|
|
|
|
if !uptimeKumaSyncMutex.TryLock() {
|
|
logger.WarnF(ctx, "[OpenFlareTasks] Uptime Kuma sync job is already running, skipping this scheduled run")
|
|
return
|
|
}
|
|
defer uptimeKumaSyncMutex.Unlock()
|
|
|
|
logger.InfoF(ctx, "[OpenFlareTasks] Starting scheduled Uptime Kuma sync")
|
|
if err := uptimekuma.SyncToUptimeKuma(ctx); err != nil {
|
|
logger.ErrorF(ctx, "[OpenFlareTasks] Uptime Kuma sync failed: %v", err)
|
|
return
|
|
}
|
|
|
|
lastUptimeKumaSyncTime = time.Now()
|
|
logger.InfoF(ctx, "[OpenFlareTasks] Uptime Kuma sync completed successfully")
|
|
}
|