优化数据连接处理逻辑,避免数据通道连接空等待问题;授权部分添加全局白名单支持;现在节点丢失连接后不会清空授权数据
This commit is contained in:
29
gateway/env/env.go
vendored
29
gateway/env/env.go
vendored
@@ -3,8 +3,10 @@ package env
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
@@ -20,6 +22,8 @@ var (
|
||||
AppDataTimeout = 10 // 等待数据通道连接的超时时间
|
||||
AppUserTimeout = 10 // 等待用户发送数据的超时时间(端口复用需要分析协议,如果用户长期不发送数据,将会阻塞分析协程)
|
||||
|
||||
AuthWhitelist []net.IP // 全局白名单,可以将白名单 IP 视为一个可信任代理
|
||||
|
||||
ClientId string
|
||||
ClientSecret string
|
||||
|
||||
@@ -99,6 +103,31 @@ func Init() {
|
||||
AppDataTimeout = appDataTimeout
|
||||
}
|
||||
|
||||
value = os.Getenv("APP_USER_TIMEOUT")
|
||||
if value != "" {
|
||||
appUserTimeout, err := strconv.Atoi(value)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("环境变量 APP_USER_TIMEOUT 格式错误: %v", err))
|
||||
}
|
||||
AppUserTimeout = appUserTimeout
|
||||
}
|
||||
|
||||
value = os.Getenv("AUTH_WHITELIST")
|
||||
if value != "" {
|
||||
ips := strings.Split(value, ",")
|
||||
for _, ip := range ips {
|
||||
ip = strings.TrimSpace(ip)
|
||||
if ip == "" {
|
||||
continue
|
||||
}
|
||||
parsedIP := net.ParseIP(ip)
|
||||
if parsedIP == nil {
|
||||
panic(fmt.Sprintf("环境变量 AUTH_WHITELIST 格式错误: %s", ip))
|
||||
}
|
||||
AuthWhitelist = append(AuthWhitelist, parsedIP)
|
||||
}
|
||||
}
|
||||
|
||||
value = os.Getenv("CLIENT_ID")
|
||||
if value != "" {
|
||||
ClientId = value
|
||||
|
||||
Reference in New Issue
Block a user