cron.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package cron
  2. import (
  3. "context"
  4. "github.com/go-co-op/gocron/v2"
  5. "github.com/uozi-tech/cosy/logger"
  6. )
  7. // Global scheduler instance
  8. var s gocron.Scheduler
  9. func init() {
  10. var err error
  11. s, err = gocron.NewScheduler()
  12. if err != nil {
  13. logger.Fatalf("Init Scheduler: %v\n", err)
  14. }
  15. }
  16. // InitCronJobs initializes and starts all cron jobs
  17. func InitCronJobs(ctx context.Context) {
  18. // Initialize auto cert job
  19. _, err := setupAutoCertJob(s)
  20. if err != nil {
  21. logger.Fatalf("AutoCert Err: %v\n", err)
  22. }
  23. // Initialize certificate expiration check job
  24. _, err = setupCertExpiredJob(s)
  25. if err != nil {
  26. logger.Fatalf("CertExpired Err: %v\n", err)
  27. }
  28. // Start logrotate job
  29. setupLogrotateJob(s)
  30. // Initialize auth token cleanup job
  31. _, err = setupAuthTokenCleanupJob(s)
  32. if err != nil {
  33. logger.Fatalf("CleanExpiredAuthToken Err: %v\n", err)
  34. }
  35. // Start the scheduler
  36. s.Start()
  37. <-ctx.Done()
  38. s.Shutdown()
  39. }
  40. // RestartLogrotate is a public API to restart the logrotate job
  41. func RestartLogrotate() {
  42. restartLogrotateJob(s)
  43. }