diff --git a/README.md b/README.md index 4a17c8e..32ede24 100644 --- a/README.md +++ b/README.md @@ -255,6 +255,6 @@ Self-hosted DynDNS, self hosted DDNS, Dynamic DNS server, FRITZ!Box DynDNS, FRIT ## Security -The repository intentionally contains only placeholders in `.env.example` and documentation. Do not commit a real `.env`, DNS token, TSIG secret, admin password, database, magic management link, domain claim URL, or router-generated update URL. +The repository intentionally contains only placeholders in `.env.example` and documentation. Do not commit a real `.env`, DNS token, TSIG secret, admin password, database, private status page URL, domain claim URL, or router-generated update URL. If you find a vulnerability, open a private advisory or contact the repository owner before publishing details. diff --git a/router_dyndns/ddns.py b/router_dyndns/ddns.py index 20d9c92..ad12a23 100644 --- a/router_dyndns/ddns.py +++ b/router_dyndns/ddns.py @@ -392,7 +392,7 @@ def make_app(settings: DdnsSettings | None = None) -> FastAPI: notice = _admin_secret_panel("Update URL rotated", [_copy_row("Update-URL:", service.fritz_update_url(rotated))]) if rotated else None elif action == "management": rotated = store.rotate_management_slug(hostname) - notice = _admin_secret_panel("Management link rotated", [_copy_row("Magic management link:", service.magic_management_url(rotated))]) if rotated else None + notice = _admin_secret_panel("Private status page rotated", [_copy_row("Private status page:", service.magic_management_url(rotated))]) if rotated else None elif action == "password": rotated = store.rotate_password(hostname) if rotated: @@ -752,7 +752,7 @@ def _credentials_panel(service: DdnsService, created_account: dict[str, str] | N {_copy_row("Domainnamen:", hostname)} {_copy_row("Benutzername:", username)} {_copy_row("Kennwort:", password)} - {_copy_row("Magic management link:", management_url)} + {_copy_row("Private status page:", management_url)} @@ -814,6 +814,9 @@ def _render_management_page(service: DdnsService, settings: DdnsSettings, manage ipv4 = html.escape(str(account.get("ipv4") or "-")) ipv6 = html.escape(str(account.get("ipv6") or "-")) updated = html.escape(str(account.get("updated_at") or "Never")) + history_rows = "\n".join(_user_event_row(event) for event in service.store.list_update_events_for_hostname(str(account["hostname"]), 20)) or """ +
History
+Recent IP changes and failed DNS publishes for this hostname.
+| Time | Status | IPv4 | IPv6 | Detail |
|---|