Improve M$ Windows compatibility
[spider.git] / perl / create_master_badip_files.pl
index 0a9f5ba6e034b880c1d62a4c858fe4e735d9ded9..37e1747a618923800220d8ecd366b01f5207a11a 100755 (executable)
@@ -8,19 +8,21 @@
 use 5.16.1;
 
 # search local then perl directories
+use strict;
+
 BEGIN {
        # root of directory tree for this system
-       $root = "/spider"; 
+       our $root = "/spider"; 
        $root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'};
 
        mkdir "$root/local_data", 02777 unless -d "$root/local_data";
 
        unshift @INC, "$root/perl";     # this IS the right way round!
        unshift @INC, "$root/local";
-       $data = "$root/data";
+       our $data = "$root/data";
 }
 
-use strict;
+
 use DXVars;
 use SysVar;
 
@@ -31,6 +33,7 @@ use LWP::Simple;
 use JSON;
 use Date::Parse;
 use File::Copy;
+use DXUtil;
 
 DXDebug::dbginit();
 
@@ -67,6 +70,7 @@ my $data = decode_json($content);
 my $now = time;
 my $ecount = 0;
 my $rcount = 0;
+my $error = 0;
 
 my $rand = rand;
 open RELAY, ">$relayfn.$rand" or die "$0: cannot open $relayfn $!";
@@ -83,25 +87,35 @@ foreach my $e (@{$data->{relays}}) {
        my $es = join ', ', @exit;
        dbg "$0: $e->{nickname} $e->{last_seen} relays: [$ors] exits: [$es]" if $debug;
        for (@or) {
-               print RELAY "$_\n";
-               ++$rcount;
+               if (is_ipaddr($_)) {
+                       print RELAY "$_\n";
+                       ++$rcount;
+               } else {
+                       print STDERR "$_\n";
+                       ++$error;
+               }
        }
        for (@exit) {
-               print EXIT "$_\n";
-               ++$ecount;
+               if (is_ipaddr($_)) {
+                       print EXIT "$_\n";
+                       ++$ecount;
+               } else {
+                       print STDERR "$_\n";
+                       ++$error;
+               }
        }
 }
 
 close RELAY;
 close EXIT;
 
-dbg("$0: $rcount relays $ecount exits found");
+dbg("$0: $rcount relays $ecount exits $error error(s) found.");
 move "$relayfn.$rand", $relayfn if $rcount;
 move "$exitfn.$rand", $exitfn if $ecount;
 unlink "$relayfn.$rand";
 unlink "$exitfn.$rand";
 
-exit 0;
+exit $error;
 
 sub clean_addr
 {