From af80514ad843bc2ed2aa102f3766f95cadf625ec Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Tue, 31 Oct 2023 11:36:00 +0100 Subject: [PATCH] net/wireguard: use syncconf on newwanip event --- .../src/etc/inc/plugins.inc.d/wireguard.inc | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/net/wireguard/src/etc/inc/plugins.inc.d/wireguard.inc b/net/wireguard/src/etc/inc/plugins.inc.d/wireguard.inc index ed933a375..08f344cd8 100644 --- a/net/wireguard/src/etc/inc/plugins.inc.d/wireguard.inc +++ b/net/wireguard/src/etc/inc/plugins.inc.d/wireguard.inc @@ -144,7 +144,7 @@ function wireguard_prepare($device) function wireguard_configure() { return [ - 'newwanip' => ['wireguard_renew:2'], + 'newwanip' => ['wireguard_sync:2'], 'vpn' => ['wireguard_configure_do:2'], ]; } @@ -162,15 +162,33 @@ function wireguard_configure_do($verbose = false, $unused = '') service_log("done.\n", $verbose); } -function wireguard_renew($verbose = false, $unused = '') +function wireguard_sync($verbose = false, $unused = '') { if (!wireguard_enabled()) { return; } - service_log('Renewing WireGuard VPN...', $verbose); + $instances = []; + foreach ((new OPNsense\Wireguard\Server())->servers->server->iterateItems() as $node) { + if (!empty((string)$node->enabled)) { + $instances[(string)$node->interface] = (string)$node->cnfFilename; + } + } - configd_run('wireguard renew'); + if (!count($instances)) { + return; + } + + service_log('Synchronizing WireGuard VPN...', $verbose); + + openlog('wireguard', LOG_ODELAY, LOG_AUTH); + + foreach ($instances as $device => $config) { + mwexecf('/usr/bin/wg syncconf %s %s', [$device, $config]); + } + + closelog(); + reopenlog(); service_log("done.\n", $verbose); }