German NINA alerts endpoint (nina.api.proxy.bund.dev) is NXDOMAIN — warnung.bund.de/api31 is a drop-in replacement #137

Closed
opened 2026-10-05 01:25:29 +02:00 by adam · 1 comment
Owner

Summary

The German NINA alerts endpoint hardcoded in modules/globalalert.py no longer exists in DNS — every poll fails, and with enableDEalerts = true the bot logs a warning each cycle forever. The direct government host works and is a drop-in replacement.

Evidence

modules/globalalert.py:

url = ("https://nina.api.proxy.bund.dev/api31/dashboard/" + regionalKey + ".json")
  • nina.api.proxy.bund.dev is NXDOMAIN from public resolvers (Google DoH Status: 3; Cloudflare same). The bund.dev community proxy appears to have been discontinued.
  • The direct host serves the identical API and answers today:
$ curl -sI "https://warnung.bund.de/api31/dashboard/071380000000.json"
HTTP/2 200

On a live deployment that had enableDEalerts on, this produced 700+ Error getting NINA DE alerts: ... Failed to resolve 'nina.api.proxy.bund.dev' warnings before it was noticed — the poll never backs off and nothing surfaces to the operator.

Suggested fix

  1. Swap the base URL to https://warnung.bund.de/api31/ (drop-in, verified above).
  2. Consider: get_nina_alerts currently returns NO_ALERTS ("No alerts found.") on any exception — a user checking emergency alerts can't distinguish "all clear" from "endpoint dead/unreachable". Returning ERROR_FETCHING_DATA on the exception path would keep failure visible.

Context

Found during a reliability audit of the bot's data-source commands (fork: Nursedude/meshing-around). Happy to send a PR for either or both.

## Summary The German NINA alerts endpoint hardcoded in `modules/globalalert.py` no longer exists in DNS — every poll fails, and with `enableDEalerts = true` the bot logs a warning each cycle forever. The direct government host works and is a drop-in replacement. ## Evidence `modules/globalalert.py`: ```python url = ("https://nina.api.proxy.bund.dev/api31/dashboard/" + regionalKey + ".json") ``` - `nina.api.proxy.bund.dev` is **NXDOMAIN** from public resolvers (Google DoH `Status: 3`; Cloudflare same). The bund.dev community proxy appears to have been discontinued. - The direct host serves the identical API and answers today: ``` $ curl -sI "https://warnung.bund.de/api31/dashboard/071380000000.json" HTTP/2 200 ``` On a live deployment that had `enableDEalerts` on, this produced 700+ `Error getting NINA DE alerts: ... Failed to resolve 'nina.api.proxy.bund.dev'` warnings before it was noticed — the poll never backs off and nothing surfaces to the operator. ## Suggested fix 1. Swap the base URL to `https://warnung.bund.de/api31/` (drop-in, verified above). 2. Consider: `get_nina_alerts` currently returns `NO_ALERTS` ("No alerts found.") on any exception — a user checking emergency alerts can't distinguish "all clear" from "endpoint dead/unreachable". Returning `ERROR_FETCHING_DATA` on the exception path would keep failure visible. ## Context Found during a reliability audit of the bot's data-source commands (fork: Nursedude/meshing-around). Happy to send a PR for either or both. <!-- github-sync-id:4822337803 -->
adam closed this issue 2026-10-05 01:25:29 +02:00
Author
Owner

thanks dude

thanks dude <!-- github-comment-id:4898823126 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/meshing-around#137