qnc-server-old/core/server.go
2024-09-14 10:48:09 +08:00

55 lines
1.3 KiB
Go

package core
import (
"errors"
"fmt"
"github.com/gin-gonic/gin"
"github.com/unrolled/secure"
"log"
"net/http"
"qnc-server/api"
"qnc-server/config"
)
func RunServer() {
// 设置日志文件
logger := SetupLogger()
log.SetOutput(logger)
// 设置 Gin 的全局默认输出为日志文件
gin.DefaultWriter = logger
gin.DefaultErrorWriter = logger
//启动 HTTP 服务器
{
rHttp := gin.New()
// 使用自定义的日志中间件
rHttp.LoadHTMLGlob("templates/*")
rHttp.Use(gin.LoggerWithWriter(logger), gin.RecoveryWithWriter(logger), LoggingMiddleware(logger))
api.InitApi(rHttp.Group(config.ConfigData.Server.Prefix))
httpPort := fmt.Sprintf(":%d", config.ConfigData.Server.HttpPort)
log.Printf("HTTP server listening on http://127.0.0.1%s", httpPort)
if err := rHttp.Run(httpPort); err != nil && !errors.Is(err, http.ErrServerClosed) {
log.Fatalf("HTTP server listen error %s", err)
}
}
}
// http重定向到https
func LoadTls() gin.HandlerFunc {
return func(c *gin.Context) {
middleware := secure.New(secure.Options{
SSLRedirect: true,
SSLHost: fmt.Sprintf("localhost:%d", config.ConfigData.Server.HttpsPort),
})
err := middleware.Process(c.Writer, c.Request)
if err != nil {
// 如果出现错误,请不要继续
fmt.Println(err)
return
}
// 继续往下处理
c.Next()
}
}