debug: 临时加 stderr log 看 IP 提取 + touch_ip 调用
This commit is contained in:
@@ -43,18 +43,23 @@ def get_client_ip(request: Request) -> str:
|
||||
|
||||
仅在配置 trust_x_forwarded_for=True 时信任 1+2,否则只用 3。
|
||||
"""
|
||||
import sys
|
||||
xff_raw = request.headers.get("x-forwarded-for")
|
||||
xri_raw = request.headers.get("x-real-ip")
|
||||
client_host = request.client.host if request.client else None
|
||||
print(f"[GET_CLIENT_IP] xff={xff_raw!r} xri={xri_raw!r} client_host={client_host!r} trust={settings.trust_x_forwarded_for}", file=sys.stderr, flush=True)
|
||||
if settings.trust_x_forwarded_for:
|
||||
xff = request.headers.get("x-forwarded-for")
|
||||
xff = xff_raw
|
||||
if xff:
|
||||
# 取第一个(原始客户端),可能形如 "1.2.3.4, 10.0.0.1"
|
||||
ip = xff.split(",")[0].strip()
|
||||
if ip:
|
||||
print(f"[GET_CLIENT_IP] -> use xff split[0] = {ip!r}", file=sys.stderr, flush=True)
|
||||
return ip
|
||||
xri = request.headers.get("x-real-ip")
|
||||
xri = xri_raw
|
||||
if xri:
|
||||
return xri.strip()
|
||||
if request.client and request.client.host:
|
||||
return request.client.host
|
||||
if client_host:
|
||||
return client_host
|
||||
return "unknown"
|
||||
|
||||
|
||||
@@ -76,6 +81,8 @@ async def check_or_register_login_ip(ip: str) -> None:
|
||||
|
||||
注意:不限制 owner/非 owner(整个站点一个池,所有用户共享)
|
||||
"""
|
||||
import sys
|
||||
print(f"[CHECK] ip={ip!r} limit={limit}", file=sys.stderr, flush=True)
|
||||
r = get_redis()
|
||||
now = int(time.time())
|
||||
limit = settings.site_max_active_ips
|
||||
@@ -159,7 +166,13 @@ async def touch_ip_dependency(request: Request) -> None:
|
||||
不会失败(吞掉异常),避免 Redis 抖动影响正常请求。
|
||||
"""
|
||||
try:
|
||||
import sys
|
||||
ip = get_client_ip(request)
|
||||
# 临时诊断:看实际 IP 提取
|
||||
xff = request.headers.get("x-forwarded-for")
|
||||
xri = request.headers.get("x-real-ip")
|
||||
client_host = request.client.host if request.client else None
|
||||
print(f"[TOUCH_DEP] ip={ip!r} xff={xff!r} xri={xri!r} client_host={client_host!r}", file=sys.stderr, flush=True)
|
||||
await touch_active_ip(ip)
|
||||
except Exception as e: # noqa: BLE001
|
||||
logger.debug("touch_active_ip failed (ignored): %s", e)
|
||||
|
||||
Reference in New Issue
Block a user