cron.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package cron
  2. import (
  3. "github.com/0xJacky/Nginx-UI/internal/cert"
  4. "github.com/0xJacky/Nginx-UI/internal/logrotate"
  5. "github.com/0xJacky/Nginx-UI/query"
  6. "github.com/0xJacky/Nginx-UI/settings"
  7. "github.com/go-co-op/gocron/v2"
  8. "github.com/uozi-tech/cosy/logger"
  9. "time"
  10. )
  11. var s gocron.Scheduler
  12. func init() {
  13. var err error
  14. s, err = gocron.NewScheduler()
  15. if err != nil {
  16. logger.Fatalf("Init Scheduler: %v\n", err)
  17. }
  18. }
  19. var logrotateJob gocron.Job
  20. func InitCronJobs() {
  21. _, err := s.NewJob(gocron.DurationJob(30*time.Minute),
  22. gocron.NewTask(cert.AutoCert),
  23. gocron.WithSingletonMode(gocron.LimitModeWait))
  24. if err != nil {
  25. logger.Fatalf("AutoCert Err: %v\n", err)
  26. }
  27. startLogrotate()
  28. cleanExpiredAuthToken()
  29. s.Start()
  30. }
  31. func RestartLogrotate() {
  32. logger.Debug("Restart Logrotate")
  33. if logrotateJob != nil {
  34. err := s.RemoveJob(logrotateJob.ID())
  35. if err != nil {
  36. logger.Error(err)
  37. return
  38. }
  39. }
  40. startLogrotate()
  41. }
  42. func startLogrotate() {
  43. if !settings.LogrotateSettings.Enabled {
  44. return
  45. }
  46. var err error
  47. logrotateJob, err = s.NewJob(
  48. gocron.DurationJob(time.Duration(settings.LogrotateSettings.Interval)*time.Minute),
  49. gocron.NewTask(logrotate.Exec),
  50. gocron.WithSingletonMode(gocron.LimitModeWait))
  51. if err != nil {
  52. logger.Fatalf("LogRotate Job: Err: %v\n", err)
  53. }
  54. }
  55. func cleanExpiredAuthToken() {
  56. _, err := s.NewJob(gocron.DurationJob(5*time.Minute), gocron.NewTask(func() {
  57. logger.Debug("clean expired auth tokens")
  58. q := query.AuthToken
  59. _, _ = q.Where(q.ExpiredAt.Lt(time.Now().Unix())).Delete()
  60. }), gocron.WithSingletonMode(gocron.LimitModeWait))
  61. if err != nil {
  62. logger.Fatalf("CleanExpiredAuthToken Err: %v\n", err)
  63. }
  64. }