fix: correct DNS records, peer dashboard field names, and services API response
- network_manager: api/webui DNS records now point to Caddy (172.20.0.2) instead of their container IPs so Caddy can reverse-proxy correctly - ip_utils: add webui.dev block to generated Caddyfile - config/caddy/Caddyfile: regenerated with webui.dev block - config/dns/Corefile: simplify to single forward zone (remove duplicate) - app.py peer_dashboard: rename peer_name→name, rx_bytes→transfer_rx, tx_bytes→transfer_tx to match PeerDashboard.jsx; add service_urls dict - app.py peer_services: fix DNS (10.0.0.1→real CoreDNS IP), CalDAV URL (radicale.dev:5232→calendar.dev), email structure (flat→nested smtp/imap objects), rename webdav→files, add WireGuard config text, add username field - PeerDashboard.jsx: render service icon links from service_urls Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+11
-3
@@ -150,13 +150,21 @@ class NetworkManager(BaseServiceManager):
|
||||
return {'restarted': restarted, 'warnings': warnings}
|
||||
|
||||
def _build_dns_records(self, cell_name: str, ip_range: str) -> List[Dict]:
|
||||
"""Build the standard set of DNS A records for the given subnet."""
|
||||
"""Build the standard set of DNS A records for the given subnet.
|
||||
|
||||
All user-facing names resolve to the Caddy reverse proxy (caddy IP) so
|
||||
the Host header is passed through and Caddy routes based on it.
|
||||
Exception: calendar/files/mail/webdav use dedicated virtual IPs so that
|
||||
iptables per-service firewall rules can target them by destination IP.
|
||||
api and webui also go through Caddy — they don't have their own VIPs and
|
||||
their containers don't serve HTTP on port 80.
|
||||
"""
|
||||
import ip_utils
|
||||
ips = ip_utils.get_service_ips(ip_range)
|
||||
return [
|
||||
{'name': cell_name, 'type': 'A', 'value': ips['caddy']},
|
||||
{'name': 'api', 'type': 'A', 'value': ips['api']},
|
||||
{'name': 'webui', 'type': 'A', 'value': ips['webui']},
|
||||
{'name': 'api', 'type': 'A', 'value': ips['caddy']},
|
||||
{'name': 'webui', 'type': 'A', 'value': ips['caddy']},
|
||||
{'name': 'calendar', 'type': 'A', 'value': ips['vip_calendar']},
|
||||
{'name': 'files', 'type': 'A', 'value': ips['vip_files']},
|
||||
{'name': 'mail', 'type': 'A', 'value': ips['vip_mail']},
|
||||
|
||||
Reference in New Issue
Block a user