[优化] go 引用调整

This commit is contained in:
ryan
2026-06-06 10:26:20 +08:00
parent ee1110b752
commit 3cfefb4367
552 changed files with 1642 additions and 2185 deletions
+44
View File
@@ -0,0 +1,44 @@
package job
import (
"log/slog"
"github.com/robfig/cron/v3"
)
var cronRunner *cron.Cron
func InitCronJobs() {
cronRunner = cron.New()
// Register SSL renew job
_, err := cronRunner.AddJob("0 0 * * *", &SSLRenewJob{})
if err != nil {
slog.Error("failed to register SSL renew cron job", "error", err)
} else {
slog.Info("registered SSL renew cron job")
}
_, err = cronRunner.AddJob("@every 5m", &WAFIPGroupSyncJob{})
if err != nil {
slog.Error("failed to register WAF IP group sync cron job", "error", err)
} else {
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()
}
func StopCronJobs() {
if cronRunner != nil {
cronRunner.Stop()
}
}
+44
View File
@@ -0,0 +1,44 @@
package job
import (
"log/slog"
"time"
"github.com/rain-kl/openflare/openflare-server/model"
"github.com/rain-kl/openflare/openflare-server/service"
)
type SSLRenewJob struct {
}
func (j *SSLRenewJob) Run() {
slog.Info("The scheduled certificate update task is currently in progress ...")
certificates, err := model.ListTLSCertificates()
if err != nil {
slog.Error("failed to list certificates in SSL renew job", "error", err)
return
}
now := time.Now()
for _, cert := range certificates {
if !cert.AutoRenew || cert.Provider != "acme" || cert.ApplyStatus == "applying" {
continue
}
sub := cert.NotAfter.Sub(now)
// Expiring in less than 7 days (7 * 24 hours)
if sub.Hours() < 168 {
slog.Info("Update the SSL certificate for the domain", "domain", cert.PrimaryDomain)
// Invoke renew process (async go-routine handles Lego inside)
_, err := service.RenewTLSCertificate(cert.ID)
if err != nil {
slog.Error("Failed to update the SSL certificate", "domain", cert.PrimaryDomain, "error", err)
continue
}
slog.Info("Triggered the SSL certificate renew for domain", "domain", cert.PrimaryDomain)
}
}
slog.Info("The scheduled certificate update task has completed")
}
+44
View File
@@ -0,0 +1,44 @@
package job
import (
"log/slog"
"sync"
"time"
"github.com/rain-kl/openflare/openflare-server/common"
"github.com/rain-kl/openflare/openflare-server/service"
)
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")
}
}
+15
View File
@@ -0,0 +1,15 @@
package job
import (
"log/slog"
"github.com/rain-kl/openflare/openflare-server/service"
)
type WAFIPGroupSyncJob struct{}
func (j *WAFIPGroupSyncJob) Run() {
if err := service.SyncDueWAFIPGroups(); err != nil {
slog.Error("failed to sync due waf ip groups", "error", err)
}
}