main.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "github.com/0xJacky/Nginx-UI/internal/kernal"
  6. "github.com/0xJacky/Nginx-UI/internal/logger"
  7. "github.com/0xJacky/Nginx-UI/internal/nginx"
  8. "github.com/0xJacky/Nginx-UI/internal/upgrader"
  9. "github.com/0xJacky/Nginx-UI/router"
  10. "github.com/0xJacky/Nginx-UI/settings"
  11. "github.com/gin-gonic/gin"
  12. "github.com/jpillora/overseer"
  13. "github.com/jpillora/overseer/fetcher"
  14. "log"
  15. "net/http"
  16. )
  17. func Program(state overseer.State) {
  18. defer logger.Sync()
  19. logger.Infof("Nginx configuration directory: %s", nginx.GetConfPath())
  20. kernal.Boot()
  21. if state.Listener != nil {
  22. err := http.Serve(state.Listener, router.InitRouter())
  23. if err != nil {
  24. logger.Error(err)
  25. }
  26. }
  27. logger.Info("Server exited")
  28. }
  29. func main() {
  30. var confPath string
  31. flag.StringVar(&confPath, "config", "app.ini", "Specify the configuration file")
  32. flag.Parse()
  33. settings.Init(confPath)
  34. gin.SetMode(settings.ServerSettings.RunMode)
  35. r, err := upgrader.GetRuntimeInfo()
  36. if err != nil {
  37. log.Fatalln(err)
  38. }
  39. overseer.Run(overseer.Config{
  40. Program: Program,
  41. Address: fmt.Sprintf("%s:%s", settings.ServerSettings.HttpHost, settings.ServerSettings.HttpPort),
  42. Fetcher: &fetcher.File{Path: r.ExPath},
  43. TerminateTimeout: 0,
  44. })
  45. }