From 0fdb7557547e2bc7be5512c9111a4e0508c6b17b Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Thu, 7 Mar 2024 11:15:48 +0100 Subject: [PATCH] wireguard: migrate non-netmask allowed ip entries and enforce validation #7304 --- plist | 1 + .../app/models/OPNsense/Wireguard/Client.xml | 3 +- .../OPNsense/Wireguard/Migrations/M1_0_0.php | 58 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/opnsense/mvc/app/models/OPNsense/Wireguard/Migrations/M1_0_0.php diff --git a/plist b/plist index f9a9472f0..337fd2dca 100644 --- a/plist +++ b/plist @@ -742,6 +742,7 @@ /usr/local/opnsense/mvc/app/models/OPNsense/Wireguard/General.php /usr/local/opnsense/mvc/app/models/OPNsense/Wireguard/General.xml /usr/local/opnsense/mvc/app/models/OPNsense/Wireguard/Menu/Menu.xml +/usr/local/opnsense/mvc/app/models/OPNsense/Wireguard/Migrations/M1_0_0.php /usr/local/opnsense/mvc/app/models/OPNsense/Wireguard/Server.php /usr/local/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml /usr/local/opnsense/mvc/app/views/OPNsense/CaptivePortal/clients.volt diff --git a/src/opnsense/mvc/app/models/OPNsense/Wireguard/Client.xml b/src/opnsense/mvc/app/models/OPNsense/Wireguard/Client.xml index 1e4491b1c..cb498d808 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Wireguard/Client.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Wireguard/Client.xml @@ -1,7 +1,7 @@ //OPNsense/wireguard/client WireGuard peer configuration - 0.0.7 + 1.0.0 @@ -29,6 +29,7 @@ + Y , Y Y diff --git a/src/opnsense/mvc/app/models/OPNsense/Wireguard/Migrations/M1_0_0.php b/src/opnsense/mvc/app/models/OPNsense/Wireguard/Migrations/M1_0_0.php new file mode 100644 index 000000000..333913c93 --- /dev/null +++ b/src/opnsense/mvc/app/models/OPNsense/Wireguard/Migrations/M1_0_0.php @@ -0,0 +1,58 @@ +clients->client->iterateItems() as $client) { + $allowed_ips = array_filter(explode(',', (string)$client->tunneladdress)); + foreach ($allowed_ips as &$allowed_ip) { + if (strpos($allowed_ip, '/') !== false) { + continue; + } elseif (strpos($allowed_ip, ':') === false) { + $allowed_ip .= '/32'; + } else { + $allowed_ip .= '/128'; + } + } + $client->tunneladdress = join(',', $allowed_ips); + } + } + } +}