Dark Site Mode: every internet-dependent feature, individually switchable
The single Maps & Geocoding switch (#106) becomes a Dark Site Mode section
listing every feature that makes a request to the internet on its own, each
with where it goes and what stops working without it. All on by default, so
a new install behaves as before.
These were being found one at a time by a user on an isolated network:
maps first, then the dashboard map that ignored the maps switch (#159), then
the update check calling GitHub. Auditing for every request the platform
starts by itself turned up two he had not reported:
Maps and address lookup *.tile.openstreetmap.org, nominatim
Platform update check raw.githubusercontent.com
Daily RouterOS update check MikroTik's servers, from each device
RouterOS changelogs download.mikrotik.com
MAC vendor database standards-oui.ieee.org
Documentation link 2gt-media-group-llc.github.io
The daily RouterOS check is the easy one to miss in a firewall audit: the
request comes from every MikroTik, not from the manager's host. I did not
name a hostname for it because I have not confirmed which one RouterOS
resolves, and an operator whitelisting the wrong name would be worse off
than one told who owns the servers.
Alert channels are left out on purpose. They send only to destinations
someone configured, so not configuring one is already the off switch.
The list is served from the backend (GET /system/dark-site) and the same
module backs the gates, so the settings screen cannot describe a different
set from the one that is enforced.
Two OUI bugs fixed along the way
A failed vendor-database download discarded the cached copy, however recent,
and left every lookup empty. It now falls back to whatever is on disk.
And the cache lived in /tmp inside the container, so every upgrade -- which
recreates the container -- threw it away. For most installs that meant a
slow re-download. For a dark site with the download off it would have meant
vendor lookups going empty after every upgrade and never recovering, which
would have defeated the fallback. It now lives on the persistent app_data
volume, with /tmp as a fallback where that is not writable.
Verified on the running stack: each gate refuses with the feature off and
works with it on; with the download off, a 40-day-old cache (past its 30-day
limit) loads 40,222 entries without a request, and still does after a
forced container recreate. Settings returned to all-on afterwards.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Container image: ghcr.io/2gt-media-group-llc/mikrotik-manager:0.24.24-beta
Documentation: https://2gt-media-group-llc.github.io/mikrotik-manager/