openwisp / openwisp/openwisp-controller
[bug] ZeroTier VPN backend couples human-facing Vpn.name with machine configuration
@Jaydeng75 is already working on this.
Since Jul 8, 2026.
- Dominant language
- Python
- Stars
- 773
- Forks
- 315
- Avg merge
- 2d 16h
- Merged PRs (30d)
- 14
Description
⚠️ 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
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.