⚠️ Not suitable for beginners
Describe the bug
The ZeroTier VPN backend injects Vpn.name (a human-facing VPN identifier) as the ZeroTier network name into configuration context variables in two places. This creates a coupling between human administration labels and machine-consumable configuration values, causing cache invalidation issues whenever the VPN name changes.
Expected behavior
Renaming a VPN for administrative clarity should NOT require invalidating all client configurations. The human-facing label (Vpn.name) should be separate from machine configuration values.
Current problematic code locations
In get_vpn_server_context() (line 596-599):
if self._is_backend_type("zerotier") and self.network_id:
context[context_keys["network_name"]] = self.name # Vpn.name exposed as context variable
The architectural concern
This design conflates two separate concerns:
- Human administration - organizing and identifying VPNs (Vpn.name)
- Machine configuration - values needed for client configuration (network name)
Consequences of this coupling:
- Renaming a VPN for administrative clarity requires invalidating all client configurations
- The semantic intent is unclear in the codebase
Describe the bug
The ZeroTier VPN backend injects
Vpn.name(a human-facing VPN identifier) as the ZeroTier network name into configuration context variables in two places. This creates a coupling between human administration labels and machine-consumable configuration values, causing cache invalidation issues whenever the VPN name changes.Expected behavior
Renaming a VPN for administrative clarity should NOT require invalidating all client configurations. The human-facing label (
Vpn.name) should be separate from machine configuration values.Current problematic code locations
In
get_vpn_server_context()(line 596-599):The architectural concern
This design conflates two separate concerns:
Consequences of this coupling: