mirror of
https://github.com/Jinnrry/PMail.git
synced 2025-11-01 12:22:38 +08:00
93 lines
2.2 KiB
Go
93 lines
2.2 KiB
Go
package controllers
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
"net/http"
|
|
"pmail/dto"
|
|
"pmail/dto/response"
|
|
"pmail/services/setup"
|
|
)
|
|
|
|
func Proxy(w http.ResponseWriter, r *http.Request) {
|
|
w.Write([]byte("proxy"))
|
|
}
|
|
|
|
func Setup(ctx *dto.Context, w http.ResponseWriter, req *http.Request) {
|
|
reqBytes, err := io.ReadAll(req.Body)
|
|
if err != nil {
|
|
response.NewSuccessResponse("").FPrint(w)
|
|
return
|
|
}
|
|
|
|
var reqData map[string]string
|
|
err = json.Unmarshal(reqBytes, &reqData)
|
|
|
|
if err != nil {
|
|
response.NewSuccessResponse("").FPrint(w)
|
|
return
|
|
}
|
|
|
|
if reqData["step"] == "database" && reqData["action"] == "get" {
|
|
dbType, dbDSN, err := setup.GetDatabaseSettings()
|
|
if err != nil {
|
|
response.NewErrorResponse(response.ServerError, err.Error(), "")
|
|
}
|
|
|
|
response.NewSuccessResponse(map[string]string{
|
|
"db_type": dbType,
|
|
"db_dsn": dbDSN,
|
|
}).FPrint(w)
|
|
return
|
|
}
|
|
|
|
if reqData["step"] == "database" && reqData["action"] == "set" {
|
|
err := setup.SetDatabaseSettings(reqData["db_type"], reqData["db_dsn"])
|
|
if err != nil {
|
|
response.NewErrorResponse(response.ServerError, err.Error(), "")
|
|
}
|
|
|
|
response.NewSuccessResponse("Succ").FPrint(w)
|
|
return
|
|
}
|
|
|
|
if reqData["step"] == "domain" && reqData["action"] == "get" {
|
|
smtpDomain, webDomain, err := setup.GetDomainSettings()
|
|
if err != nil {
|
|
response.NewErrorResponse(response.ServerError, err.Error(), "")
|
|
}
|
|
response.NewSuccessResponse(map[string]string{
|
|
"smtp_domain": smtpDomain,
|
|
"web_domain": webDomain,
|
|
}).FPrint(w)
|
|
return
|
|
}
|
|
|
|
if reqData["step"] == "domain" && reqData["action"] == "set" {
|
|
err := setup.SetDomainSettings(reqData["smtp_domain"], reqData["web_domain"])
|
|
if err != nil {
|
|
response.NewErrorResponse(response.ServerError, err.Error(), "")
|
|
}
|
|
response.NewSuccessResponse("Succ").FPrint(w)
|
|
return
|
|
}
|
|
|
|
if reqData["step"] == "dns" && reqData["action"] == "get" {
|
|
dnsInfos, err := setup.GetDNSSettings(ctx)
|
|
if err != nil {
|
|
response.NewErrorResponse(response.ServerError, err.Error(), "")
|
|
}
|
|
response.NewSuccessResponse(dnsInfos).FPrint(w)
|
|
return
|
|
}
|
|
|
|
if reqData["step"] == "ssl" && reqData["action"] == "get" {
|
|
err := setup.GenSSL()
|
|
if err != nil {
|
|
response.NewErrorResponse(response.ServerError, err.Error(), "")
|
|
}
|
|
response.NewSuccessResponse("").FPrint(w)
|
|
return
|
|
}
|
|
}
|