init.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package res_init
  2. import (
  3. "encoding/json"
  4. log "github.com/sirupsen/logrus"
  5. "os"
  6. "pmail/config"
  7. "pmail/db"
  8. "pmail/dto/parsemail"
  9. "pmail/hooks"
  10. "pmail/http_server"
  11. "pmail/session"
  12. "pmail/signal"
  13. "pmail/smtp_server"
  14. "pmail/utils/file"
  15. )
  16. func Init() {
  17. if !config.IsInit {
  18. dirInit()
  19. log.Infof("Please click http://127.0.0.1 to continue.\n")
  20. go http_server.SetupStart()
  21. <-signal.InitChan
  22. http_server.SetupStop()
  23. }
  24. for {
  25. config.Init()
  26. parsemail.Init()
  27. err := db.Init()
  28. if err != nil {
  29. panic(err)
  30. }
  31. session.Init()
  32. hooks.Init()
  33. // smtp server start
  34. go smtp_server.Start()
  35. // http server start
  36. go http_server.HttpsStart()
  37. go http_server.HttpStart()
  38. configStr, _ := json.Marshal(config.Instance)
  39. log.Warnf("Config File Info: %s", configStr)
  40. <-signal.RestartChan
  41. log.Infof("Server Restart!")
  42. smtp_server.Stop()
  43. http_server.HttpsStop()
  44. http_server.HttpStop()
  45. }
  46. }
  47. func dirInit() {
  48. if !file.PathExist("./config") {
  49. err := os.MkdirAll("./config", 0744)
  50. if err != nil {
  51. panic(err)
  52. }
  53. }
  54. if !file.PathExist("./config/dkim") {
  55. err := os.MkdirAll("./config/dkim", 0744)
  56. if err != nil {
  57. panic(err)
  58. }
  59. }
  60. if !file.PathExist("./config/ssl") {
  61. err := os.MkdirAll("./config/ssl", 0744)
  62. if err != nil {
  63. panic(err)
  64. }
  65. }
  66. }