scheduler.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package main
  2. import (
  3. "imuslab.com/arozos/mod/time/nightly"
  4. //"imuslab.com/arozos/mod/time/scheduler"
  5. )
  6. /*
  7. Nightly.go
  8. author: tobychui
  9. This is a handle for putting everything that is required to run everynight.
  10. Default: Run once every day 3am in the morning.
  11. */
  12. var (
  13. nightlyManager *nightly.TaskManager
  14. //systemScheduler *scheduler.Scheduler
  15. )
  16. func NightlyTasksInit() {
  17. /*
  18. Nighty Task Manager
  19. The tasks that should be done once per night. Internal function only.
  20. */
  21. nightlyManager = nightly.NewNightlyTaskManager(*nightlyTaskRunTime)
  22. }
  23. func SchedulerInit() {
  24. /*
  25. System Scheudler
  26. The internal scheudler for arozos
  27. */
  28. //Create an user router and its module
  29. /*
  30. router := prout.NewModuleRouter(prout.RouterOption{
  31. ModuleName: "Tasks Scheduler",
  32. AdminOnly: false,
  33. UserHandler: userHandler,
  34. DeniedHandler: func(w http.ResponseWriter, r *http.Request) {
  35. common.SendErrorResponse(w, "Permission Denied")
  36. },
  37. })
  38. //Register the module
  39. moduleHandler.RegisterModule(module.ModuleInfo{
  40. Name: "Tasks Scheduler",
  41. Group: "System Tools",
  42. IconPath: "SystemAO/arsm/img/scheduler.png",
  43. Version: "1.2",
  44. StartDir: "SystemAO/arsm/scheduler.html",
  45. SupportFW: true,
  46. InitFWSize: []int{1080, 580},
  47. LaunchFWDir: "SystemAO/arsm/scheduler.html",
  48. SupportEmb: false,
  49. })
  50. //Startup the ArOZ Emulated Crontab Service
  51. newScheduler, err := scheduler.NewScheduler(userHandler, AGIGateway, "system/cron.json")
  52. if err != nil {
  53. systemWideLogger.PrintAndLog("Cron", "ArOZ Emulated Cron Startup Failed. Stopping all scheduled tasks.", err)
  54. }
  55. systemScheduler = newScheduler
  56. //Register Endpoints
  57. http.HandleFunc("/system/arsm/aecron/list", func(w http.ResponseWriter, r *http.Request) {
  58. if authAgent.CheckAuth(r) {
  59. //User logged in
  60. newScheduler.HandleListJobs(w, r)
  61. } else {
  62. //User not logged in
  63. errorHandlePermissionDenied(w, r)
  64. }
  65. })
  66. router.HandleFunc("/system/arsm/aecron/add", systemScheduler.HandleAddJob)
  67. router.HandleFunc("/system/arsm/aecron/remove", systemScheduler.HandleJobRemoval)
  68. router.HandleFunc("/system/arsm/aecron/listlog", systemScheduler.HandleShowLog)
  69. //Register settings
  70. registerSetting(settingModule{
  71. Name: "Tasks Scheduler",
  72. Desc: "System Tasks and Excution Scheduler",
  73. IconPath: "SystemAO/arsm/img/small_icon.png",
  74. Group: "Cluster",
  75. StartDir: "SystemAO/arsm/aecron.html",
  76. RequireAdmin: false,
  77. })
  78. */
  79. }