From: Michael Tremer Date: Wed, 24 Apr 2024 21:14:53 +0000 (+0200) Subject: wireguard.cgi: Check for duplicate names X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=16c94e73c70da3cf6446b2bf80fa306e51ded53c;p=people%2Fstevee%2Fipfire-2.x.git wireguard.cgi: Check for duplicate names Signed-off-by: Michael Tremer --- diff --git a/doc/language_issues.de b/doc/language_issues.de index 6986474c7..aab299e46 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -1042,6 +1042,7 @@ WARNING: untranslated string: wg invalid local subnet = Invalid local subnet WARNING: untranslated string: wg invalid name = Invalid name (Only letters, numbers, space and hyphen are allowed) WARNING: untranslated string: wg invalid public key = Invalid public key WARNING: untranslated string: wg invalid remote subnet = Invalid remote subnet +WARNING: untranslated string: wg name is already used = The name is already in use WARNING: untranslated string: wg no local subnets = No local subnets given WARNING: untranslated string: wg no remote subnets = No remote subnets given WARNING: untranslated string: winbind daemon = Winbind Daemon diff --git a/doc/language_issues.en b/doc/language_issues.en index 2fa654097..e02932ddf 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -2149,6 +2149,7 @@ WARNING: untranslated string: wg invalid local subnet = Invalid local subnet WARNING: untranslated string: wg invalid name = Invalid name (Only letters, numbers, space and hyphen are allowed) WARNING: untranslated string: wg invalid public key = Invalid public key WARNING: untranslated string: wg invalid remote subnet = Invalid remote subnet +WARNING: untranslated string: wg name is already used = The name is already in use WARNING: untranslated string: wg no local subnets = No local subnets given WARNING: untranslated string: wg no remote subnets = No remote subnets given WARNING: untranslated string: whitelisted = Whitelisted diff --git a/doc/language_issues.es b/doc/language_issues.es index 586daeaa2..27a9e70ff 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -1109,6 +1109,7 @@ WARNING: untranslated string: wg invalid local subnet = Invalid local subnet WARNING: untranslated string: wg invalid name = Invalid name (Only letters, numbers, space and hyphen are allowed) WARNING: untranslated string: wg invalid public key = Invalid public key WARNING: untranslated string: wg invalid remote subnet = Invalid remote subnet +WARNING: untranslated string: wg name is already used = The name is already in use WARNING: untranslated string: wg no local subnets = No local subnets given WARNING: untranslated string: wg no remote subnets = No remote subnets given WARNING: untranslated string: whitelisted = Whitelisted diff --git a/doc/language_issues.fr b/doc/language_issues.fr index cb97dff1a..71ce590f6 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -1049,6 +1049,7 @@ WARNING: untranslated string: wg invalid local subnet = Invalid local subnet WARNING: untranslated string: wg invalid name = Invalid name (Only letters, numbers, space and hyphen are allowed) WARNING: untranslated string: wg invalid public key = Invalid public key WARNING: untranslated string: wg invalid remote subnet = Invalid remote subnet +WARNING: untranslated string: wg name is already used = The name is already in use WARNING: untranslated string: wg no local subnets = No local subnets given WARNING: untranslated string: wg no remote subnets = No remote subnets given WARNING: untranslated string: whitelisted = Whitelisted diff --git a/doc/language_issues.it b/doc/language_issues.it index 553cc5700..758052575 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -1395,6 +1395,7 @@ WARNING: untranslated string: wg invalid local subnet = Invalid local subnet WARNING: untranslated string: wg invalid name = Invalid name (Only letters, numbers, space and hyphen are allowed) WARNING: untranslated string: wg invalid public key = Invalid public key WARNING: untranslated string: wg invalid remote subnet = Invalid remote subnet +WARNING: untranslated string: wg name is already used = The name is already in use WARNING: untranslated string: wg no local subnets = No local subnets given WARNING: untranslated string: wg no remote subnets = No remote subnets given WARNING: untranslated string: whitelisted = Whitelisted diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 9a2243c21..3db861472 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -1416,6 +1416,7 @@ WARNING: untranslated string: wg invalid local subnet = Invalid local subnet WARNING: untranslated string: wg invalid name = Invalid name (Only letters, numbers, space and hyphen are allowed) WARNING: untranslated string: wg invalid public key = Invalid public key WARNING: untranslated string: wg invalid remote subnet = Invalid remote subnet +WARNING: untranslated string: wg name is already used = The name is already in use WARNING: untranslated string: wg no local subnets = No local subnets given WARNING: untranslated string: wg no remote subnets = No remote subnets given WARNING: untranslated string: whitelisted = Whitelisted diff --git a/doc/language_issues.pl b/doc/language_issues.pl index e840ae388..5674d7be1 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -1658,6 +1658,7 @@ WARNING: untranslated string: wg invalid local subnet = Invalid local subnet WARNING: untranslated string: wg invalid name = Invalid name (Only letters, numbers, space and hyphen are allowed) WARNING: untranslated string: wg invalid public key = Invalid public key WARNING: untranslated string: wg invalid remote subnet = Invalid remote subnet +WARNING: untranslated string: wg name is already used = The name is already in use WARNING: untranslated string: wg no local subnets = No local subnets given WARNING: untranslated string: wg no remote subnets = No remote subnets given WARNING: untranslated string: whitelisted = Whitelisted diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 4f7d57976..795bfe79f 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -1651,6 +1651,7 @@ WARNING: untranslated string: wg invalid local subnet = Invalid local subnet WARNING: untranslated string: wg invalid name = Invalid name (Only letters, numbers, space and hyphen are allowed) WARNING: untranslated string: wg invalid public key = Invalid public key WARNING: untranslated string: wg invalid remote subnet = Invalid remote subnet +WARNING: untranslated string: wg name is already used = The name is already in use WARNING: untranslated string: wg no local subnets = No local subnets given WARNING: untranslated string: wg no remote subnets = No remote subnets given WARNING: untranslated string: whitelisted = Whitelisted diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 7a80ce399..c515f0af3 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -1278,6 +1278,7 @@ WARNING: untranslated string: wg invalid local subnet = Invalid local subnet WARNING: untranslated string: wg invalid name = Invalid name (Only letters, numbers, space and hyphen are allowed) WARNING: untranslated string: wg invalid public key = Invalid public key WARNING: untranslated string: wg invalid remote subnet = Invalid remote subnet +WARNING: untranslated string: wg name is already used = The name is already in use WARNING: untranslated string: wg no local subnets = No local subnets given WARNING: untranslated string: wg no remote subnets = No remote subnets given WARNING: untranslated string: whitelisted = Whitelisted diff --git a/doc/language_missings b/doc/language_missings index e39b0af19..2c4b864ae 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -123,6 +123,7 @@ < wg invalid name < wg invalid public key < wg invalid remote subnet +< wg name is already used < wg no local subnets < wg no remote subnets < winbind daemon @@ -202,6 +203,7 @@ < wg invalid name < wg invalid public key < wg invalid remote subnet +< wg name is already used < wg no local subnets < wg no remote subnets < whitelisted @@ -259,6 +261,7 @@ < wg invalid name < wg invalid public key < wg invalid remote subnet +< wg name is already used < wg no local subnets < wg no remote subnets < whitelisted @@ -770,6 +773,7 @@ < wg invalid name < wg invalid public key < wg invalid remote subnet +< wg name is already used < wg no local subnets < wg no remote subnets < whitelisted @@ -1357,6 +1361,7 @@ < wg invalid name < wg invalid public key < wg invalid remote subnet +< wg name is already used < wg no local subnets < wg no remote subnets < whitelisted @@ -2360,6 +2365,7 @@ < wg invalid name < wg invalid public key < wg invalid remote subnet +< wg name is already used < wg no local subnets < wg no remote subnets < whitelisted @@ -3400,6 +3406,7 @@ < wg invalid name < wg invalid public key < wg invalid remote subnet +< wg name is already used < wg no local subnets < wg no remote subnets < whitelisted @@ -3817,6 +3824,7 @@ < wg invalid name < wg invalid public key < wg invalid remote subnet +< wg name is already used < wg no local subnets < wg no remote subnets < whitelisted diff --git a/html/cgi-bin/wireguard.cgi b/html/cgi-bin/wireguard.cgi index 387e70300..40ff611d7 100644 --- a/html/cgi-bin/wireguard.cgi +++ b/html/cgi-bin/wireguard.cgi @@ -126,6 +126,11 @@ if ($cgiparams{"ACTION"} eq $Lang::tr{'save'}) { push(@errormessages, $Lang::tr{'wg invalid name'}); } + # Check if the name is free + unless (&name_is_free($cgiparams{"NAME"}, $key)) { + push(@errormessages, $Lang::tr{'wg name is already used'}); + } + # Check the public key unless (&publickey_is_valid($cgiparams{'PUBLIC_KEY'})) { push(@errormessages, $Lang::tr{'wg invalid public key'}); @@ -707,6 +712,21 @@ sub name_is_valid($) { return 1; } +sub name_is_free($) { + my $name = shift; + my $key = shift || 0; + + foreach my $i (keys %peers) { + # Skip the connection with ID + next if ($key eq $i); + + # Return if we found a match + return 0 if ($peers{$i}[2] eq $name); + } + + return 1; +} + sub publickey_is_valid($) { my $key = shift; diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 353b9aaae..7b836f07a 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -3046,6 +3046,7 @@ 'wg invalid name' => 'Invalid name (Only letters, numbers, space and hyphen are allowed)', 'wg invalid public key' => 'Invalid public key', 'wg invalid remote subnet' => 'Invalid remote subnet', +'wg name is already used' => 'The name is already in use', 'wg no local subnets' => 'No local subnets given', 'wg no remote subnets' => 'No remote subnets given', 'whitelisted' => 'Whitelisted',