setup.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "io"
  5. "net/http"
  6. "pmail/dto"
  7. "pmail/dto/response"
  8. "pmail/services/setup"
  9. )
  10. func Proxy(w http.ResponseWriter, r *http.Request) {
  11. w.Write([]byte("proxy"))
  12. }
  13. func Setup(ctx *dto.Context, w http.ResponseWriter, req *http.Request) {
  14. reqBytes, err := io.ReadAll(req.Body)
  15. if err != nil {
  16. response.NewSuccessResponse("").FPrint(w)
  17. return
  18. }
  19. var reqData map[string]string
  20. err = json.Unmarshal(reqBytes, &reqData)
  21. if err != nil {
  22. response.NewSuccessResponse("").FPrint(w)
  23. return
  24. }
  25. if reqData["step"] == "database" && reqData["action"] == "get" {
  26. dbType, dbDSN, err := setup.GetDatabaseSettings()
  27. if err != nil {
  28. response.NewErrorResponse(response.ServerError, err.Error(), "")
  29. }
  30. response.NewSuccessResponse(map[string]string{
  31. "db_type": dbType,
  32. "db_dsn": dbDSN,
  33. }).FPrint(w)
  34. return
  35. }
  36. if reqData["step"] == "database" && reqData["action"] == "set" {
  37. err := setup.SetDatabaseSettings(reqData["db_type"], reqData["db_dsn"])
  38. if err != nil {
  39. response.NewErrorResponse(response.ServerError, err.Error(), "")
  40. }
  41. response.NewSuccessResponse("Succ").FPrint(w)
  42. return
  43. }
  44. if reqData["step"] == "domain" && reqData["action"] == "get" {
  45. smtpDomain, webDomain, err := setup.GetDomainSettings()
  46. if err != nil {
  47. response.NewErrorResponse(response.ServerError, err.Error(), "")
  48. }
  49. response.NewSuccessResponse(map[string]string{
  50. "smtp_domain": smtpDomain,
  51. "web_domain": webDomain,
  52. }).FPrint(w)
  53. return
  54. }
  55. if reqData["step"] == "domain" && reqData["action"] == "set" {
  56. err := setup.SetDomainSettings(reqData["smtp_domain"], reqData["web_domain"])
  57. if err != nil {
  58. response.NewErrorResponse(response.ServerError, err.Error(), "")
  59. }
  60. response.NewSuccessResponse("Succ").FPrint(w)
  61. return
  62. }
  63. if reqData["step"] == "dns" && reqData["action"] == "get" {
  64. dnsInfos, err := setup.GetDNSSettings(ctx)
  65. if err != nil {
  66. response.NewErrorResponse(response.ServerError, err.Error(), "")
  67. }
  68. response.NewSuccessResponse(dnsInfos).FPrint(w)
  69. return
  70. }
  71. if reqData["step"] == "ssl" && reqData["action"] == "get" {
  72. err := setup.GenSSL()
  73. if err != nil {
  74. response.NewErrorResponse(response.ServerError, err.Error(), "")
  75. }
  76. response.NewSuccessResponse("").FPrint(w)
  77. return
  78. }
  79. }