diff --git a/net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/Api/NetworkController.php b/net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/Api/NetworkController.php
index 72c0550496..c36ca6d90a 100644
--- a/net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/Api/NetworkController.php
+++ b/net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/Api/NetworkController.php
@@ -105,6 +105,10 @@ public function setAction($uuid = null)
$mdlZerotier->serializeToConfig();
Config::getInstance()->save();
$result["result"] = "saved";
+ $this->setZerotierNetwork($network->networkId, 'allowManaged', $network->allowManaged);
+ $this->setZerotierNetwork($network->networkId, 'allowGlobal', $network->allowGlobal);
+ $this->setZerotierNetwork($network->networkId, 'allowDefault', $network->allowDefault);
+ $this->setZerotierNetwork($network->networkId, 'allowDNS', $network->allowDNS);
}
}
}
@@ -192,8 +196,10 @@ public function toggleAction($uuid = null)
private function toggleZerotierNetwork($networkId, $enabled)
{
+ $backend = new Backend();
+ $backend->configdRun("template reload OPNsense/zerotier");
$action = $enabled ? 'join' : 'leave';
- return trim((new Backend())->configdRun("zerotier $action $networkId"));
+ return trim($backend->configdRun("zerotier $action $networkId"));
}
private function listZerotierNetwork($networkId)
@@ -207,4 +213,9 @@ private function listZerotierNetwork($networkId)
}
return gettext("Unable to obtain Zerotier information for network") . " " . $networkId . "! " . gettext("Is the network enabled?");
}
+
+ private function setZerotierNetwork($networkId, $setting, $value)
+ {
+ return trim((new Backend())->configdRun("zerotier set $networkId $setting $value"));
+ }
}
diff --git a/net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/forms/dialogNetwork.xml b/net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/forms/dialogNetwork.xml
index c8789ac0d7..5ea9c87813 100644
--- a/net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/forms/dialogNetwork.xml
+++ b/net/zerotier/src/opnsense/mvc/app/controllers/OPNsense/Zerotier/forms/dialogNetwork.xml
@@ -11,4 +11,48 @@
text
Local Description to help identify this network
+
+ network.allowManaged
+
+ checkbox
+ Allow ZeroTier to set IP Addresses and Routes (local/private ranges only)
+
+ false
+ boolean
+ boolean
+
+
+
+ network.allowGlobal
+
+ checkbox
+ Allow ZeroTier to set Global/Public/Not-Private range IPs and Routes
+
+ false
+ boolean
+ boolean
+
+
+
+ network.allowDefault
+
+ checkbox
+ Allow ZeroTier to set the Default Route on the system
+
+ false
+ boolean
+ boolean
+
+
+
+ network.allowDNS
+
+ checkbox
+ Allow ZeroTier to set DNS servers
+
+ false
+ boolean
+ boolean
+
+
diff --git a/net/zerotier/src/opnsense/mvc/app/models/OPNsense/Zerotier/Zerotier.xml b/net/zerotier/src/opnsense/mvc/app/models/OPNsense/Zerotier/Zerotier.xml
index d081852fbb..2313b42680 100644
--- a/net/zerotier/src/opnsense/mvc/app/models/OPNsense/Zerotier/Zerotier.xml
+++ b/net/zerotier/src/opnsense/mvc/app/models/OPNsense/Zerotier/Zerotier.xml
@@ -30,6 +30,22 @@
N
+
+ 1
+ Y
+
+
+ 0
+ Y
+
+
+ 0
+ Y
+
+
+ 0
+ Y
+
diff --git a/net/zerotier/src/opnsense/service/conf/actions.d/actions_zerotier.conf b/net/zerotier/src/opnsense/service/conf/actions.d/actions_zerotier.conf
index 5df6767c1a..1fb93b8cec 100644
--- a/net/zerotier/src/opnsense/service/conf/actions.d/actions_zerotier.conf
+++ b/net/zerotier/src/opnsense/service/conf/actions.d/actions_zerotier.conf
@@ -34,6 +34,12 @@ parameters: leave %s
type:script_output
message:Leaving Zerotier Network
+[set]
+command:/usr/local/bin/zerotier-cli
+parameters: set %s %s=%s
+type:script_output
+message:Setting Zerotier Network
+
[info]
command:/usr/local/bin/zerotier-cli info
parameters:
diff --git a/net/zerotier/src/opnsense/service/templates/OPNsense/zerotier/+TARGETS b/net/zerotier/src/opnsense/service/templates/OPNsense/zerotier/+TARGETS
index 2e49b12516..4a87c683fc 100644
--- a/net/zerotier/src/opnsense/service/templates/OPNsense/zerotier/+TARGETS
+++ b/net/zerotier/src/opnsense/service/templates/OPNsense/zerotier/+TARGETS
@@ -1,2 +1,3 @@
zerotier:/etc/rc.conf.d/zerotier
local.conf:/var/db/zerotier-one/local.conf
+networks-local.conf:/var/db/zerotier-one/networks.d/[OPNsense.zerotier.networks.network.%.networkId].local.conf
diff --git a/net/zerotier/src/opnsense/service/templates/OPNsense/zerotier/networks-local.conf b/net/zerotier/src/opnsense/service/templates/OPNsense/zerotier/networks-local.conf
new file mode 100644
index 0000000000..a754e54cfe
--- /dev/null
+++ b/net/zerotier/src/opnsense/service/templates/OPNsense/zerotier/networks-local.conf
@@ -0,0 +1,10 @@
+{% if helpers.exists('OPNsense.zerotier.networks') %}
+{% for network in helpers.toList('OPNsense.zerotier.networks.network') %}
+{% if TARGET_FILTERS['OPNsense.zerotier.networks.network.' ~ loop.index0] or TARGET_FILTERS['OPNsense.zerotier.networks.network'] %}
+allowManaged={{ network.allowManaged }}
+allowGlobal={{ network.allowGlobal }}
+allowDefault={{ network.allowDefault }}
+allowDNS={{ network.allowDNS }}
+{% endif %}
+{% endfor %}
+{% endif %}