setup_server.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package http_server
  2. import (
  3. "flag"
  4. "fmt"
  5. log "github.com/sirupsen/logrus"
  6. "io/fs"
  7. "net/http"
  8. "pmail/controllers"
  9. "time"
  10. )
  11. var ip string
  12. // 项目初始化引导用的服务,初始化引导结束后即退出
  13. var setupServer *http.Server
  14. func SetupStart() {
  15. mux := http.NewServeMux()
  16. fe, err := fs.Sub(local, "dist")
  17. if err != nil {
  18. panic(err)
  19. }
  20. mux.Handle("/", http.FileServer(http.FS(fe)))
  21. mux.HandleFunc("/api/", contextIterceptor(controllers.Setup))
  22. // 挑战请求类似这样 /.well-known/acme-challenge/QPyMAyaWw9s5JvV1oruyqWHG7OqkHMJEHPoUz2046KM
  23. mux.HandleFunc("/.well-known/", controllers.AcmeChallenge)
  24. HttpPort := 80
  25. flag.IntVar(&HttpPort, "p", 80, "初始化阶段Http服务端口")
  26. flag.Parse()
  27. log.Infof("HttpServer Start On Port :%d", HttpPort)
  28. setupServer = &http.Server{
  29. Addr: fmt.Sprintf(":%d", HttpPort),
  30. Handler: mux,
  31. ReadTimeout: time.Second * 60,
  32. WriteTimeout: time.Second * 60,
  33. }
  34. err = setupServer.ListenAndServe()
  35. if err != nil && err != http.ErrServerClosed {
  36. panic(err)
  37. }
  38. }
  39. func SetupStop() {
  40. err := setupServer.Close()
  41. if err != nil {
  42. panic(err)
  43. }
  44. }