diff --git a/net/wireguard/pkg-descr b/net/wireguard/pkg-descr index 8a590fa7e..77e00f49c 100644 --- a/net/wireguard/pkg-descr +++ b/net/wireguard/pkg-descr @@ -25,6 +25,8 @@ Changelog * Reimplement https://github.com/WireGuard/wireguard-tools/tree/master/contrib/reresolve-dns using Python in reresolve-dns.py * Enforce wireguard-tools rc script to be disabled when still installed, this should prevent bootup issues * Move 'interface' calculated field to model for easy reusability +* Move diagnostics to VPN: WireGuard: Diagnostics +* Change keypair generation to a separate API call and form button to ease copy/paste when adding new servers. * Change plugin maintainer 1.13 diff --git a/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/Api/ServiceController.php b/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/Api/ServiceController.php index f71b3d047..001c7890d 100644 --- a/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/Api/ServiceController.php +++ b/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/Api/ServiceController.php @@ -32,6 +32,8 @@ namespace OPNsense\Wireguard\Api; use OPNsense\Base\ApiMutableServiceControllerBase; use OPNsense\Core\Backend; use OPNsense\Wireguard\General; +use OPNsense\Wireguard\Client; +use OPNsense\Wireguard\Server; /** * Class ServiceController @@ -72,6 +74,7 @@ class ServiceController extends ApiMutableServiceControllerBase /** * show wireguard config + * XXX: remove in 24.1 * @return array */ public function showconfAction() @@ -82,6 +85,7 @@ class ServiceController extends ApiMutableServiceControllerBase /** * show wireguard handshakes + * XXX: remove in 24.1 * @return array */ public function showhandshakeAction() @@ -89,4 +93,36 @@ class ServiceController extends ApiMutableServiceControllerBase $response = (new Backend())->configdRun("wireguard showhandshake"); return array("response" => $response); } + + /** + * wg show all dump output + * @return array + */ + public function showAction() + { + $payload = json_decode((new Backend())->configdRun("wireguard show") ?? '', true); + $records = !empty($payload) && !empty($payload['records']) ? $payload['records'] : []; + $key_descriptions = []; + foreach ((new Client())->clients->client->iterateItems() as $key => $client) { + $key_descriptions[(string)$client->pubkey] = (string)$client->name; + } + foreach ((new Server())->servers->server->iterateItems() as $key => $server) { + $key_descriptions[(string)$server->pubkey] = (string)$server->name; + } + foreach ($records as &$record) { + if (!empty($record['public-key']) && !empty($key_descriptions[$record['public-key']])) { + $record['name'] = $key_descriptions[$record['public-key']]; + } else { + $record['name'] = ''; + } + } + $filter_funct = null; + $types = $this->request->get('type'); + if (!empty($types)) { + $filter_funct = function ($record) use ($types) { + return in_array($record['type'], $types); + }; + } + return $this->searchRecordsetBase($records, null, null, $filter_funct); + } } diff --git a/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/DiagnosticsController.php b/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/DiagnosticsController.php new file mode 100644 index 000000000..852ea92ac --- /dev/null +++ b/net/wireguard/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/DiagnosticsController.php @@ -0,0 +1,37 @@ +view->pick('OPNsense/Wireguard/diagnostics'); + } +} diff --git a/net/wireguard/src/opnsense/mvc/app/models/OPNsense/Wireguard/Menu/Menu.xml b/net/wireguard/src/opnsense/mvc/app/models/OPNsense/Wireguard/Menu/Menu.xml index 8494a617f..f2c15f406 100644 --- a/net/wireguard/src/opnsense/mvc/app/models/OPNsense/Wireguard/Menu/Menu.xml +++ b/net/wireguard/src/opnsense/mvc/app/models/OPNsense/Wireguard/Menu/Menu.xml @@ -1,7 +1,8 @@