X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcluster.pl;h=2510c940cd5bfdc107ce2d5dac415628a1887fe3;hb=a472851a7e290dac262131fd7f73b567332df6e4;hp=eea057db5c8efe318e11f6ce0c4e867a21e88de7;hpb=5b3c2c5e342c23fbab96b7573c5963344617878f;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index eea057db..2510c940 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -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 + $allowdxby $dbh $dsn $dbuser $dbpass ); @inqueue = (); # the main input queue, an array of hashes $systime = 0; # the time now (in seconds) -$version = "2.01"; # the version no of the software +$version = "1.52"; # the version no of the software $starttime = 0; # the starting time of the cluster #@outstanding_connects = (); # list of outstanding connects @listeners = (); # list of listeners @@ -172,13 +172,13 @@ sub new_channel # set up the basic channel info # is there one already connected to me - locally? my $user = DXUser->get_current($call); - my $dxchan = DXChannel->get($call); + my $dxchan = DXChannel::get($call); if ($dxchan) { if ($user && $user->is_node) { already_conn($conn, $call, DXM::msg($lang, 'concluster', $call, $main::mycall)); return; } - if ($bumpexisting && $call ne $main::mycall) { + 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"); @@ -254,13 +254,13 @@ sub cease dbg("Local::finish error $@") if $@; # disconnect nodes - foreach $dxchan (DXChannel->get_all_nodes) { + foreach $dxchan (DXChannel::get_all_nodes) { $dxchan->disconnect(2) unless $dxchan == $main::me; } Msg->event_loop(100, 0.01); # disconnect users - foreach $dxchan (DXChannel->get_all_users) { + foreach $dxchan (DXChannel::get_all_users) { $dxchan->disconnect; } @@ -287,6 +287,9 @@ sub cease Log('cluster', "DXSpider V$version, build $build ended"); dbgclose(); Logclose(); + + $dbh->finish if $dbh; + unlink $lockfn; # $SIG{__WARN__} = $SIG{__DIE__} = sub {my $a = shift; cluck($a); }; exit(0); @@ -346,9 +349,21 @@ $build = "$build.$branch" if $branch; Log('cluster', "DXSpider V$version, build $build started"); # banner -dbg("Copyright (c) 1998-2002 Dirk Koopman G1TLH"); +my ($year) = (gmtime)[5]; +$year += 1900; +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, $dbuser, $dbpass); + } +} + # load Prefixes dbg("loading prefixes ..."); dbg(USDB::init()); @@ -448,7 +463,7 @@ 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+5251, Route::here($main::me->here)|Route::conf($main::me->conf)); +$routeroot = Route::Node->new($mycall, $version*100+5300, Route::here($main::me->here)|Route::conf($main::me->conf)); # make sure that there is a routing OUTPUT node default file #unless (Filter::read_in('route', 'node_default', 0)) { @@ -491,13 +506,11 @@ for (;;) { my $timenow = time; DXChannel::process(); - Thingy::process(); # $DB::trace = 0; # do timed stuff, ongoing processing happens one a second if ($timenow != $systime) { - rand(); # keep randomising to reduce (but not eliminate) predictability reap if $zombies; $systime = $timenow; DXCron::process(); # do cron jobs