mirror of
https://github.com/Jinnrry/PMail.git
synced 2025-10-30 03:21:52 +08:00
81 lines
2.7 KiB
Go
81 lines
2.7 KiB
Go
package http_server
|
|
|
|
import (
|
|
"fmt"
|
|
log "github.com/sirupsen/logrus"
|
|
"io/fs"
|
|
"net/http"
|
|
"pmail/config"
|
|
"pmail/controllers"
|
|
"pmail/controllers/email"
|
|
"pmail/session"
|
|
"time"
|
|
)
|
|
|
|
// 这个服务是为了拦截http请求转发到https
|
|
var httpServer *http.Server
|
|
|
|
func HttpStop() {
|
|
if httpServer != nil {
|
|
httpServer.Close()
|
|
}
|
|
}
|
|
|
|
func HttpStart() {
|
|
mux := http.NewServeMux()
|
|
|
|
HttpPort := 80
|
|
if config.Instance.HttpPort > 0 {
|
|
HttpPort = config.Instance.HttpPort
|
|
}
|
|
|
|
if config.Instance.HttpsEnabled != 2 {
|
|
mux.HandleFunc("/", controllers.Interceptor)
|
|
httpServer = &http.Server{
|
|
Addr: fmt.Sprintf(":%d", HttpPort),
|
|
Handler: mux,
|
|
ReadTimeout: time.Second * 90,
|
|
WriteTimeout: time.Second * 90,
|
|
}
|
|
} else {
|
|
fe, err := fs.Sub(local, "dist")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
mux.Handle("/", http.FileServer(http.FS(fe)))
|
|
// 挑战请求类似这样 /.well-known/acme-challenge/QPyMAyaWw9s5JvV1oruyqWHG7OqkHMJEHPoUz2046KM
|
|
mux.HandleFunc("/.well-known/", controllers.AcmeChallenge)
|
|
mux.HandleFunc("/api/ping", contextIterceptor(controllers.Ping))
|
|
mux.HandleFunc("/api/login", contextIterceptor(controllers.Login))
|
|
mux.HandleFunc("/api/group", contextIterceptor(controllers.GetUserGroup))
|
|
mux.HandleFunc("/api/group/list", contextIterceptor(controllers.GetUserGroupList))
|
|
mux.HandleFunc("/api/group/add", contextIterceptor(controllers.AddGroup))
|
|
mux.HandleFunc("/api/group/del", contextIterceptor(controllers.DelGroup))
|
|
mux.HandleFunc("/api/email/list", contextIterceptor(email.EmailList))
|
|
mux.HandleFunc("/api/email/del", contextIterceptor(email.EmailDelete))
|
|
mux.HandleFunc("/api/email/read", contextIterceptor(email.MarkRead))
|
|
mux.HandleFunc("/api/email/detail", contextIterceptor(email.EmailDetail))
|
|
mux.HandleFunc("/api/email/move", contextIterceptor(email.Move))
|
|
mux.HandleFunc("/api/email/send", contextIterceptor(email.Send))
|
|
mux.HandleFunc("/api/settings/modify_password", contextIterceptor(controllers.ModifyPassword))
|
|
mux.HandleFunc("/api/rule/get", contextIterceptor(controllers.GetRule))
|
|
mux.HandleFunc("/api/rule/add", contextIterceptor(controllers.UpsertRule))
|
|
mux.HandleFunc("/api/rule/update", contextIterceptor(controllers.UpsertRule))
|
|
mux.HandleFunc("/api/rule/del", contextIterceptor(controllers.DelRule))
|
|
mux.HandleFunc("/attachments/", contextIterceptor(controllers.GetAttachments))
|
|
mux.HandleFunc("/attachments/download/", contextIterceptor(controllers.Download))
|
|
log.Infof("HttpServer Start On Port :%d", HttpPort)
|
|
httpServer = &http.Server{
|
|
Addr: fmt.Sprintf(":%d", HttpPort),
|
|
Handler: session.Instance.LoadAndSave(mux),
|
|
ReadTimeout: time.Second * 90,
|
|
WriteTimeout: time.Second * 90,
|
|
}
|
|
}
|
|
|
|
err := httpServer.ListenAndServe()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|