X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcluster.pl;h=0ed98e55b39ddd33926ec6dbcd8e3aa670b080f2;hb=81e9887d5b7cee45d2b810ab0f8f19d21f048eab;hp=308b1d90b987104618df84182a10399b6f94ea38;hpb=6f9f47b53d1b6c2a52722b525695fa1c03ab1ed7;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index 308b1d90..0ed98e55 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -59,6 +59,7 @@ use Geomag; use CmdAlias; use Filter; use Local; +use DXDb; use Fcntl ':flock'; use Carp qw(cluck); @@ -67,7 +68,7 @@ package main; @inqueue = (); # the main input queue, an array of hashes $systime = 0; # the time now (in seconds) -$version = "1.34"; # the version no of the software +$version = "1.35"; # the version no of the software $starttime = 0; # the starting time of the cluster $lockfn = "cluster.lock"; # lock file name @@ -147,6 +148,7 @@ sub rec # create the channel $dxchan = DXCommandmode->new($call, $conn, $user) if ($user->sort eq 'U'); $dxchan = DXProt->new($call, $conn, $user) if ($user->sort eq 'A'); + $dxchan = BBS->new($call, $conn, $user) if ($user->sort eq 'B'); die "Invalid sort of user on $call = $sort" if !$dxchan; } @@ -207,6 +209,10 @@ sub cease Msg->event_loop(1, 0.05); Msg->event_loop(1, 0.05); DXUser::finish(); + + # close all databases + DXDb::closeall; + dbg('chan', "DXSpider version $version ended"); Log('cluster', "DXSpider V$version stopped"); dbgclose(); @@ -241,9 +247,6 @@ sub process_inqueue # translate any crappy characters into hex characters if ($line =~ /[\x00-\x06\x08\x0a-\x1f\x7f-\xff]/o) { $line =~ s/([\x00-\x1f\x7f-\xff])/uc sprintf("%%%02x",ord($1))/eg; - ++$error; -# dbg('chan', "<- $sort $call **CRAP**: $line"); -# return; } # do the really sexy console interface bit! (Who is going to do the TK interface then?) @@ -255,13 +258,8 @@ sub process_inqueue $dxchan->start($line, $sort); } elsif ($sort eq 'I') { die "\$user not defined for $call" if !defined $user; - - if ($error) { - dbg('chan', "DROPPED with $error duff characters"); - } else { - # normal input - $dxchan->normal($line); - } + # normal input + $dxchan->normal($line); disconnect($dxchan) if ($dxchan->{state} eq 'bye'); } elsif ($sort eq 'Z') { disconnect($dxchan); @@ -353,6 +351,10 @@ DXMsg::clean_old(); print "reading cron jobs ...\n"; DXCron->init(); +# read in database descriptors +print "reading database descriptors ...\n"; +DXDb::load(); + # starting local stuff print "doing local initialisation ...\n"; eval { @@ -382,6 +384,7 @@ for (;;) { DXProt::process(); # process ongoing ak1a pcxx stuff DXConnect::process(); DXMsg::process(); + DXDb::process(); eval { Local::process(); # do any localised processing };