VPN: WireGuard: Peer generator - Add DNS field and store previous used values in Instance. closes https://github.com/opnsense/core/issues/7357

This commit is contained in:
Ad Schellevis 2024-04-04 22:00:07 +02:00
parent 966bda3c96
commit 899b41a576
3 changed files with 26 additions and 4 deletions

View File

@ -47,6 +47,12 @@
<type>text</type>
<help>Set persistent keepalive interval in seconds.</help>
</field>
<field>
<id>configbuilder.peer_dns</id>
<label>DNS Servers</label>
<type>text</type>
<help>Comma-separated list of DNS servers to use on the peer.</help>
</field>
<field>
<id>configbuilder.output</id>
<label>Config</label>

View File

@ -1,7 +1,7 @@
<model>
<mount>//OPNsense/wireguard/server</mount>
<description>WireGuard instance configuration</description>
<version>0.0.4</version>
<version>1.0.0</version>
<items>
<servers>
<server type=".\ServerField">
@ -52,7 +52,6 @@
</check001>
</Constraints>
</disableroutes>
<endpoint type="TextField"/>
<gateway type="NetworkField"/>
<carp_depend_on type="VirtualIPField">
<type>carp</type>
@ -69,6 +68,9 @@
<Multiple>Y</Multiple>
<ValidationMessage>Choose a peer.</ValidationMessage>
</peers>
<!-- Peer generator storage [default values] -->
<endpoint type="TextField"/>
<peer_dns type="TextField"/>
</server>
</servers>
</items>

View File

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