main.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. ui, err := NewWebUI(":8080")
  21. if err != nil {
  22. return err
  23. }
  24. p.webUI = ui
  25. fmt.Println("webui starting on http :8080")
  26. go func() {
  27. if err := ui.Start(); err != nil {
  28. fmt.Printf("webui stopped: %v\n", err)
  29. os.Exit(1)
  30. }
  31. }()
  32. return nil
  33. }
  34. // Stop should not block. Return with a few seconds.
  35. func (p *program) Stop(s service.Service) error {
  36. if p.webUI != nil {
  37. return p.webUI.Stop()
  38. }
  39. return nil
  40. }
  41. func main() {
  42. baseapp.SetOptDirs(false, false, false, false)
  43. baseapp.InitPath()
  44. svcFlag := flag.String("service", "", "Control the yfkj-webui service.")
  45. flag.Parse()
  46. svcConfig := &service.Config{
  47. Name: "yfkj-webui",
  48. DisplayName: "yfkj-webui",
  49. Description: "Yunfei Device Web Management UI",
  50. Option: map[string]any{
  51. "Restart": "always",
  52. },
  53. }
  54. servicelib.WriteVersionFile(baseapp.EXEC_DIR, Version) //-> for 升级
  55. prg := &program{
  56. name: "WebUI",
  57. }
  58. svc, err := service.New(prg, svcConfig)
  59. if err != nil {
  60. fmt.Printf("%s.service creation failed: %v\n",
  61. svcConfig.Name, err)
  62. os.Exit(1)
  63. }
  64. if *svcFlag != "" {
  65. if err := service.Control(svc, *svcFlag); err != nil {
  66. fmt.Println(err)
  67. }
  68. return
  69. }
  70. if err := svc.Run(); err != nil {
  71. fmt.Println(err)
  72. os.Exit(1)
  73. }
  74. }