diff --git a/home-apps/demo-service/_loaders.py b/home-apps/demo-service/_loaders.py index 541e715..3dcc059 100644 --- a/home-apps/demo-service/_loaders.py +++ b/home-apps/demo-service/_loaders.py @@ -4,7 +4,7 @@ _ep = _here / "error-page.html" if _ep.exists(): AUTH_REQUIRED_HTML = _ep.read_text() else: - AUTH_REQUIRED_HTML = """

Page not available

Try again later.

""" + AUTH_REQUIRED_HTML = """Unavailable

This page isn't available right now

Try again later.

Log in
""" # Admin UI _ui = _here / "admin-ui.html" diff --git a/home-apps/demo-service/service.py b/home-apps/demo-service/service.py index d065c06..81d5e8e 100644 --- a/home-apps/demo-service/service.py +++ b/home-apps/demo-service/service.py @@ -27,7 +27,11 @@ import _db app = FastAPI(title="Demo Manager", version="2.0.0") # ─── Internal network detection ─────────── -INTERNAL_NETS = [ipaddress.ip_network("192.168.1.0/24")] +INTERNAL_NETS = [ + ipaddress.ip_network("192.168.1.0/24"), + # Router's WAN IP — internal traffic via NAT appears from this IP + ipaddress.ip_network("14.137.198.99/32"), +] def is_internal_ip(request: Request) -> bool: @@ -38,10 +42,11 @@ def is_internal_ip(request: Request) -> bool: else: # Fallback: X-Real-IP (set by nginx ingress) or direct connection client_ip = request.headers.get("X-Real-IP", "") - if not client_ip and request.client: - client_ip = request.client.host - else: - return False + if not client_ip: + if request.client: + client_ip = request.client.host + else: + return False try: ip = ipaddress.ip_address(client_ip) return any(ip in net for net in INTERNAL_NETS)