39 lines
1.0 KiB
Plaintext

{
use esmith::NetworksDB;
use Net::IPv4Addr;
my $n = esmith::NetworksDB->open_ro() ||
die "Couldn't open networks DB\n";
my @ip = ("127.0.0.0/8", $LocalIP);
# Add hosts which can access the server-manager to the whitelist
unless (($fail2ban{FilterValidRemoteHosts} || 'disabled') eq 'enabled'){
foreach (split /[,;]/, (${'httpd-admin'}{'ValidFrom'} || '')){
my ($ip,$bits) = Net::IPv4Addr::ipv4_parse("$_");
push @ip, "$ip/$bits" unless "$ip" eq '0.0.0.0';
}
}
unless (($fail2ban{FilterLocalNetworks} || 'disabled') eq 'enabled'){
foreach my $net ($n->networks){
my $key = $net->key;
my $mask = $net->prop('Mask');
my ($ip,$bits) = Net::IPv4Addr::ipv4_parse("$key/$mask");
push @ip, "$ip/$bits";
}
}
# Add a local whitelist
foreach (split /[,;]/, ($fail2ban{'IgnoreIP'} || '')){
my $addr = $_;
$addr .= '/32' unless ($addr =~ m/\/\d{1,2}$/);
my ($ip,$bits) = Net::IPv4Addr::ipv4_parse("$addr");
push @ip, "$ip/$bits";
}
$OUT .= "ignoreip = " . join(" ", @ip);
}