feat: peer access config, DNS fix, real routing table, reinstall notifications
Peer creation/edit form now configures: - Tunnel mode: full (0.0.0.0/0) or split (PIC only) - Per-service access toggles (calendar, files, mail, webdav) - Peer-to-peer communication toggle - Optional calendar account creation - Access capability badges in peer list Bug fixes: - DNS in client configs was 8.8.8.8 / 172.20.0.2 — now 172.20.0.3 (CoreDNS) This was why .cell domains didn't resolve on connected VPN peers - get_peer_config API uses stored internet_access to set AllowedIPs - New PUT /api/peers/<name> endpoint with config_changed detection - POST /api/peers/<name>/clear-reinstall clears reinstall flag after download - Routing page reads real host routes via /proc/1/net/route (pid: host) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -266,6 +266,27 @@ class PeerRegistry(BaseServiceManager):
|
||||
self.logger.error(f"Error removing peer {name}: {e}")
|
||||
return False
|
||||
|
||||
def update_peer(self, name: str, fields: Dict[str, Any]) -> bool:
|
||||
"""Update arbitrary fields on a peer."""
|
||||
try:
|
||||
with self.lock:
|
||||
for peer in self.peers:
|
||||
if peer.get('peer') == name:
|
||||
peer.update(fields)
|
||||
peer['updated_at'] = datetime.utcnow().isoformat()
|
||||
self._save_peers()
|
||||
self.logger.info(f"Updated peer {name}: {list(fields.keys())}")
|
||||
return True
|
||||
self.logger.warning(f"Peer {name} not found for update")
|
||||
return False
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error updating peer {name}: {e}")
|
||||
return False
|
||||
|
||||
def clear_reinstall_flag(self, name: str) -> bool:
|
||||
"""Clear the config_needs_reinstall flag after user downloads new config."""
|
||||
return self.update_peer(name, {'config_needs_reinstall': False})
|
||||
|
||||
def update_peer_ip(self, name: str, new_ip: str) -> bool:
|
||||
"""Update peer IP address"""
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user