main.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. go func() {
  23. if err := ui.Start(); err != nil {
  24. fmt.Printf("webui stopped: %v\n", err)
  25. }
  26. }()
  27. return nil
  28. }
  29. // Stop should not block. Return with a few seconds.
  30. func (p *program) Stop(s service.Service) error {
  31. if p.webUI != nil {
  32. return p.webUI.Stop()
  33. }
  34. return nil
  35. }
  36. func main() {
  37. svcFlag := flag.String("service", "", "Control the yfkj-webui service.")
  38. flag.Parse()
  39. cfg := &service.Config{
  40. Name: "yfkj-webui",
  41. DisplayName: "yfkj-webui",
  42. Description: "Yunfei Device Web Management UI",
  43. Option: map[string]any{
  44. "Restart": "always",
  45. },
  46. }
  47. svc, err := service.New(&program{}, cfg)
  48. if err != nil {
  49. fmt.Println(err)
  50. os.Exit(1)
  51. }
  52. if *svcFlag != "" {
  53. if err := service.Control(svc, *svcFlag); err != nil {
  54. fmt.Println(err)
  55. }
  56. return
  57. }
  58. if err := svc.Run(); err != nil {
  59. fmt.Println(err)
  60. os.Exit(1)
  61. }
  62. }