our $cldsecs; # the amount of cpu time any child processes have consumed
our $allowslashcall; # Allow / in connecting callsigns (ie PA0/G1TLH, or even PA0/G1TLH/2)
+our @localhost_names = qw(127.0.0.1 ::1); # all ip addresses that will need to be aliased below (ipv4 or ipv6)
+
+our $localhost_alias_ipv4; # these are the IPV4 & 6 aliases for localhost connected clients
+our $localhost_alias_ipv6; # for things (PC92, PC61 etc) that expose IP addresses. These *may*
+ # be set by Msg.pm stuff if they are left undefined but, if you need
+ # certanty then set/var them in the startup file.
+
+our $save_route_cache; # save and restore route cache on restart. Probably only useful for G1TLH testing
use vars qw($version $subversion $build $gitversion $gitbranch);
}
# now deal with the lock
+ my $host = $conn->peerhost;
if ($lock) {
- my $host = $conn->peerhost;
LogDbg('', "$call on $host is locked out, disconnected");
$conn->disconnect;
return;
}
+ # Is he from a badip?
+ if (DXCIDR::find($host)) {
+ LogDbg('', "$call on $host is from a badip $host, disconnected");
+ $conn->disconnect;
+ return;
+ }
+
# set up the basic channel info for "Normal" Users
# is there one already connected to me - locally?
# close all databases
DXDb::closeall;
+ # Write route cache
+ Route::write_cache() if $save_route_cache;
+
# close all listeners
foreach my $l (@listeners) {
$l->close_server;
AGWMsg::init(\&new_channel);
}
-
sub setup_start
{
#############################################################
Filter::init(); # doesn't do much, but has to be done
- AnnTalk::init(); # initialise announce cache
-
-
# look for the sysop and the alias user and complain if they aren't there
{
}
}
-
+ # read any route cache there might be
+ Route::read_cache() if $save_route_cache;
+
# start listening for incoming messages/connects
dbg("starting listeners ...");
my $conn = IntMsg->new_server($clusteraddr, $clusterport, \&login);
dbg("Read in Aliases");
CmdAlias->init();
- # initialise the Geomagnetic data engine
- dbg("Start WWV");
- Geomag->init();
- dbg("Start WCY");
- WCY->init();
-
# initialise the protocol engine
dbg("Start Protocol Engines ...");
DXProt->init();
my $script = new Script "startup";
$script->run($main::me) if $script;
+
+ # initialise the Geomagnetic data engine
+ dbg("Start WWV system");
+ Geomag->init();
+ dbg("Start WCY system");
+ WCY->init();
+ dbg("Start Announce and Talk system");
+ AnnTalk::init(); # initialise announce cache
+
+
# 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));
$routeroot->do_pc9x(1);
Spot->init();
# read in any existing message headers and clean out old crap
- dbg("reading existing message headers ...");
+ dbg("Reading existing Message/Bulletine headers ...");
DXMsg->init();
DXMsg::clean_old();
# read in any cron jobs
- dbg("reading cron jobs ...");
+ dbg("Reading cron jobs ...");
DXCron->init();
# read in database desriptors
- dbg("reading database descriptors ...");
+ dbg("Reading database descriptors ...");
DXDb::load();
- dbg("starting RBN ...");
+ dbg("Rtarting RBN ...");
RBN::init();
# starting local stuff
- dbg("doing local initialisation ...");
+ dbg("Starting DXQsl system");
QSL::init(1);
+
+ dbg("Ooing local initialisations ...");
if (defined &Local::init) {
eval {
Local::init();
# this, such as it is, is the main loop!
- dbg("orft we jolly well go ...");
+ dbg("Orft we jolly well go ...");
#open(DB::OUT, "|tee /tmp/aa");
}
sub per_10_minute
{
RBN::per_10_minute();
+ Route::write_cache() if $save_route_cache;
}
sub per_hour