That end ip in the badip files because of some local network
problem. Examples include storing an HTML error message saying
something like "could not access this URL" in one or more of the
files instead of just leaving them empty.
+01Feb23=======================================================================
+1. Harden DXCIDR (badip stuff) against format errors in downloaded badip files
+ downloaded using wget from the crontab. If these problems persist PLEASE
+ TELL me and send me examples of the errors that end up in the badip files.
30Jan23=======================================================================
1. Add ip addresses to outgoing PC93 messages
2. Get rid of (some of?) the uninitialised warnings
30Jan23=======================================================================
1. Add ip addresses to outgoing PC93 messages
2. Get rid of (some of?) the uninitialised warnings
return (1, "set/badip: need [suffix (def: local])] IP, IP-IP or IP/24") unless @in;
for my $ip (@in) {
my $r;
return (1, "set/badip: need [suffix (def: local])] IP, IP-IP or IP/24") unless @in;
for my $ip (@in) {
my $r;
+ unless (is_ipaddr($ip)) {
+ push @out, "set/badip: '$ip' is not an ip address, ignored";
+ next;
+ }
eval{ $r = DXCIDR::find($ip); };
return (1, "set/badip: $ip $@") if $@;
if ($r) {
eval{ $r = DXCIDR::find($ip); };
return (1, "set/badip: $ip $@") if $@;
if ($r) {
my $list = join ' ', @in;
DXCIDR::clean_prep();
#$DB::single = 1;
my $list = join ' ', @in;
DXCIDR::clean_prep();
#$DB::single = 1;
-DXCIDR::append($suffix, @added);
-push @out, "set/badip: added $count entries to badip.$suffix : $list" if $count;
+if ($count) {
+ DXCIDR::append($suffix, @added);
+ push @out, "set/badip: added $count entries to badip.$suffix : '$list'";
+} else {
+ push @out, "set/badip: No valid IPs, not updating badip.$suffix with '$list'";
+}
$fn .= ".$suffix" if $suffix;
my $fh = IO::File->new($fn);
my @out;
$fn .= ".$suffix" if $suffix;
my $fh = IO::File->new($fn);
my @out;
+ my $ecount;
+ my $line;
+
if ($fh) {
while (<$fh>) {
chomp;
if ($fh) {
while (<$fh>) {
chomp;
next if /^\s*\#/;
next unless /[\.:]/;
next unless $_;
next if /^\s*\#/;
next unless /[\.:]/;
next unless $_;
+ unless (is_ipaddr($_)) {
+ ++$ecount;
+ LogDbg('err', qq(DXCIDR: $fn line $line: '$_' not an ip address));
+ if ($ecount > 10) {
+ LogDbg('err', qq(DXCIDR: More than 10 errors in $fn at/after line $line: '$_' - INVALID INPUT FILE));
+ return ();
+ }
+ }
push @out, $_;
}
$fh->close;
push @out, $_;
}
$fh->close;
{
my $suffix = shift;
my @in = _read($suffix);
{
my $suffix = shift;
my @in = _read($suffix);
return scalar add(@in);
}
return scalar add(@in);
}
for my $ip (@_) {
# protect against stupid or malicious
for my $ip (@_) {
# protect against stupid or malicious
+ next unless is_ipaddr($ip);
next if $ip =~ /^127\./;
next if $ip =~ /^::1$/;
if ($ip =~ /\./) {
next if $ip =~ /^127\./;
next if $ip =~ /^::1$/;
if ($ip =~ /\./) {