main.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "os"
  6. "github.com/kardianos/service"
  7. )
  8. var (
  9. Version = "0.0.0.1"
  10. BuildTime = ""
  11. )
  12. type program struct {
  13. webUI *WebUI
  14. }
  15. // Start should not block. Do the actual work async.
  16. func (p *program) Start(s service.Service) error {
  17. ui, err := NewWebUI(":8080")
  18. if err != nil {
  19. return err
  20. }
  21. p.webUI = ui
  22. fmt.Println("webui starting on http :8080")
  23. go func() {
  24. if err := ui.Start(); err != nil {
  25. fmt.Printf("webui stopped: %v\n", err)
  26. os.Exit(1)
  27. }
  28. }()
  29. return nil
  30. }
  31. // Stop should not block. Return with a few seconds.
  32. func (p *program) Stop(s service.Service) error {
  33. if p.webUI != nil {
  34. return p.webUI.Stop()
  35. }
  36. return nil
  37. }
  38. func main() {
  39. svcFlag := flag.String("service", "", "Control the yfkj-webui service.")
  40. flag.Parse()
  41. cfg := &service.Config{
  42. Name: "yfkj-webui",
  43. DisplayName: "yfkj-webui",
  44. Description: "Yunfei Device Web Management UI",
  45. Option: map[string]any{
  46. "Restart": "always",
  47. },
  48. }
  49. svc, err := service.New(&program{}, cfg)
  50. if err != nil {
  51. fmt.Println(err)
  52. os.Exit(1)
  53. }
  54. if *svcFlag != "" {
  55. if err := service.Control(svc, *svcFlag); err != nil {
  56. fmt.Println(err)
  57. }
  58. return
  59. }
  60. if err := svc.Run(); err != nil {
  61. fmt.Println(err)
  62. os.Exit(1)
  63. }
  64. }