From: Michael Tremer Date: Wed, 24 Apr 2024 21:03:48 +0000 (+0200) Subject: wireguard.cgi: Implement launching the editor for editing a connection X-Git-Tag: v2.29-core195~14^2~93^2~95 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1425014380d4118bba7b4ffe1f41691a2af7a3b0;p=ipfire-2.x.git wireguard.cgi: Implement launching the editor for editing a connection Signed-off-by: Michael Tremer --- diff --git a/doc/language_issues.de b/doc/language_issues.de index 6c71ea8d0..6986474c7 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -1021,6 +1021,7 @@ WARNING: untranslated string: reg_file_data_sampling = Register File Data Sampli WARNING: untranslated string: regenerate host certificate = Renew Host Certificate WARNING: untranslated string: reiserfs warning1 = Reiserfs is deprecated and scheduled to be removed from the kernel in 2025. WARNING: untranslated string: reiserfs warning2 = Ensure a fresh installation is made using either ext4 or xfs filesystems before that date. +WARNING: untranslated string: remarks = unknown string WARNING: untranslated string: remote subnets = Remote Subnets WARNING: untranslated string: required = Required WARNING: untranslated string: route config changed = unknown string @@ -1034,6 +1035,7 @@ WARNING: untranslated string: smb daemon = SMB Daemon WARNING: untranslated string: subscription code = Subscription code WARNING: untranslated string: user management = User Management WARNING: untranslated string: wg create peer = Create A New Peer +WARNING: untranslated string: wg edit peer = Edit Peer WARNING: untranslated string: wg invalid endpoint address = Invalid endpoint address WARNING: untranslated string: wg invalid endpoint port = Invalid endpoint port WARNING: untranslated string: wg invalid local subnet = Invalid local subnet diff --git a/doc/language_issues.en b/doc/language_issues.en index 3fdabcea9..2fa654097 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -1567,6 +1567,7 @@ WARNING: untranslated string: reiserfs warning2 = Ensure a fresh installation is WARNING: untranslated string: release = Release WARNING: untranslated string: remark = Remark WARNING: untranslated string: remark title = Remark: +WARNING: untranslated string: remarks = unknown string WARNING: untranslated string: remote access = Remote access WARNING: untranslated string: remote announce = Remote Announce WARNING: untranslated string: remote browse sync = Remote Browse Sync @@ -2141,6 +2142,7 @@ WARNING: untranslated string: website = Website WARNING: untranslated string: wednesday = Wednesday WARNING: untranslated string: weeks = Weeks WARNING: untranslated string: wg create peer = Create A New Peer +WARNING: untranslated string: wg edit peer = Edit Peer WARNING: untranslated string: wg invalid endpoint address = Invalid endpoint address WARNING: untranslated string: wg invalid endpoint port = Invalid endpoint port WARNING: untranslated string: wg invalid local subnet = Invalid local subnet diff --git a/doc/language_issues.es b/doc/language_issues.es index 3cf6bb6b9..586daeaa2 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -1086,6 +1086,7 @@ WARNING: untranslated string: reg_file_data_sampling = Register File Data Sampli WARNING: untranslated string: regenerate host certificate = Renew Host Certificate WARNING: untranslated string: reiserfs warning1 = Reiserfs is deprecated and scheduled to be removed from the kernel in 2025. WARNING: untranslated string: reiserfs warning2 = Ensure a fresh installation is made using either ext4 or xfs filesystems before that date. +WARNING: untranslated string: remarks = unknown string WARNING: untranslated string: remote subnets = Remote Subnets WARNING: untranslated string: route config changed = unknown string WARNING: untranslated string: routing = Routing @@ -1101,6 +1102,7 @@ WARNING: untranslated string: total = Total WARNING: untranslated string: transport mode does not support vti = VTI is not support in transport mode WARNING: untranslated string: warning = Warning WARNING: untranslated string: wg create peer = Create A New Peer +WARNING: untranslated string: wg edit peer = Edit Peer WARNING: untranslated string: wg invalid endpoint address = Invalid endpoint address WARNING: untranslated string: wg invalid endpoint port = Invalid endpoint port WARNING: untranslated string: wg invalid local subnet = Invalid local subnet diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 1b1f85ea0..cb97dff1a 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -1031,6 +1031,7 @@ WARNING: untranslated string: password has quotation mark = Password contains an WARNING: untranslated string: processors = Processors WARNING: untranslated string: public key = Public Key WARNING: untranslated string: reg_file_data_sampling = Register File Data Sampling (RFDS) +WARNING: untranslated string: remarks = unknown string WARNING: untranslated string: remote subnets = Remote Subnets WARNING: untranslated string: routing = Routing WARNING: untranslated string: routing config added = unknown string @@ -1041,6 +1042,7 @@ WARNING: untranslated string: timeformat = %Y-%m-%d at %H:%M:%S %Z WARNING: untranslated string: total = Total WARNING: untranslated string: warning = Warning WARNING: untranslated string: wg create peer = Create A New Peer +WARNING: untranslated string: wg edit peer = Edit Peer WARNING: untranslated string: wg invalid endpoint address = Invalid endpoint address WARNING: untranslated string: wg invalid endpoint port = Invalid endpoint port WARNING: untranslated string: wg invalid local subnet = Invalid local subnet diff --git a/doc/language_issues.it b/doc/language_issues.it index 0d955ec18..553cc5700 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -1301,6 +1301,7 @@ WARNING: untranslated string: regenerate host certificate = Renew Host Certifica WARNING: untranslated string: reiserfs warning1 = Reiserfs is deprecated and scheduled to be removed from the kernel in 2025. WARNING: untranslated string: reiserfs warning2 = Ensure a fresh installation is made using either ext4 or xfs filesystems before that date. WARNING: untranslated string: release = Release +WARNING: untranslated string: remarks = unknown string WARNING: untranslated string: remote subnets = Remote Subnets WARNING: untranslated string: required = Required WARNING: untranslated string: required field = Required field @@ -1387,6 +1388,7 @@ WARNING: untranslated string: vulnerability = Vulnerability WARNING: untranslated string: vulnerable = Vulnerable WARNING: untranslated string: warning = Warning WARNING: untranslated string: wg create peer = Create A New Peer +WARNING: untranslated string: wg edit peer = Edit Peer WARNING: untranslated string: wg invalid endpoint address = Invalid endpoint address WARNING: untranslated string: wg invalid endpoint port = Invalid endpoint port WARNING: untranslated string: wg invalid local subnet = Invalid local subnet diff --git a/doc/language_issues.nl b/doc/language_issues.nl index a3a4bd3aa..9a2243c21 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -1322,6 +1322,7 @@ WARNING: untranslated string: reg_file_data_sampling = Register File Data Sampli WARNING: untranslated string: regenerate host certificate = Renew Host Certificate WARNING: untranslated string: reiserfs warning1 = Reiserfs is deprecated and scheduled to be removed from the kernel in 2025. WARNING: untranslated string: reiserfs warning2 = Ensure a fresh installation is made using either ext4 or xfs filesystems before that date. +WARNING: untranslated string: remarks = unknown string WARNING: untranslated string: remote subnets = Remote Subnets WARNING: untranslated string: required = Required WARNING: untranslated string: required field = Required field @@ -1408,6 +1409,7 @@ WARNING: untranslated string: vulnerability = Vulnerability WARNING: untranslated string: vulnerable = Vulnerable WARNING: untranslated string: warning = Warning WARNING: untranslated string: wg create peer = Create A New Peer +WARNING: untranslated string: wg edit peer = Edit Peer WARNING: untranslated string: wg invalid endpoint address = Invalid endpoint address WARNING: untranslated string: wg invalid endpoint port = Invalid endpoint port WARNING: untranslated string: wg invalid local subnet = Invalid local subnet diff --git a/doc/language_issues.pl b/doc/language_issues.pl index 5c2bdbbdf..e840ae388 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -1502,6 +1502,7 @@ WARNING: untranslated string: regenerate host certificate = Renew Host Certifica WARNING: untranslated string: reiserfs warning1 = Reiserfs is deprecated and scheduled to be removed from the kernel in 2025. WARNING: untranslated string: reiserfs warning2 = Ensure a fresh installation is made using either ext4 or xfs filesystems before that date. WARNING: untranslated string: release = Release +WARNING: untranslated string: remarks = unknown string WARNING: untranslated string: remote subnets = Remote Subnets WARNING: untranslated string: required = Required WARNING: untranslated string: required field = Required field @@ -1650,6 +1651,7 @@ WARNING: untranslated string: vulnerability = Vulnerability WARNING: untranslated string: vulnerable = Vulnerable WARNING: untranslated string: warning = Warning WARNING: untranslated string: wg create peer = Create A New Peer +WARNING: untranslated string: wg edit peer = Edit Peer WARNING: untranslated string: wg invalid endpoint address = Invalid endpoint address WARNING: untranslated string: wg invalid endpoint port = Invalid endpoint port WARNING: untranslated string: wg invalid local subnet = Invalid local subnet diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 96a6a5f89..4f7d57976 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -1495,6 +1495,7 @@ WARNING: untranslated string: regenerate host certificate = Renew Host Certifica WARNING: untranslated string: reiserfs warning1 = Reiserfs is deprecated and scheduled to be removed from the kernel in 2025. WARNING: untranslated string: reiserfs warning2 = Ensure a fresh installation is made using either ext4 or xfs filesystems before that date. WARNING: untranslated string: release = Release +WARNING: untranslated string: remarks = unknown string WARNING: untranslated string: remote subnets = Remote Subnets WARNING: untranslated string: required = Required WARNING: untranslated string: required field = Required field @@ -1643,6 +1644,7 @@ WARNING: untranslated string: vulnerability = Vulnerability WARNING: untranslated string: vulnerable = Vulnerable WARNING: untranslated string: warning = Warning WARNING: untranslated string: wg create peer = Create A New Peer +WARNING: untranslated string: wg edit peer = Edit Peer WARNING: untranslated string: wg invalid endpoint address = Invalid endpoint address WARNING: untranslated string: wg invalid endpoint port = Invalid endpoint port WARNING: untranslated string: wg invalid local subnet = Invalid local subnet diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 78986e296..7a80ce399 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -1210,6 +1210,7 @@ WARNING: untranslated string: regenerate host certificate = Renew Host Certifica WARNING: untranslated string: reiserfs warning1 = Reiserfs is deprecated and scheduled to be removed from the kernel in 2025. WARNING: untranslated string: reiserfs warning2 = Ensure a fresh installation is made using either ext4 or xfs filesystems before that date. WARNING: untranslated string: release = Release +WARNING: untranslated string: remarks = unknown string WARNING: untranslated string: remote subnets = Remote Subnets WARNING: untranslated string: required = Required WARNING: untranslated string: retbleed = Retbleed @@ -1270,6 +1271,7 @@ WARNING: untranslated string: vulnerability = Vulnerability WARNING: untranslated string: vulnerable = Vulnerable WARNING: untranslated string: warning = Warning WARNING: untranslated string: wg create peer = Create A New Peer +WARNING: untranslated string: wg edit peer = Edit Peer WARNING: untranslated string: wg invalid endpoint address = Invalid endpoint address WARNING: untranslated string: wg invalid endpoint port = Invalid endpoint port WARNING: untranslated string: wg invalid local subnet = Invalid local subnet diff --git a/doc/language_missings b/doc/language_missings index da9f3d3e8..e39b0af19 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -116,6 +116,7 @@ < vpn configuration main < wg < wg create peer +< wg edit peer < wg invalid endpoint address < wg invalid endpoint port < wg invalid local subnet @@ -194,6 +195,7 @@ < warning < wg < wg create peer +< wg edit peer < wg invalid endpoint address < wg invalid endpoint port < wg invalid local subnet @@ -250,6 +252,7 @@ < warning < wg < wg create peer +< wg edit peer < wg invalid endpoint address < wg invalid endpoint port < wg invalid local subnet @@ -760,6 +763,7 @@ < Weekly < wg < wg create peer +< wg edit peer < wg invalid endpoint address < wg invalid endpoint port < wg invalid local subnet @@ -1346,6 +1350,7 @@ < Weekly < wg < wg create peer +< wg edit peer < wg invalid endpoint address < wg invalid endpoint port < wg invalid local subnet @@ -2348,6 +2353,7 @@ < Weekly < wg < wg create peer +< wg edit peer < wg invalid endpoint address < wg invalid endpoint port < wg invalid local subnet @@ -3387,6 +3393,7 @@ < Weekly < wg < wg create peer +< wg edit peer < wg invalid endpoint address < wg invalid endpoint port < wg invalid local subnet @@ -3803,6 +3810,7 @@ < Weekly < wg < wg create peer +< wg edit peer < wg invalid endpoint address < wg invalid endpoint port < wg invalid local subnet diff --git a/html/cgi-bin/wireguard.cgi b/html/cgi-bin/wireguard.cgi index d81cbea8b..312d21bf0 100644 --- a/html/cgi-bin/wireguard.cgi +++ b/html/cgi-bin/wireguard.cgi @@ -83,10 +83,44 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{'save'}) { &General::system("/usr/local/bin/wireguardctrl", "stop"); } +# Edit an existing peer +} elsif ($cgiparams{"ACTION"} eq $Lang::tr{'edit'}) { + my $key = $cgiparams{'KEY'}; + + # Fail if the peer does not exist + unless (exists $peers{$key}) { + goto MAIN; + } + + # Fetch type + my $type = $peers{$key}[1]; + + # Flush CGI parameters & load configuration + %cgiparams = ( + "KEY" => $key, + "ENABLED" => $peers{$key}[0], + "TYPE" => $peers{$key}[1], + "NAME" => $peers{$key}[2], + "PUBLIC_KEY" => $peers{$key}[3], + "ENDPOINT_ADDRESS" => $peers{$key}[4], + "ENDPOINT_PORT" => $peers{$key}[5], + "REMOTE_SUBNETS" => $peers{$key}[6], + "REMARKS" => &MIME::Base64::decode_base64($peers{$key}[7]), + "LOCAL_SUBNETS" => $peers{$key}[8], + ); + + # Jump to the editor + if ($type eq "net") { + goto EDITOR; + } + } elsif ($cgiparams{"ACTION"} eq "SAVE-PEER-NET") { my @local_subnets = (); my @remote_subnets = (); + # Fetch or allocate a new key + my $key = $cgiparams{'KEY'} || &General::findhasharraykey(\%peers); + # Check if the name is valid unless (&name_is_valid($cgiparams{"NAME"})) { push(@errormessages, $Lang::tr{'wg invalid name'}); @@ -137,11 +171,6 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{'save'}) { goto EDITOR if (scalar @errormessages); # Save the connection - - # Allocate a new key - my $key = &General::findhasharraykey(\%peers); - - # Store all values $peers{$key} = [ # 0 = Enabled "on", @@ -447,20 +476,27 @@ EDITOR: # Show any error messages &Header::errorbox(@errormessages); + # Fetch the key + my $key = $cgiparams{'KEY'}; + # Open a new box - &Header::openbox('100%', '', $Lang::tr{'wg create peer'}); + &Header::openbox('100%', '', + (defined $key) ? $Lang::tr{'wg edit peer'} : $Lang::tr{'wg create peer'}); # Set defaults - &General::set_defaults(\%cgiparams, { - "ENDPOINT_PORT" => $DEFAULT_PORT, - "LOCAL_SUBNETS" => - $Network::ethernet{"GREEN_NETADDRESS"} - . "/" . $Network::ethernet{"GREEN_NETMASK"}, - }); + unless (defined $key) { + &General::set_defaults(\%cgiparams, { + "ENDPOINT_PORT" => $DEFAULT_PORT, + "LOCAL_SUBNETS" => + $Network::ethernet{"GREEN_NETADDRESS"} + . "/" . $Network::ethernet{"GREEN_NETMASK"}, + }); + } print < + diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 72f8da3ad..353b9aaae 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -3039,6 +3039,7 @@ 'weeks' => 'Weeks', 'wg' => 'WireGuard', 'wg create peer' => 'Create A New Peer', +'wg edit peer' => 'Edit Peer', 'wg invalid endpoint address' => 'Invalid endpoint address', 'wg invalid endpoint port' => 'Invalid endpoint port', 'wg invalid local subnet' => 'Invalid local subnet',