mirror of
https://gitee.com/mirrors/AllinSSL.git
synced 2026-03-08 15:51:11 +08:00
Add files via upload
This commit is contained in:
76
backend/server/server.go
Normal file
76
backend/server/server.go
Normal file
@@ -0,0 +1,76 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"ALLinSSL/backend/middleware"
|
||||
"ALLinSSL/backend/public"
|
||||
"ALLinSSL/backend/route"
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"encoding/gob"
|
||||
"github.com/gin-contrib/gzip"
|
||||
"github.com/gin-contrib/sessions"
|
||||
"github.com/gin-contrib/sessions/memstore"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
func Run() error {
|
||||
public.ReloadConfig()
|
||||
public.InitLogger(public.LogPath)
|
||||
defer public.CloseLogger()
|
||||
r := gin.Default()
|
||||
|
||||
store := memstore.NewStore([]byte("secret")) // 只在内存中,不持久化
|
||||
r.Use(sessions.Sessions(public.SessionKey, store))
|
||||
r.Use(middleware.LoggerMiddleware())
|
||||
r.Use(gzip.Gzip(gzip.DefaultCompression))
|
||||
gob.Register(time.Time{})
|
||||
r.Use(middleware.SessionAuthMiddleware())
|
||||
// r.Use(middleware.OpLoggerMiddleware())
|
||||
route.Register(r)
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
public.ShutdownFunc = cancel
|
||||
err := RunServer(ctx, r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func RunServer(ctx context.Context, r *gin.Engine) error {
|
||||
|
||||
// 初始化http服务
|
||||
srv := &http.Server{
|
||||
Addr: ":" + public.Port,
|
||||
Handler: r,
|
||||
}
|
||||
errchan := make(chan error, 1)
|
||||
if public.GetSettingIgnoreError("https") == "1" {
|
||||
srv.TLSConfig = &tls.Config{
|
||||
MinVersion: tls.VersionTLS12, // 推荐设置最低 TLS 版本
|
||||
}
|
||||
go func() {
|
||||
defer close(errchan)
|
||||
err := srv.ListenAndServeTLS("data/https/cert.pem", "data/https/key.pem")
|
||||
if err != nil {
|
||||
errchan <- err
|
||||
}
|
||||
}()
|
||||
} else {
|
||||
go func() {
|
||||
defer close(errchan)
|
||||
err := srv.ListenAndServe()
|
||||
if err != nil {
|
||||
errchan <- err
|
||||
}
|
||||
}()
|
||||
}
|
||||
select {
|
||||
case err := <-errchan:
|
||||
return err
|
||||
case <-ctx.Done():
|
||||
_ = srv.Shutdown(ctx)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user