main.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "os"
  6. "rtu_linux_services/servicelib"
  7. "github.com/kardianos/service"
  8. "hnyfkj.com.cn/rtu/linux/baseapp"
  9. )
  10. var (
  11. Version = "0.0.0.1"
  12. BuildTime = ""
  13. )
  14. type program struct {
  15. name string
  16. webUI *WebUI
  17. }
  18. // Start should not block. Do the actual work async.
  19. func (p *program) Start(s service.Service) error {
  20. logCfgFile, err := servicelib.EnsureDefaultLogConfig()
  21. if err != nil {
  22. return err
  23. }
  24. baseapp.InitLogger(logCfgFile)
  25. baseapp.Logger.Infof("App Version: %s, Build Time: %s", Version, BuildTime)
  26. ui, err := NewWebUI(":8080")
  27. if err != nil {
  28. return err
  29. }
  30. p.webUI = ui
  31. baseapp.Logger.Infof("[%s] webui starting on http :8080 ...", p.name)
  32. go func() {
  33. if err := ui.Start(); err != nil {
  34. baseapp.Logger.Errorf("[%s] webui stopped: %v\n!!", p.name, err)
  35. os.Exit(1)
  36. }
  37. }()
  38. return nil
  39. }
  40. // Stop should not block. Return with a few seconds.
  41. func (p *program) Stop(s service.Service) error {
  42. if p.webUI != nil {
  43. return p.webUI.Stop()
  44. }
  45. return nil
  46. }
  47. func main() {
  48. baseapp.SetOptDirs(false, false, false, false)
  49. baseapp.InitPath()
  50. svcFlag := flag.String("service", "", "Control the yfkj-webui service.")
  51. flag.Parse()
  52. svcConfig := &service.Config{
  53. Name: "yfkj-webui",
  54. DisplayName: "yfkj-webui",
  55. Description: "Yunfei Device Web Management UI",
  56. Option: map[string]any{
  57. "Restart": "always",
  58. },
  59. }
  60. servicelib.WriteVersionFile(baseapp.EXEC_DIR, Version) //-> for 升级
  61. prg := &program{
  62. name: "WebUI",
  63. }
  64. svc, err := service.New(prg, svcConfig)
  65. if err != nil {
  66. fmt.Printf("%s.service creation failed: %v\n",
  67. svcConfig.Name, err)
  68. os.Exit(1)
  69. }
  70. if *svcFlag != "" {
  71. if err := service.Control(svc, *svcFlag); err != nil {
  72. fmt.Println(err)
  73. }
  74. return
  75. }
  76. if err := svc.Run(); err != nil {
  77. fmt.Println(err)
  78. os.Exit(1)
  79. }
  80. }