mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2026-09-03 07:24:52 +08:00
106 lines
2.5 KiB
Go
106 lines
2.5 KiB
Go
package cron
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/0xJacky/Nginx-UI/internal/cert"
|
|
"github.com/0xJacky/Nginx-UI/internal/nodeauth"
|
|
"github.com/0xJacky/Nginx-UI/settings"
|
|
"github.com/go-co-op/gocron/v2"
|
|
"github.com/uozi-tech/cosy/logger"
|
|
)
|
|
|
|
// Global scheduler instance
|
|
var s gocron.Scheduler
|
|
|
|
func init() {
|
|
var err error
|
|
s, err = gocron.NewScheduler()
|
|
if err != nil {
|
|
logger.Fatalf("Init Scheduler: %v\n", err)
|
|
}
|
|
}
|
|
|
|
// InitCronJobs initializes and starts all cron jobs
|
|
func InitCronJobs(ctx context.Context) {
|
|
// Sweep any cert rows still marked "pending" — they belong to an
|
|
// issuance that was killed by the previous shutdown.
|
|
if err := cert.SweepStalePending(); err != nil {
|
|
logger.Errorf("SweepStalePending Err: %v\n", err)
|
|
}
|
|
|
|
// Initialize auto cert job
|
|
_, err := setupAutoCertJob(s)
|
|
if err != nil {
|
|
logger.Fatalf("AutoCert Err: %v\n", err)
|
|
}
|
|
|
|
// Initialize certificate expiration check job
|
|
_, err = setupCertExpiredJob(s)
|
|
if err != nil {
|
|
logger.Fatalf("CertExpired Err: %v\n", err)
|
|
}
|
|
|
|
// Initialize self-signed certificate renewal job
|
|
_, err = setupSelfSignedCertRenewalJob(s)
|
|
if err != nil {
|
|
logger.Fatalf("SelfSignedCertRenewal Err: %v\n", err)
|
|
}
|
|
|
|
// Start logrotate job
|
|
setupLogrotateJob(s)
|
|
|
|
// Initialize auth token cleanup job
|
|
_, err = setupAuthTokenCleanupJob(s)
|
|
if err != nil {
|
|
logger.Fatalf("CleanExpiredAuthToken Err: %v\n", err)
|
|
}
|
|
|
|
// Initialize automatic node credential upgrade and rotation.
|
|
nodeauth.StartRelationshipUpgradeWorker(ctx, settings.NodeSettings.InstanceID)
|
|
_, err = setupNodeCredentialMaintenanceJob(s)
|
|
if err != nil {
|
|
logger.Fatalf("NodeCredentialMaintenance Err: %v\n", err)
|
|
}
|
|
|
|
// Initialize auto backup jobs
|
|
err = setupAutoBackupJobs(s)
|
|
if err != nil {
|
|
logger.Fatalf("AutoBackup Err: %v\n", err)
|
|
}
|
|
|
|
// Initialize DDNS jobs
|
|
if err := setupDDNSJobs(s); err != nil {
|
|
logger.Fatalf("DDNS Err: %v\n", err)
|
|
}
|
|
|
|
// Initialize upstream availability testing job
|
|
_, err = setupUpstreamAvailabilityJob(s)
|
|
if err != nil {
|
|
logger.Fatalf("UpstreamAvailability Err: %v\n", err)
|
|
}
|
|
|
|
// Initialize incremental log indexing job
|
|
_, err = setupIncrementalIndexingJob(s)
|
|
if err != nil {
|
|
logger.Fatalf("IncrementalIndexing Err: %v\n", err)
|
|
}
|
|
|
|
// Initialize automatic namespace replication job
|
|
_, err = setupNamespaceSyncJob(s)
|
|
if err != nil {
|
|
logger.Fatalf("NamespaceAutoSync Err: %v\n", err)
|
|
}
|
|
|
|
// Start the scheduler
|
|
s.Start()
|
|
|
|
<-ctx.Done()
|
|
s.Shutdown()
|
|
}
|
|
|
|
// RestartLogrotate is a public API to restart the logrotate job
|
|
func RestartLogrotate() {
|
|
restartLogrotateJob(s)
|
|
}
|