Skip to content

Commit de9a56c

Browse files
committed
Configure ZeroTier network options
1 parent 2da22da commit de9a56c

File tree

6 files changed

+89
-1
lines changed

6 files changed

+89
-1
lines changed

net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/Api/NetworkController.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ public function setAction($uuid = null)
105105
$mdlZerotier->serializeToConfig();
106106
Config::getInstance()->save();
107107
$result["result"] = "saved";
108+
$this->setZerotierNetwork($network->networkId, 'allowManaged', $network->allowManaged);
109+
$this->setZerotierNetwork($network->networkId, 'allowGlobal', $network->allowGlobal);
110+
$this->setZerotierNetwork($network->networkId, 'allowDefault', $network->allowDefault);
111+
$this->setZerotierNetwork($network->networkId, 'allowDNS', $network->allowDNS);
108112
}
109113
}
110114
}
@@ -192,8 +196,10 @@ public function toggleAction($uuid = null)
192196

193197
private function toggleZerotierNetwork($networkId, $enabled)
194198
{
199+
$backend = new Backend();
200+
$backend->configdRun("template reload OPNsense/zerotier");
195201
$action = $enabled ? 'join' : 'leave';
196-
return trim((new Backend())->configdRun("zerotier $action $networkId"));
202+
return trim($backend->configdRun("zerotier $action $networkId"));
197203
}
198204

199205
private function listZerotierNetwork($networkId)
@@ -207,4 +213,9 @@ private function listZerotierNetwork($networkId)
207213
}
208214
return gettext("Unable to obtain Zerotier information for network") . " " . $networkId . "! " . gettext("Is the network enabled?");
209215
}
216+
217+
private function setZerotierNetwork($networkId, $setting, $value)
218+
{
219+
return trim((new Backend())->configdRun("zerotier set $networkId $setting $value"));
220+
}
210221
}

net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/forms/dialogNetwork.xml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,48 @@
1111
<type>text</type>
1212
<help>Local Description to help identify this network</help>
1313
</field>
14+
<field>
15+
<id>network.allowManaged</id>
16+
<label>Allow Managed</label>
17+
<type>checkbox</type>
18+
<help>Allow ZeroTier to set IP Addresses and Routes (local/private ranges only)</help>
19+
<grid_view>
20+
<visible>false</visible>
21+
<type>boolean</type>
22+
<formatter>boolean</formatter>
23+
</grid_view>
24+
</field>
25+
<field>
26+
<id>network.allowGlobal</id>
27+
<label>Allow Global</label>
28+
<type>checkbox</type>
29+
<help>Allow ZeroTier to set Global/Public/Not-Private range IPs and Routes</help>
30+
<grid_view>
31+
<visible>false</visible>
32+
<type>boolean</type>
33+
<formatter>boolean</formatter>
34+
</grid_view>
35+
</field>
36+
<field>
37+
<id>network.allowDefault</id>
38+
<label>Allow Default</label>
39+
<type>checkbox</type>
40+
<help>Allow ZeroTier to set the Default Route on the system</help>
41+
<grid_view>
42+
<visible>false</visible>
43+
<type>boolean</type>
44+
<formatter>boolean</formatter>
45+
</grid_view>
46+
</field>
47+
<field>
48+
<id>network.allowDNS</id>
49+
<label>Allow DNS</label>
50+
<type>checkbox</type>
51+
<help>Allow ZeroTier to set DNS servers</help>
52+
<grid_view>
53+
<visible>false</visible>
54+
<type>boolean</type>
55+
<formatter>boolean</formatter>
56+
</grid_view>
57+
</field>
1458
</form>

net/zerotier/src/opnsense/mvc/app/models/OPNsense/Zerotier/Zerotier.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,22 @@
3030
<default></default>
3131
<Required>N</Required>
3232
</description>
33+
<allowManaged type="BooleanField">
34+
<default>1</default>
35+
<Required>Y</Required>
36+
</allowManaged>
37+
<allowGlobal type="BooleanField">
38+
<default>0</default>
39+
<Required>Y</Required>
40+
</allowGlobal>
41+
<allowDefault type="BooleanField">
42+
<default>0</default>
43+
<Required>Y</Required>
44+
</allowDefault>
45+
<allowDNS type="BooleanField">
46+
<default>0</default>
47+
<Required>Y</Required>
48+
</allowDNS>
3349
</network>
3450
</networks>
3551
</items>

net/zerotier/src/opnsense/service/conf/actions.d/actions_zerotier.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ parameters: leave %s
3434
type:script_output
3535
message:Leaving Zerotier Network
3636

37+
[set]
38+
command:/usr/local/bin/zerotier-cli
39+
parameters: set %s %s=%s
40+
type:script_output
41+
message:Setting Zerotier Network
42+
3743
[info]
3844
command:/usr/local/bin/zerotier-cli info
3945
parameters:
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
zerotier:/etc/rc.conf.d/zerotier
22
local.conf:/var/db/zerotier-one/local.conf
3+
networks-local.conf:/var/db/zerotier-one/networks.d/[OPNsense.zerotier.networks.%.networkId].local.conf
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{% if helpers.exists('OPNsense.zerotier.networks') %}
2+
{% for network in helpers.toList('OPNsense.zerotier.networks.network') %}
3+
{% if TARGET_FILTERS['OPNsense.zerotier.networks.network' ~ loop.index0] or TARGET_FILTERS['OPNsense.zerotier.networks.network'] %}
4+
allowManaged={{ network.allowManaged }}
5+
allowGlobal={{ network.allowGlobal }}
6+
allowDefault={{ network.allowDefault }}
7+
allowDNS={{ network.allowDNS }}
8+
{% endif %}
9+
{% endfor %}
10+
{% endif %}

0 commit comments

Comments
 (0)