From 899b41a5764e832a08d92b4b17be284dc7e1db54 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Thu, 4 Apr 2024 22:00:07 +0200 Subject: [PATCH] VPN: WireGuard: Peer generator - Add DNS field and store previous used values in Instance. closes https://github.com/opnsense/core/issues/7357 --- .../Wireguard/forms/dialogConfigBuilder.xml | 6 ++++++ .../app/models/OPNsense/Wireguard/Server.xml | 6 ++++-- .../app/views/OPNsense/Wireguard/general.volt | 18 ++++++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogConfigBuilder.xml b/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogConfigBuilder.xml index 11f6e99c9..e5084de34 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogConfigBuilder.xml +++ b/src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogConfigBuilder.xml @@ -47,6 +47,12 @@ text Set persistent keepalive interval in seconds. + + configbuilder.peer_dns + + text + Comma-separated list of DNS servers to use on the peer. + configbuilder.output diff --git a/src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml b/src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml index 2dba2646e..89de554ed 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml @@ -1,7 +1,7 @@ //OPNsense/wireguard/server WireGuard instance configuration - 0.0.4 + 1.0.0 @@ -52,7 +52,6 @@ - carp @@ -69,6 +68,9 @@ Y Choose a peer. + + + diff --git a/src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt b/src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt index 5de41681e..aac4c972f 100644 --- a/src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt +++ b/src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt @@ -136,6 +136,11 @@ ajaxGet('/api/wireguard/server/getServer/' + $(this).val(), {}, function(data, status) { if (data.server) { let endpoint = $("#configbuilder\\.endpoint"); + let peer_dns = $("#configbuilder\\.peer_dns"); + peer_dns + .val(data.server.peer_dns) + .data('org-value', data.server.peer_dns); + endpoint .val(data.server.endpoint) .data('org-value', data.server.endpoint) @@ -150,6 +155,7 @@ $("#btn_configbuilder_save").click(function(){ let instance_id = $("#configbuilder\\.servers").val(); let endpoint = $("#configbuilder\\.endpoint"); + let peer_dns = $("#configbuilder\\.peer_dns"); let peer = { configbuilder: { enabled: '1', @@ -165,8 +171,13 @@ if (data.validations) { handleFormValidation("frm_config_builder", data.validations); } else { - if (endpoint.val() != endpoint.data('org-value')) { - let param = {'server': {'endpoint': endpoint.val()}}; + if (endpoint.val() != endpoint.data('org-value') || peer_dns.val() != peer_dns.data('org-value')) { + let param = { + 'server': { + 'endpoint': endpoint.val(), + 'peer_dns': peer_dns.val() + } + }; ajaxCall('/api/wireguard/server/setServer/' + instance_id, param, function(data, status){ configbuilder_new(); }); @@ -200,6 +211,9 @@ let rows = []; rows.push('[Interface]'); rows.push('PrivateKey = ' + $("#configbuilder\\.privkey").val()); + if ($("#configbuilder\\.peer_dns").val()) { + rows.push('DNS = ' + $("#configbuilder\\.peer_dns").val()); + } rows.push(''); rows.push('[Peer]'); rows.push('PublicKey = ' + $("#configbuilder\\.endpoint").data('pubkey'));