Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion openwisp_controller/config/api/zerotier_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ def _get_repsonse(self, repsonse):
"rulesSource",
"ssoEnabled",
"creationTime",
"name",
"nwid",
"objtype",
"revision",
Expand Down
6 changes: 4 additions & 2 deletions openwisp_controller/config/base/vpn.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,8 +261,8 @@ def save(self, *args, **kwargs):
self.ip = self._auto_create_ip()
if self._is_backend_type("zerotier"):
config = deepcopy(self.config["zerotier"][0])
config["name"] = self.name
if created:
config["name"] = self.name
self._create_zt_server(config)
try:
super().save(*args, **kwargs)
Expand Down Expand Up @@ -500,7 +500,9 @@ def get_vpn_server_context(self):
)
context[context_keys["vpn_subnet"]] = str(self.subnet.subnet)
if self._is_backend_type("zerotier") and self.network_id:
context[context_keys["network_name"]] = self.name
context[context_keys["network_name"]] = (
self.config.get("zerotier", [{}])[0].get("name") or self.name
)
context[context_keys["node_id"]] = self.node_id
context[context_keys["network_id"]] = self.network_id
return context
Expand Down
33 changes: 33 additions & 0 deletions openwisp_controller/config/tests/test_vpn.py
Original file line number Diff line number Diff line change
Expand Up @@ -1440,6 +1440,39 @@ def test_zerotier_vpn_host_validation(self, mock_requests):
expected_error_dict, context_manager.exception.message_dict
)

@mock.patch(_ZT_SERVICE_REQUESTS)
def test_zerotier_network_name_independent_of_vpn_name(self, mock_requests):
mock_requests.get.side_effect = [
self._get_mock_response(200, response=self._TEST_ZT_NODE_CONFIG)
]
mock_requests.post.side_effect = [self._get_mock_response(200)]
template = self._create_template(
name="test-zerotier-template",
type="vpn",
vpn=self._create_zerotier_vpn(name="original-name"),
organization=self._get_org(),
)
pk = template.vpn.pk.hex
network_name_key = f"network_name_{pk}"
original_context = template.get_context()
original_network_name = original_context[network_name_key]
self.assertEqual(
original_network_name,
template.vpn.config.get("zerotier", [{}])[0].get("name"),
)
vpn = template.vpn
vpn.name = "renamed-vpn"
mock_requests.reset_mock()
mock_requests.get.side_effect = [
self._get_mock_response(200, response=self._TEST_ZT_NODE_CONFIG)
]
vpn.full_clean()
vpn.save()
template.vpn.refresh_from_db()
updated_context = template.get_context()
self.assertEqual(updated_context[network_name_key], original_network_name)
self.assertNotEqual(updated_context[network_name_key], template.vpn.name)

def test_zerotier_change_vpn_backend_with_vpnclient(self):
vpn = self._create_vpn(name="new", backend=self._BACKENDS["openvpn"])
subnet = self._create_subnet(
Expand Down
Loading