]> git.ipfire.org Git - people/ms/ipfire-2.x.git/commitdiff
firewall.cgi: Highlight any deleted WireGuard peers
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 22 Apr 2025 16:09:31 +0000 (18:09 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 22 Apr 2025 16:09:31 +0000 (18:09 +0200)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/cfgroot/wireguard-functions.pl
html/cgi-bin/firewall.cgi

index 82bcb27a4f5b4a1579c154f22060d447d2998dfa..d38a469185217f79cf7d1a02fc20cfe40424360c 100644 (file)
@@ -189,6 +189,22 @@ sub load_peer($) {
        return %peer;
 }
 
+sub get_peer_by_name($) {
+       my $name = shift;
+
+       foreach my $key (keys %peers) {
+               my %peer = &load_peer($key);
+
+               # Return the peer if the name matches
+               if ($peer{"NAME"} eq $name) {
+                       return %peer;
+               }
+       }
+
+       # Return undefined if nothing was found
+       return undef;
+}
+
 sub name_is_valid($) {
        my $name = shift;
 
index e245ee2a1ae0db01d1746c8157d3e6b606a5fb01..842ad731f301f618d023306bd044b666ef891376 100644 (file)
@@ -2586,10 +2586,10 @@ END
                        @tmpsrc=();
                        @tmptgt=();
                        #check if vpn hosts/nets have been deleted
-                       if($$hash{$key}[3] =~ /ipsec/i || $$hash{$key}[3] =~ /ovpn/i){
+                       if($$hash{$key}[3] =~ /ipsec/i || $$hash{$key}[3] =~ /^wg_/ || $$hash{$key}[3] =~ /ovpn/i){
                                push (@tmpsrc,$$hash{$key}[4]);
                        }
-                       if($$hash{$key}[5] =~ /ipsec/i || $$hash{$key}[5] =~ /ovpn/i){
+                       if($$hash{$key}[5] =~ /ipsec/i || $$hash{$key}[5] =~ /^wg_/ || $$hash{$key}[5] =~ /ovpn/i){
                                push (@tmptgt,$$hash{$key}[6]);
                        }
                        foreach my $host (@tmpsrc){
@@ -2609,6 +2609,10 @@ END
                                        if(&fwlib::get_ovpn_host_ip($host,33) eq ''){
                                                $coloryellow='on';
                                        }
+                               } elsif ($$hash{$key}[3] eq 'wg_host_src') {
+                                       if (!defined &Wireguard::get_peer_by_name($host)) {
+                                               $coloryellow = 'on';
+                                       }
                                }
                        }
                        foreach my $host (@tmptgt){
@@ -2628,6 +2632,10 @@ END
                                        if(&fwlib::get_ovpn_host_ip($host,33) eq ''){
                                                $coloryellow='on';
                                        }
+                               } elsif ($$hash{$key}[3] eq 'wg_host_tgt') {
+                                       if (!defined &Wireguard::get_peer_by_name($host)) {
+                                               $coloryellow = 'on';
+                                       }
                                }
                        }
                        #check if networkgroups or servicegroups are empty