feat: 连接列表显示客户端真实 IP,支持反代和 CDN 场景

新增可配置的 real_ip_headers(默认 CF-Connecting-IP > X-Real-IP >
X-Forwarded-For 降级取值),trusted_proxies 用于 gin 代理信任链。
WebSocket 连接建立时捕获真实 IP 并在 /profile 和 /admin 连接列表展示,
登录会话 IP 同步改用真实 IP。
This commit is contained in:
2026-07-10 16:58:14 +08:00
parent a98cdb0cac
commit 8398067acb
13 changed files with 67 additions and 13 deletions
+4 -3
View File
@@ -31,6 +31,7 @@ var upgrader = websocket.Upgrader{
func HandleWS(c *gin.Context) {
tokenStr := c.Query("token")
realIP := middleware.GetRealIP(c)
conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
@@ -51,11 +52,11 @@ func HandleWS(c *gin.Context) {
conn.Close()
return
}
runTunnel(conn, &u)
runTunnel(conn, &u, realIP)
return
}
user, err := authenticate(conn, db.DB, c.ClientIP())
user, err := authenticate(conn, db.DB, realIP)
if err != nil {
log.Printf("认证读取失败: %v", err)
conn.Close()
@@ -65,5 +66,5 @@ func HandleWS(c *gin.Context) {
return
}
runTunnel(conn, user)
runTunnel(conn, user, realIP)
}