# make sure that modules are searched in the order local then perl
BEGIN {
- unshift @INC, '/spider/perl'; # this IS the right way round!
- unshift @INC, '/spider/local';
+ # root of directory tree for this system
+ $root = "/spider";
+ $root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'};
+
+ unshift @INC, "$root/perl"; # this IS the right way round!
+ unshift @INC, "$root/local";
}
use Msg;
use DXM;
use DXCommandmode;
use DXProt;
+use DXMsg;
use DXCluster;
use DXDebug;
+use DXCron;
+use DXConnect;
use Prefix;
use Bands;
+use Geomag;
+use Carp;
package main;
@inqueue = (); # the main input queue, an array of hashes
$systime = 0; # the time now (in seconds)
+$version = 1.2; # the version no of the software
# handle disconnections
sub disconnect
{
my $dxchan = shift;
return if !defined $dxchan;
- my $user = $dxchan->{user};
- my $conn = $dxchan->{conn};
- $dxchan->finish();
- $user->close() if defined $user;
- $conn->disconnect() if defined $conn;
- $dxchan->del();
+ $dxchan->disconnect();
}
# handle incoming messages
$dxchan->start($line);
} elsif ($sort eq 'D') {
die "\$user not defined for $call" if !defined $user;
- $dxchan->normal($line);
+
+ # normal input
+ $dxchan->normal($line);
+
disconnect($dxchan) if ($dxchan->{state} eq 'bye');
} elsif ($sort eq 'Z') {
disconnect($dxchan);
}
STDOUT->autoflush(1);
+# banner
+print "DXSpider DX Cluster Version $version\nCopyright (c) 1998 Dirk Koopman G1TLH\n";
+
# load Prefixes
print "loading prefixes ...\n";
Prefix::load();
# initialise the protocol engine
DXProt->init();
+# initialise the Geomagnetic data engine
+Geomag->init();
+
+# initial the Spot stuff
+Spot->init();
+
+# put in a DXCluster node for us here so we can add users and take them away
+DXNode->new(0, $mycall, 0, 1, $DXProt::myprot_version);
+
+# read in any existing message headers
+print "reading existing message headers\n";
+DXMsg->init();
+
+# read in any cron jobs
+print "reading cron jobs\n";
+DXCron->init();
+
# this, such as it is, is the main loop!
print "orft we jolly well go ...\n";
for (;;) {
$ztime = &ztime();
DXCommandmode::process(); # process ongoing command mode stuff
DXProt::process(); # process ongoing ak1a pcxx stuff
+ DXCron::process();
+ DXConnect::process();
}
}