INNER CODE UNIT · Python

lan_access_gate

slive777/OpenAver · web/app.py:487

async def lan_access_gate(request: Request, call_next):
    """
    非 loopback 流量依 general.server_mode 決定放行或 403。
    Loopback 短路:不讀 config,零成本(與 _lan_access_allowed 共用 _LOOPBACK_HOSTS)。
    不信任 X-Forwarded-For(無反向 proxy;只用 TCP 對端 request.client.host)。
    """
    client = request.client
    client_host = client.host if client else None
    # loopback 短路:桌面 App 自連,零 config I/O
    if client_host in _LOOPBACK_HOSTS:
        return await call_next(request)
    # 非 loopback:讀 config 後委派決策核心(測得即所跑)
    server_mode = load_config().get("general", {}).get("server_mode", False)
    if _lan_access_allowed(client_host, server_mode):
        return await call_next(request)
    return PlainTextResponse("Forbidden", status_code=403)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…