main.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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/router"
  9. "github.com/0xJacky/Nginx-UI/settings"
  10. "github.com/gin-gonic/gin"
  11. "github.com/jpillora/overseer"
  12. "net/http"
  13. "time"
  14. )
  15. func Program(state overseer.State) {
  16. defer logger.Sync()
  17. logger.Infof("Nginx configuration directory: %s", nginx.GetConfPath())
  18. kernal.Boot()
  19. if state.Listener != nil {
  20. err := http.Serve(state.Listener, router.InitRouter())
  21. if err != nil {
  22. logger.Error(err)
  23. }
  24. }
  25. logger.Info("Server exited")
  26. }
  27. func main() {
  28. var confPath string
  29. flag.StringVar(&confPath, "config", "app.ini", "Specify the configuration file")
  30. flag.Parse()
  31. settings.Init(confPath)
  32. gin.SetMode(settings.ServerSettings.RunMode)
  33. overseer.Run(overseer.Config{
  34. Program: Program,
  35. Address: fmt.Sprintf("%s:%s", settings.ServerSettings.HttpHost, settings.ServerSettings.HttpPort),
  36. TerminateTimeout: 5 * time.Second,
  37. })
  38. }