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() } }