main.go 917 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package main
  2. import (
  3. "github.com/op/go-logging"
  4. "log"
  5. "os"
  6. "os/signal"
  7. "syscall"
  8. "x-ui/config"
  9. "x-ui/database"
  10. "x-ui/logger"
  11. "x-ui/web"
  12. )
  13. func main() {
  14. log.Printf("%v %v", config.GetName(), config.GetVersion())
  15. switch config.GetLogLevel() {
  16. case config.Debug:
  17. logger.InitLogger(logging.DEBUG)
  18. case config.Info:
  19. logger.InitLogger(logging.INFO)
  20. case config.Warn:
  21. logger.InitLogger(logging.WARNING)
  22. case config.Error:
  23. logger.InitLogger(logging.ERROR)
  24. default:
  25. log.Fatal("unknown log level:", config.GetLogLevel())
  26. }
  27. err := database.InitDB(config.GetDBPath())
  28. if err != nil {
  29. log.Fatal(err)
  30. }
  31. var server *web.Server
  32. server = web.NewServer()
  33. go server.Run()
  34. sigCh := make(chan os.Signal, 1)
  35. signal.Notify(sigCh, syscall.SIGHUP)
  36. for {
  37. sig := <-sigCh
  38. if sig == syscall.SIGHUP {
  39. server.Stop()
  40. server = web.NewServer()
  41. go server.Run()
  42. } else {
  43. return
  44. }
  45. }
  46. }