Re-factor function to detect external firewall

This commit is contained in:
Jamie Cameron
2022-04-09 13:05:28 -07:00
parent f8334bd51e
commit 1028304a15
2 changed files with 28 additions and 17 deletions

View File

@@ -659,5 +659,24 @@ my $out = &backquote_logged("$cmd 2>&1 </dev/null");
return $? ? $out : undef;
}
# external_firewall_list(&tables)
# Returns a list of all external firewalls detected
sub external_firewall_list
{
my ($tables) = @_;
my @fwname;
my ($filter) = grep { $_->{'name'} eq 'filter' } @$tables;
if ($filter->{'defaults'}->{'shorewall'}) {
push(@fwname, 'shorewall');
}
if ($filter->{'defaults'}->{'INPUT_ZONES'}) {
push(@fwname, firewalld');
}
if ($filter->{'defaults'} =~ /^f2b-|^fail2ban-/ && !$config{'filter_chain'} ) {
push(@fwname, 'fail2ban');
}
return @fwname;
}
1;

View File

@@ -530,30 +530,22 @@ else {
&ui_print_footer("/", $text{'index'});
# external_firewall_message(&tables)
sub external_firewall_message
{
my $fwname = "";
my $fwconfig="@{[&get_webprefix()]}/config.cgi?firewall";
my ($tables) = @_;
my $fwconfig = "@{[&get_webprefix()]}/config.cgi?firewall";
my @fwname = &external_firewall_list($tables);
# detect external firewalls
local ($filter) = grep { $_->{'name'} eq 'filter' } @{$_[0]};
if ($filter->{'defaults'}->{'shorewall'}) {
$fwname.='shorewall ';
}
if ($filter->{'defaults'}->{'INPUT_ZONES'}) {
$fwname.='firewalld ';
}
if ($filter->{'defaults'} =~ /^f2b-|^fail2ban-/ && !$config{'filter_chain'} ) {
$fwname.='fail2ban ';
}
# warning about not using direct
if($fwname && !$config{"direct${ipvx}"}) {
# Warning about not using direct
if(@fwname && !$config{"direct${ipvx}"}) {
print "<b><center>",
&text('index_filter_nodirect', $fwconfig),
"</b></center><p>\n";
}
# alert about the detected firewall modules
foreach my $word (split ' ', $fwname) {
# Alert about the detected firewall modules
foreach my $word (@fwname) {
print ui_alert_box(&text("index_$word", "@{[&get_webprefix()]}/$word/", $fwconfig), 'warn');
}
}