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'));