mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-04 23:16:37 +08:00
[优化] go 引用调整
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user