55 lines
1.3 KiB
Go
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()
|
||
|
}
|
||
|
}
|