diff --git a/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml b/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml index e2e14c102..4cdef72dc 100644 --- a/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml +++ b/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml @@ -30,6 +30,12 @@ checkbox Offer to be an exit node for outbound internet traffic from the Tailscale network. + + settings.useExitNode + + dropdown + Route traffic to the specified exit node. Note that this only affects traffic routed into your Tailscale interface, which you will have to configure separately using firewall rules and hybrid outbound NAT rules. + settings.acceptSubnetRoutes diff --git a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/FieldTypes/ExitNodeField.php b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/FieldTypes/ExitNodeField.php new file mode 100644 index 000000000..f886f6069 --- /dev/null +++ b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/FieldTypes/ExitNodeField.php @@ -0,0 +1,31 @@ +configdRun('tailscale tailscale-status')), true); + $exitNodes = ['' => gettext('None')]; + + if (is_array($response) && array_key_exists('Peer', $response) && is_array($response['Peer'])) { + foreach ($response['Peer'] as $peer) { + if ($peer['ExitNodeOption']) { + $exitNodes[$peer['TailscaleIPs'][0]] = $peer['HostName']; + } + } + } + + self::$internalCacheOptionList = $exitNodes; + } + $this->internalOptionList = self::$internalCacheOptionList; + } +} diff --git a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml index 2ca43451b..e6d8f962e 100644 --- a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml +++ b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml @@ -23,6 +23,7 @@ 0 Y + 0 Y diff --git a/security/tailscale/src/opnsense/mvc/app/views/OPNsense/Tailscale/settings.volt b/security/tailscale/src/opnsense/mvc/app/views/OPNsense/Tailscale/settings.volt index aee1bd69f..e5141b0fc 100644 --- a/security/tailscale/src/opnsense/mvc/app/views/OPNsense/Tailscale/settings.volt +++ b/security/tailscale/src/opnsense/mvc/app/views/OPNsense/Tailscale/settings.volt @@ -1,6 +1,7 @@