X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcluster.pl;h=79bca2649becc379f9977628e6ad23443c9e6e71;hb=b953903f1c33ae35ce24bad344e46ab17b0b5d95;hp=8645dbd9dd2e81ad467429124f4cc0c0c9f9fc8d;hpb=da65011693cc9a7a33f09424f7a19a51937d986c;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index 8645dbd9..79bca264 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -68,7 +68,6 @@ use DXCommandmode; use DXProtVars; use DXProtout; use DXProt; -use Aranea; use DXMsg; use DXCron; use DXConnect; @@ -99,9 +98,10 @@ use Mrtg; use USDB; use UDPMsg; use QSL; -use Thingy; use RouteDB; -use AMsg; +use DXXml; +use DXSql; +use IsoTime; use Data::Dumper; use IO::File; @@ -116,12 +116,12 @@ use strict; use vars qw(@inqueue $systime $version $starttime $lockfn @outstanding_connects $zombies $root @listeners $lang $myalias @debug $userfn $clusteraddr $clusterport $mycall $decease $is_win $routeroot $me $reqreg $bumpexisting - $allowdxby $dbh $dsn $dbuser $dbpass + $allowdxby $dbh $dsn $dbuser $dbpass $do_xml $systime_days $systime_daystart ); @inqueue = (); # the main input queue, an array of hashes $systime = 0; # the time now (in seconds) -$version = "1.52"; # the version no of the software +$version = "1.53"; # the version no of the software $starttime = 0; # the starting time of the cluster #@outstanding_connects = (); # list of outstanding connects @listeners = (); # list of listeners @@ -135,6 +135,8 @@ $VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); $BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0)); $main::build += $VERSION; $main::branch += $BRANCH; +$main::build -= 3; # fudge (put back for now) + # send a message to call on conn and disconnect @@ -180,8 +182,7 @@ sub new_channel if ($bumpexisting) { my $ip = $conn->{peerhost} || 'unknown'; $dxchan->send_now('D', DXM::msg($lang, 'conbump', $call, $ip)); - Log('DXCommand', "$call bumped off by $ip, disconnected"); - dbg("$call bumped off by $ip, disconnected"); + LogDbg('DXCommand', "$call bumped off by $ip, disconnected"); $dxchan->disconnect; } else { already_conn($conn, $call, DXM::msg($lang, 'conother', $call, $main::mycall)); @@ -197,7 +198,7 @@ sub new_channel if ($baseuser && $baseuser->lockout || $lock) { if (!$user || !defined $lock || $lock) { my $host = $conn->{peerhost} || "unknown"; - Log('DXCommand', "$call on $host is locked out, disconnected"); + LogDbg('DXCommand', "$call on $host is locked out, disconnected"); $conn->disconnect; return; } @@ -282,8 +283,7 @@ sub cease $l->close_server; } - dbg("DXSpider version $version, build $build ended") if isdbg('chan'); - Log('cluster', "DXSpider V$version, build $build ended"); + LogDbg('cluster', "DXSpider V$version, build $build ended"); dbgclose(); Logclose(); @@ -332,6 +332,8 @@ sub AGWrestart ############################################################# $starttime = $systime = time; +$systime_days = int ($systime / 86400); +$systime_daystart = $systime_days * 86400; $lang = 'en' unless $lang; unless ($DB::VERSION) { @@ -349,24 +351,20 @@ STDOUT->autoflush(1); $build += $main::version; $build = "$build.$branch" if $branch; -Log('cluster', "DXSpider V$version, build $build started"); +# try to load the database +if (DXSql::init($dsn)) { + $dbh = DXSql->new($dsn); + $dbh = $dbh->connect($dsn, $dbuser, $dbpass) if $dbh; +} + +# try to load XML::Simple +DXXml::init(); # banner my ($year) = (gmtime)[5]; $year += 1900; +LogDbg('cluster', "DXSpider V$version, build $build started"); dbg("Copyright (c) 1998-$year Dirk Koopman G1TLH"); -dbg("DXSpider Version $version, build $build started"); - -# try to load the database -if ($dsn && -e "$root/perl/DXSql.pm") { - require DXSql; - import DXSql; - - if (DXSql::init()) { - $dbh = DXSql->new($dsn); - $dbh = $dbh->connect($dsn, $dbuser, $dbpass) if $dbh; - } -} # load Prefixes dbg("loading prefixes ..."); @@ -464,7 +462,6 @@ Spot->init(); # initialise the protocol engine dbg("Start Protocol Engines ..."); DXProt->init(); -Aranea->init(); # put in a DXCluster node for us here so we can add users and take them away $routeroot = Route::Node->new($mycall, $version*100+5300, Route::here($main::me->here)|Route::conf($main::me->conf)); @@ -515,12 +512,18 @@ for (;;) { # do timed stuff, ongoing processing happens one a second if ($timenow != $systime) { - reap if $zombies; + reap() if $zombies; $systime = $timenow; + my $days = int ($systime / 86400); + if ($systime_days != $days) { + $systime_days = $days; + $systime_daystart = $days * 86400; + } + IsoTime::update($systime); DXCron::process(); # do cron jobs DXCommandmode::process(); # process ongoing command mode stuff + DXXml::process(); DXProt::process(); # process ongoing ak1a pcxx stuff - Aranea::process(); DXConnect::process(); DXMsg::process(); DXDb::process();