add DXCIDR, fix version no tracking
[spider.git] / perl / cluster.pl
index 9c47042b396ac0e13d12a6f3d02b82a7e093bd18..143713babc1e0346bada54066d1bb5617dae601b 100755 (executable)
@@ -18,8 +18,6 @@ package main;
 use vars qw($data $system $cmd $localcmd $userfn $clusteraddr $clusterport $yes $no $user_interval $lang);
 
 $lang = 'en';                   # default language
-$clusteraddr = '127.0.0.1';     # cluster tcp host address - used for things like console.pl
-$clusterport = 27754;           # cluster tcp port
 $yes = 'Yes';                   # visual representation of yes
 $no = 'No';                     # ditto for no
 $user_interval = 11*60;         # the interval between unsolicited prompts if no traffic
@@ -123,6 +121,7 @@ use DXXml;
 use DXSql;
 use IsoTime;
 use BPQMsg;
+use DXCIDR;
 
 use Data::Dumper;
 use IO::File;
@@ -141,6 +140,9 @@ use vars qw(@inqueue $systime $starttime $lockfn @outstanding_connects
                        $can_encode $maxconnect_user $maxconnect_node
                   );
 
+
+$clusteraddr //= '127.0.0.1';     # cluster tcp host address - used for things like console.pl
+$clusterport //= 27754;           # cluster tcp port
 @inqueue = ();                                 # the main input queue, an array of hashes
 $systime = 0;                                  # the time now (in seconds)
 $starttime = 0;                 # the starting time of the cluster
@@ -319,7 +321,7 @@ sub cease
                $l->close_server;
        }
 
-       LogDbg('cluster', "DXSpider V$version, build $subversion.$build (git: $gitbranch/$gitversion) ended");
+       LogDbg('cluster', "DXSpider v$version build $build (git: $gitbranch/$gitversion) using perl $^V on $^O ended");
        dbgclose();
        Logclose();
 
@@ -367,6 +369,8 @@ sub AGWrestart
 #
 #############################################################
 
+chdir $root;
+
 $starttime = $systime = time;
 $systime_days = int ($systime / 86400);
 $systime_daystart = $systime_days * 86400;
@@ -399,34 +403,35 @@ if (DXSql::init($dsn)) {
                import Encode;
                $can_encode = 1;
        }
-       eval { require Git; };
-       unless ($@) {
-               import Git;
+       
+       $gitbranch = 'none';
+       $gitversion = 'none';
+
+       # determine the real Git build number and branch
+       my $desc;
+       eval {$desc = `git --git-dir=$root/.git describe --long`};
+       if (!$@ && $desc) {
+               my ($v, $s, $b, $g) = $desc =~ /^([\d\.]+)(?:\.(\d+))?-(\d+)-g([0-9a-f]+)/;
+               $version = $v;
+               $subversion = $s || 0;
+               $build = $b || 0;
+               $gitversion = "$g\[r]";
+       }
+    if (!$@) {
+               my @branch;
                
-               # determine the real version number
-               $gitbranch = 'none';
-        $gitversion = 'none';
-               my $repo = Git->repository(Directory => "$root/.git");
-               if ($repo) {
-                       my $desc = $repo->command_oneline(['describe'], STDERR => 0);
-                       if ($desc) {
-                               my ($v, $s, $b, $g) = $desc =~ /^([\d.]+)(?:\.(\d+))?-(\d+)-g([0-9a-f]+)/;
-                               $version = $v;
-                               $subversion = $s || 0;
-                               $build = $b || 0;
-                               $gitversion = "$g\[r]";
+               eval {@branch = `git --git-dir=$root/.git branch`};
+               unless ($@) {
+                       for (@branch) {
+                               my ($star, $b) = split /\s+/;
+                               if ($star eq '*') {
+                                       $gitbranch = $b;
+                                       last;
+                               }
                        }
                }
-               my @branch = $repo->command([qw{branch}], STDERR=>0);
-               for (@branch) {
-                       my ($star, $b) = split /\s+/;
-                       if ($star eq '*') {
-                               $gitbranch = $b;
-                               last;
-                       }
-               }
-
        }
+
        $SIG{__DIE__} = $w;
 }
 
@@ -436,7 +441,7 @@ DXXml::init();
 # banner
 my ($year) = (gmtime)[5];
 $year += 1900;
-LogDbg('cluster', "DXSpider V$version, build $subversion.$build (git: $gitbranch/$gitversion) started");
+LogDbg('cluster', "DXSpider v$version build $build (git: $gitbranch/$gitversion) using perl $^V on $^O started");
 dbg("Copyright (c) 1998-$year Dirk Koopman G1TLH");
 
 # load Prefixes
@@ -473,6 +478,9 @@ DXUser->init($userfn, 1);
        }
 }
 
+# get any bad IPs 
+DXCIDR::init();
+
 # start listening for incoming messages/connects
 dbg("starting listeners ...");
 my $conn = IntMsg->new_server($clusteraddr, $clusterport, \&login);