🎨 添加中间件 && 完善预设注入功能 && 新增流式传输
This commit is contained in:
68
server/middleware/loadtls.go
Normal file
68
server/middleware/loadtls.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"git.echol.cn/loser/ai_proxy/server/global"
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// LoadTls 加载 TLS 证书
|
||||
func LoadTls() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
if global.GVA_CONFIG.System.UseHttps {
|
||||
certFile := global.GVA_CONFIG.System.TlsCert
|
||||
keyFile := global.GVA_CONFIG.System.TlsKey
|
||||
|
||||
if certFile == "" || keyFile == "" {
|
||||
global.GVA_LOG.Error("TLS cert or key file not configured")
|
||||
c.AbortWithStatus(500)
|
||||
return
|
||||
}
|
||||
|
||||
// 检查证书文件是否存在
|
||||
if _, err := os.Stat(certFile); os.IsNotExist(err) {
|
||||
global.GVA_LOG.Error("TLS cert file not found", zap.String("file", certFile))
|
||||
c.AbortWithStatus(500)
|
||||
return
|
||||
}
|
||||
|
||||
if _, err := os.Stat(keyFile); os.IsNotExist(err) {
|
||||
global.GVA_LOG.Error("TLS key file not found", zap.String("file", keyFile))
|
||||
c.AbortWithStatus(500)
|
||||
return
|
||||
}
|
||||
}
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
// LoadTlsFromFile 从文件加载 TLS 证书内容
|
||||
func LoadTlsFromFile(certFile, keyFile string) (certPEM, keyPEM []byte, err error) {
|
||||
certF, err := os.Open(certFile)
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("open cert file error: %w", err)
|
||||
}
|
||||
defer certF.Close()
|
||||
|
||||
keyF, err := os.Open(keyFile)
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("open key file error: %w", err)
|
||||
}
|
||||
defer keyF.Close()
|
||||
|
||||
certPEM, err = io.ReadAll(certF)
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("read cert file error: %w", err)
|
||||
}
|
||||
|
||||
keyPEM, err = io.ReadAll(keyF)
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("read key file error: %w", err)
|
||||
}
|
||||
|
||||
return certPEM, keyPEM, nil
|
||||
}
|
||||
Reference in New Issue
Block a user