def8999183fc24c73acde7c581924cd4ac1996f7.svn-base 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package main
  2. import (
  3. "./comm"
  4. "./mdns"
  5. "./models"
  6. "./pkg/logging"
  7. "./pkg/setting"
  8. "./pkg/util"
  9. "./routers"
  10. "fmt"
  11. "github.com/kardianos/service"
  12. "log"
  13. "net/http"
  14. "os"
  15. "strings"
  16. //"unsafe"
  17. )
  18. // @title 科湃腾Go语言后台API
  19. // @version 1.1.2
  20. // @description kptyun_service
  21. // @contact.name 朱红宾
  22. // @contact.url https://www.dairyinfo.com.cn
  23. // @contact.email kptzhu@163.com
  24. // @host
  25. // @BasePath /
  26. func main() {
  27. setting.Setup("")
  28. models.Setup()
  29. logging.Setup()
  30. svcConfig := &service.Config{
  31. Name: setting.ServerSetting.ServerName, //服务显示名称
  32. DisplayName: setting.ServerSetting.DisplayName, //服务名称
  33. Description: setting.ServerSetting.Description, //服务描述
  34. }
  35. prg := &program{}
  36. s, err := service.New(prg, svcConfig)
  37. if err != nil {
  38. fmt.Println(err, "service.New() err",err)
  39. }
  40. if len(os.Args) > 1 {
  41. if os.Args[1] == "install" {
  42. err = s.Install()
  43. if err != nil {
  44. fmt.Println("install err", err)
  45. } else {
  46. fmt.Println("install success")
  47. }
  48. return
  49. }
  50. if os.Args[1] == "remove" {
  51. err = s.Uninstall()
  52. if err != nil {
  53. fmt.Println("Uninstall err", err)
  54. } else {
  55. fmt.Println("Uninstall success")
  56. }
  57. return
  58. }
  59. }
  60. _ = s.Run()
  61. }
  62. type program struct{}
  63. func (p *program) Start(s service.Service) error {
  64. go p.run()
  65. return nil
  66. }
  67. func (p *program) run() {
  68. // 代码写在这儿
  69. if setting.ServerSetting.MailStart == "1" {
  70. util.CronMail()
  71. }
  72. if setting.ServerSetting.WXworkStart == "1" {
  73. util.CronWXwork()
  74. }
  75. //util.InitWebS("田欣宇","xdmy@1234","http://60.174.151.11:6888")
  76. //println(setting.ServerSetting.EasName,setting.ServerSetting.EasPassword,setting.ServerSetting.EasUrl)
  77. //sessionid,_ := util.EASWebServiceLogin()
  78. //println(sessionid)
  79. util.InitWebS(setting.ServerSetting.EasName,setting.ServerSetting.EasPassword,setting.ServerSetting.EasUrl)
  80. //var prt = util.Parts{}
  81. //util.EASWebServicInsertParts("3fdd787f-9c56-4f1d-970b-a825b937e258",prt)
  82. //_ =util.EASWebServiceLogout()
  83. //util.GetMsgv1()
  84. //util.Getuseinfor()
  85. //util.GetMailData()
  86. //util.SendMail()
  87. //inject.Init()
  88. //err := inject.LoadCasbinPolicyData()
  89. //if err != nil {
  90. // panic("加载casbin策略数据发生错误: " + err.Error())
  91. //}
  92. routersInit := routers.InitRouter()
  93. readTimeout := setting.ServerSetting.ReadTimeout
  94. writeTimeout := setting.ServerSetting.WriteTimeout
  95. endPoint := fmt.Sprintf(":%d", setting.ServerSetting.HttpPort)
  96. maxHeaderBytes := 1 << 20
  97. server := &http.Server{
  98. Addr: endPoint,
  99. Handler: routersInit,
  100. ReadTimeout: readTimeout,
  101. WriteTimeout: writeTimeout,
  102. MaxHeaderBytes: maxHeaderBytes,
  103. }
  104. //fmt.Println(unsafe.Alignof(unintptr(0)))
  105. //log.Printf("[info] start http server listening %s", endPoint)
  106. //ids,_:=util.NewIdWorker(1)
  107. //id,_:=ids.NextId()
  108. //println("最大11112",id)
  109. if setting.CommSetting.PortName != "" {
  110. go comm.OpenComm()
  111. }
  112. if strings.Trim(setting.ServerSetting.Mdns_servicename, " ") != "" {
  113. go mdns.Mdns(strings.Trim(setting.ServerSetting.Mdns_servicename, " "), setting.ServerSetting.Mdns_serviceport)
  114. }
  115. httpsPort := fmt.Sprintf(":%d", setting.ServerSetting.HttpsPort)
  116. if setting.ServerSetting.Https == 1 {
  117. log.Printf("[info] start https server listening port %s", httpsPort)
  118. _ = routersInit.RunTLS(httpsPort, setting.ServerSetting.CrtPath, setting.ServerSetting.KeyPath)
  119. } else if setting.ServerSetting.Https == 2 {
  120. log.Printf("[info] start https & http server listening port https %s, http %s", httpsPort, endPoint)
  121. go routersInit.RunTLS(httpsPort, setting.ServerSetting.CrtPath, setting.ServerSetting.KeyPath)
  122. _ = server.ListenAndServe()
  123. } else {
  124. log.Printf("[info] start http server listening port %s", endPoint)
  125. _ = server.ListenAndServe()
  126. }
  127. }
  128. func (p *program) Stop(s service.Service) error {
  129. fmt.Println("程序被关闭")
  130. return nil
  131. }