package main import ( "./models" "./pkg/logging" "./pkg/setting" "./routers" "./routers/api" "fmt" "github.com/kardianos/service" "github.com/kptyun/KPTCOMM/comm" "github.com/kptyun/KPTCOMM/mdns" "log" "net/http" "os" "strings" //"unsafe" ) // @title 科湃腾Go语言后台API // @version 1.1.2 // @description kptyun_service // @contact.name 朱红宾 // @contact.url https://www.dairyinfo.com.cn // @contact.email kptzhu@163.com // @host // @BasePath / func main() { setting.Setup("") models.Setup() logging.Setup() svcConfig := &service.Config{ Name: setting.ServerSetting.ServerName, //服务显示名称 DisplayName: setting.ServerSetting.DisplayName, //服务名称 Description: setting.ServerSetting.Description, //服务描述 } prg := &program{} s, err := service.New(prg, svcConfig) if err != nil { fmt.Println(err, "service.New() err",err) } if len(os.Args) > 1 { if os.Args[1] == "install" { err = s.Install() if err != nil { fmt.Println("install err", err) } else { fmt.Println("install success") } return } if os.Args[1] == "remove" { err = s.Uninstall() if err != nil { fmt.Println("Uninstall err", err) } else { fmt.Println("Uninstall success") } return } } _ = s.Run() } type program struct{} func (p *program) Start(s service.Service) error { go p.run() return nil } func (p *program) run() { // 代码写在这儿 routersInit := routers.InitRouter() if setting.ServerSetting.GRFD == "1"{ //格润富德定时任务 api.CronGRFD() } readTimeout := setting.ServerSetting.ReadTimeout writeTimeout := setting.ServerSetting.WriteTimeout endPoint := fmt.Sprintf(":%d", setting.ServerSetting.HttpPort) maxHeaderBytes := 1 << 20 server := &http.Server{ Addr: endPoint, Handler: routersInit, ReadTimeout: readTimeout, WriteTimeout: writeTimeout, MaxHeaderBytes: maxHeaderBytes, //fmt.Println(unsafe.Alignof(unintptr(0))) //log.Printf("[info] start http server listening %s", endPoint) } if setting.CommSetting.PortName != "" { go comm.OpenComm() } if strings.Trim(setting.ServerSetting.Mdns_servicename, " ") != "" { go mdns.Mdns(strings.Trim(setting.ServerSetting.Mdns_servicename, " "), setting.ServerSetting.Mdns_serviceport) } httpsPort := fmt.Sprintf(":%d", setting.ServerSetting.HttpsPort) if setting.ServerSetting.Https == 1{ log.Printf("[info] start https server listening port %s", httpsPort) _ =routersInit.RunTLS(httpsPort, setting.ServerSetting.CrtPath, setting.ServerSetting.KeyPath) }else if setting.ServerSetting.Https == 2{ log.Printf("[info] start https & http server listening port https %s, http %s", httpsPort,endPoint) go routersInit.RunTLS(httpsPort, setting.ServerSetting.CrtPath, setting.ServerSetting.KeyPath) _ = server.ListenAndServe() }else { log.Printf("[info] start https server listening port %s", endPoint) _ = server.ListenAndServe() } } func (p *program) Stop(s service.Service) error { fmt.Println("程序被关闭") return nil }