init.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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/pop3_server"
  12. "pmail/session"
  13. "pmail/signal"
  14. "pmail/smtp_server"
  15. "pmail/utils/file"
  16. )
  17. func Init() {
  18. if !config.IsInit {
  19. dirInit()
  20. log.Infof("Please click http://127.0.0.1 to continue.\n")
  21. go http_server.SetupStart()
  22. <-signal.InitChan
  23. http_server.SetupStop()
  24. }
  25. for {
  26. config.Init()
  27. parsemail.Init()
  28. err := db.Init()
  29. if err != nil {
  30. panic(err)
  31. }
  32. session.Init()
  33. hooks.Init()
  34. // smtp server start
  35. go smtp_server.Start()
  36. go smtp_server.StartWithTLS()
  37. // http server start
  38. go http_server.HttpsStart()
  39. go http_server.HttpStart()
  40. // pop3 server start
  41. go pop3_server.Start()
  42. go pop3_server.StartWithTls()
  43. configStr, _ := json.Marshal(config.Instance)
  44. log.Warnf("Config File Info: %s", configStr)
  45. <-signal.RestartChan
  46. log.Infof("Server Restart!")
  47. smtp_server.Stop()
  48. http_server.HttpsStop()
  49. http_server.HttpStop()
  50. pop3_server.Stop()
  51. }
  52. }
  53. func dirInit() {
  54. if !file.PathExist("./config") {
  55. err := os.MkdirAll("./config", 0744)
  56. if err != nil {
  57. panic(err)
  58. }
  59. }
  60. if !file.PathExist("./config/dkim") {
  61. err := os.MkdirAll("./config/dkim", 0744)
  62. if err != nil {
  63. panic(err)
  64. }
  65. }
  66. if !file.PathExist("./config/ssl") {
  67. err := os.MkdirAll("./config/ssl", 0744)
  68. if err != nil {
  69. panic(err)
  70. }
  71. }
  72. }