init.go 1.2 KB

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