| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package main
- import (
- "flag"
- "fmt"
- "os"
- "github.com/kardianos/service"
- )
- var (
- Version = "0.0.0.1"
- BuildTime = ""
- )
- type program struct {
- webUI *WebUI
- }
- // Start should not block. Do the actual work async.
- func (p *program) Start(s service.Service) error {
- ui, err := NewWebUI(":8080")
- if err != nil {
- return err
- }
- p.webUI = ui
- go func() {
- if err := ui.Start(); err != nil {
- fmt.Printf("webui stopped: %v\n", err)
- }
- }()
- return nil
- }
- // Stop should not block. Return with a few seconds.
- func (p *program) Stop(s service.Service) error {
- if p.webUI != nil {
- return p.webUI.Stop()
- }
- return nil
- }
- func main() {
- svcFlag := flag.String("service", "", "Control the yfkj-webui service.")
- flag.Parse()
- cfg := &service.Config{
- Name: "yfkj-webui",
- DisplayName: "yfkj-webui",
- Description: "Yunfei Device Web Management UI",
- Option: map[string]any{
- "Restart": "always",
- },
- }
- svc, err := service.New(&program{}, cfg)
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- if *svcFlag != "" {
- if err := service.Control(svc, *svcFlag); err != nil {
- fmt.Println(err)
- }
- return
- }
- if err := svc.Run(); err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- }
|