]> git.ipfire.org Git - people/ms/ipfire-2.x.git/commitdiff
wireguard.cgi: Allow to configure a custom endpoint
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 20 Sep 2024 15:12:26 +0000 (17:12 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 22 Apr 2025 14:48:53 +0000 (16:48 +0200)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
13 files changed:
config/cfgroot/wireguard-functions.pl
doc/language_issues.en
doc/language_issues.es
doc/language_issues.fr
doc/language_issues.it
doc/language_issues.nl
doc/language_issues.pl
doc/language_issues.ru
doc/language_issues.tr
doc/language_missings
html/cgi-bin/wireguard.cgi
langs/de/cgi-bin/de.pl
langs/en/cgi-bin/en.pl

index 7e237c88c5f62a902cb5b3f2c0de95ec0f960701..366d4c19df521c48010d92c02275e9df6fa126bf 100644 (file)
@@ -317,11 +317,13 @@ sub generate_client_configuration($) {
                push(@allowed_ips, "${netaddress}/${prefix}");
        }
 
-       # Build the FQDN of the firewall
-       my $fqdn = join(".", (
-               $General::mainsettings{'HOSTNAME'},
-               $General::mainsettings{'DOMAINNAME'},
-       ));
+       my $endpoint = $settings{'ENDPOINT'};
+
+       # If no endpoint is set, we fall back to the FQDN of the firewall
+       if ($endpoint eq "") {
+               $endpoint = $General::mainsettings{'HOSTNAME'} . "." . $General::mainsettings{'DOMAINNAME'};
+       }
+
        my $port = $settings{'PORT'};
 
        # Fetch any DNS servers
@@ -344,7 +346,7 @@ sub generate_client_configuration($) {
        # Add peer configuration
        push(@conf, (
                "[Peer]",
-               "Endpoint = ${fqdn}:${port}",
+               "Endpoint = ${endpoint}:${port}",
                "PublicKey = $settings{'PUBLIC_KEY'}",
                "PresharedKey = $peer->{'PSK'}",
                "AllowedIPs = " . join(", ", @allowed_ips),
index 79ee563071f0adae58c34fe9aa226bf4953d00b3..8268b9e8aaa1a67540b49f9933c33bcae75e68a6 100644 (file)
@@ -1099,6 +1099,7 @@ WARNING: untranslated string: invalid characters found in pre-shared key = Inval
 WARNING: untranslated string: invalid default lease time = Invalid default lease time.
 WARNING: untranslated string: invalid domain name = Invalid domain name.
 WARNING: untranslated string: invalid end address = Invalid end address.
+WARNING: untranslated string: invalid endpoint = Invalid Endpoint
 WARNING: untranslated string: invalid fixed ip address = Invalid fixed IP address
 WARNING: untranslated string: invalid fixed mac address = Invalid fixed MAC address
 WARNING: untranslated string: invalid hostname = Invalid hostname.
index bb366eba014a612f705f986d62cc9ac56349bf77..23da45c89320d068e2c1b007eb2df614f87a311a 100644 (file)
@@ -1067,6 +1067,7 @@ WARNING: untranslated string: hostile networks total = Total Hostile Networks
 WARNING: untranslated string: ids provider eol = (EOL)
 WARNING: untranslated string: ids rulesets = Rulesets
 WARNING: untranslated string: info messages = unknown string
+WARNING: untranslated string: invalid endpoint = Invalid Endpoint
 WARNING: untranslated string: invalid ip or hostname = Invalid IP Address or Hostname
 WARNING: untranslated string: ips throughput = Throughput
 WARNING: untranslated string: last updated = Last Updated
index 14a2e031a256295bc4e46060d13a697cc05e11af..c1baa4abc098159f0cbed08bd4780c9559a3a636 100644 (file)
@@ -1021,6 +1021,7 @@ WARNING: untranslated string: guardian service = unknown string
 WARNING: untranslated string: hostile networks total = Total Hostile Networks
 WARNING: untranslated string: ids provider eol = (EOL)
 WARNING: untranslated string: ids rulesets = Rulesets
+WARNING: untranslated string: invalid endpoint = Invalid Endpoint
 WARNING: untranslated string: ips throughput = Throughput
 WARNING: untranslated string: last updated = Last Updated
 WARNING: untranslated string: load average = Load Average
index 2ae1661876ed400bc782bc1c877db38ee7a987bd..c6a5b17fc955117c1ebf1ecc7e52d7d1a3b5caab 100644 (file)
@@ -1181,6 +1181,7 @@ WARNING: untranslated string: info messages = unknown string
 WARNING: untranslated string: inodes = Index-Nodes
 WARNING: untranslated string: interface mode = Interface
 WARNING: untranslated string: intrusion prevention system = Intrusion Prevention System
+WARNING: untranslated string: invalid endpoint = Invalid Endpoint
 WARNING: untranslated string: invalid input for inactivity timeout = Invalid input for Inactivity Timeout
 WARNING: untranslated string: invalid input for interface address = Invalid input for interface address
 WARNING: untranslated string: invalid input for interface mode = Invalid input for interface mode
index db7272f9f94973f0fc7ddc10339f2a323767a7a4..f040045b3f0f2a11507c6f68988e4148aa2473ed 100644 (file)
@@ -1188,6 +1188,7 @@ WARNING: untranslated string: info messages = unknown string
 WARNING: untranslated string: inodes = Index-Nodes
 WARNING: untranslated string: interface mode = Interface
 WARNING: untranslated string: intrusion prevention system = Intrusion Prevention System
+WARNING: untranslated string: invalid endpoint = Invalid Endpoint
 WARNING: untranslated string: invalid input for inactivity timeout = Invalid input for Inactivity Timeout
 WARNING: untranslated string: invalid input for interface address = Invalid input for interface address
 WARNING: untranslated string: invalid input for interface mode = Invalid input for interface mode
index 19093a22b412f26160fb8777c63b571e8f0160ea..8663a1d6f6d837ba998a3416fae958321c87a969 100644 (file)
@@ -1328,6 +1328,7 @@ WARNING: untranslated string: inodes = Index-Nodes
 WARNING: untranslated string: integrity = Integrity:
 WARNING: untranslated string: interface mode = Interface
 WARNING: untranslated string: intrusion prevention system = Intrusion Prevention System
+WARNING: untranslated string: invalid endpoint = Invalid Endpoint
 WARNING: untranslated string: invalid input for dpd delay = Invalid input for DPD delay
 WARNING: untranslated string: invalid input for dpd timeout = Invalid input for DPD timeout
 WARNING: untranslated string: invalid input for inactivity timeout = Invalid input for Inactivity Timeout
index b7e599b369ce586570974eaa9613e54226141396..133b71e4c8303216d65491254f1728c5422a6bb8 100644 (file)
@@ -1324,6 +1324,7 @@ WARNING: untranslated string: inodes = Index-Nodes
 WARNING: untranslated string: integrity = Integrity:
 WARNING: untranslated string: interface mode = Interface
 WARNING: untranslated string: intrusion prevention system = Intrusion Prevention System
+WARNING: untranslated string: invalid endpoint = Invalid Endpoint
 WARNING: untranslated string: invalid input for dpd delay = Invalid input for DPD delay
 WARNING: untranslated string: invalid input for dpd timeout = Invalid input for DPD timeout
 WARNING: untranslated string: invalid input for inactivity timeout = Invalid input for Inactivity Timeout
index 16a8bcf7e26aa794ade36e6614aa0e8ade1e1f0b..844f4835f69180c9ccea129f62eee51622f9d3f3 100644 (file)
@@ -1120,6 +1120,7 @@ WARNING: untranslated string: info messages = unknown string
 WARNING: untranslated string: inodes = Index-Nodes
 WARNING: untranslated string: interface mode = Interface
 WARNING: untranslated string: intrusion prevention system = Intrusion Prevention System
+WARNING: untranslated string: invalid endpoint = Invalid Endpoint
 WARNING: untranslated string: invalid input for interface address = Invalid input for interface address
 WARNING: untranslated string: invalid input for interface mode = Invalid input for interface mode
 WARNING: untranslated string: invalid input for interface mtu = Invalid input to interface MTU
index 69b38c2333ab9e2e5ce28a74d7403b57f439f065..459be4689bcde8e9eda840c3d4d4ba8e81f49043 100644 (file)
 < ids provider eol
 < ids rulesets
 < ids unsupported provider
+< invalid endpoint
 < invalid ip or hostname
 < ips throughput
 < last updated
 < ids provider eol
 < ids rulesets
 < ids unsupported provider
+< invalid endpoint
 < ips throughput
 < last updated
 < load average
 < inodes
 < interface mode
 < intrusion prevention system
+< invalid endpoint
 < invalid input for inactivity timeout
 < invalid input for interface address
 < invalid input for interface mode
 < inodes
 < interface mode
 < intrusion prevention system
+< invalid endpoint
 < invalid input for inactivity timeout
 < invalid input for interface address
 < invalid input for interface mode
 < integrity
 < interface mode
 < intrusion prevention system
+< invalid endpoint
 < invalid input for dpd delay
 < invalid input for dpd timeout
 < invalid input for inactivity timeout
 < integrity
 < interface mode
 < intrusion prevention system
+< invalid endpoint
 < invalid input for dpd delay
 < invalid input for dpd timeout
 < invalid input for inactivity timeout
 < inodes
 < interface mode
 < intrusion prevention system
+< invalid endpoint
 < invalid input for interface address
 < invalid input for interface mode
 < invalid input for interface mtu
index 2f244804b1156b9b9372b6763bff2a7d545bd2bc..a626358ec31ee65fb6e921e8996e320434dfdbfe 100644 (file)
@@ -50,6 +50,13 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{'save'}) {
                $Wireguard::settings{'ENABLED'} = $cgiparams{'ENABLED'};
        }
 
+       # Check endpoint
+       if (&General::validfqdn($cgiparams{'ENDPOINT'}) || &Network::check_ip_address($cgiparams{'ENDPOINT'}) || ($cgiparams{'ENDPOINT'} eq '')) {
+               $Wireguard::settings{'ENDPOINT'} = $cgiparams{'ENDPOINT'};
+       } else {
+               push(@errormessages, $Lang::tr{'invalid endpoint'});
+       }
+
        # Check port
        if (&General::validport($cgiparams{'PORT'})) {
                $Wireguard::settings{'PORT'} = $cgiparams{'PORT'};
@@ -449,6 +456,13 @@ MAIN:
                                        </td>
                                </tr>
 
+                               <tr>
+                                       <td>$Lang::tr{'endpoint'}</td>
+                                       <td>
+                                               <input type="text" name="ENDPOINT" value="$Wireguard::settings{'ENDPOINT'}" placeholder="$General::mainsettings{'HOSTNAME'}.$General::mainsettings{'DOMAINNAME'}" />
+                                       </td>
+                               </tr>
+
                                <tr>
                                        <td>$Lang::tr{'public key'}</td>
                                        <td>
index 35d5bfa13c53f4b4416b7f33d4c26f573d2dc681..b175f4f6c0c8da8bc5f75e8850a5bc001c2652e5 100644 (file)
 'invalid domain name' => 'Ungültiger Domainname.',
 'invalid downlink speed' => 'Ungültige Downlink-Gerschwindigkeit.',
 'invalid end address' => 'Ungültige Endadresse.',
+'invalid endpoint' => 'Ungültige Gegenstelle',
 'invalid fixed ip address' => 'Ungültige feste IP-Adresse',
 'invalid fixed mac address' => 'Ungültige feste MAC-Adresse',
 'invalid hostname' => 'Ungültiger Hostname.',
index 8763b2c7ca663c90183887725c2a8f363102e7ad..93479b82064a1e16d168a2ea71cdce29d54a9c05 100644 (file)
 'invalid domain name' => 'Invalid domain name.',
 'invalid downlink speed' => 'Invalid downlink speed.',
 'invalid end address' => 'Invalid end address.',
+'invalid endpoint' => 'Invalid Endpoint',
 'invalid fixed ip address' => 'Invalid fixed IP address',
 'invalid fixed mac address' => 'Invalid fixed MAC address',
 'invalid hostname' => 'Invalid hostname.',