Henrik Højmark 3ad68b45f7 Fix viewer share links to use LAN IP; bind Flask to 0.0.0.0
Share links copied from the Share modal were built with
window.location.origin, producing 127.0.0.1 URLs that remote
viewers could never reach.

- Bind Flask to 0.0.0.0 in gdpr_scanner.py (--host default),
  m365_launcher.py, and build_gdpr.py so the server is reachable
  on the local network. Internal loopback URLs (urllib exports,
  webview window, port probe) intentionally keep 127.0.0.1.
- Add /api/local_ip endpoint: UDP probe to 8.8.8.8 discovers the
  active LAN IP without sending real traffic.
- Add _getShareBaseUrl() in viewer.js: fetches /api/local_ip and
  substitutes the LAN IP; falls back to window.location.origin.
- createShareLink and copyTokenLink are now async and await
  _getShareBaseUrl() before building the viewer URL.
- Update CLAUDE.md and static/js/CLAUDE.md with the new invariants.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 06:14:17 +02:00
..
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00
2026-04-11 04:38:11 +02:00