openwisp / openwisp/openwisp-controller

[bug] ZeroTier VPN backend couples human-facing Vpn.name with machine configuration

Open
#1,426 3 comments 0 reactions 1 assignee View on GitHub

@Jaydeng75 is already working on this.

Since Jul 8, 2026.

bug
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.