package main;
require 5.10.1;
+
use warnings;
use vars qw($root $is_win $systime $lockfn @inqueue $starttime $lockfn @outstanding_connects
# make sure that modules are searched in the order local then perl
BEGIN {
umask 002;
-
+ $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN };
+
# take into account any local::lib that might be present
eval {
require local::lib;
};
- import local::lib unless ($@);
+ unless ($@) {
+# import local::lib;
+ import local::lib qw(/spider/perl5lib);
+ }
# root of directory tree for this system
$root = "/spider";
$root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'};
+ unshift @INC, "$root/perl5lib" unless grep {$_ eq "$root/perl5lib"} @INC;
unshift @INC, "$root/perl"; # this IS the right way round!
unshift @INC, "$root/local";
use DXVars;
use SysVar;
-use strict;
-
# order here is important - DXDebug snarfs Carp et al so that Mojo errors go into the debug log
-use DXDebug;
-
use Mojolicious 7.26;
use Mojo::IOLoop;
+$DOWARN = 1;
+use DXDebug;
use Msg;
use IntMsg;
use Internet;
use DXSql;
use IsoTime;
use BPQMsg;
-
+use RBN;
use Data::Dumper;
use vars qw($version $build $gitversion $gitbranch);
+use strict;
+
use Local;
our $broadcast_debug; # allow broadcasting of debug info down "enhanced" user connections
our $clssecs; # the amount of cpu time the DXSpider process have consumed
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)
# send a message to call on conn and disconnect
$user->long($main::mylongitude);
$user->qra($main::mylocator);
}
- $user->startt($main::systime);
+ $user->startt($main::systime);
$conn->conns($call);
$dxchan = Web->new($call, $conn, $user);
$dxchan->enhanced(1);
# is he locked out ?
$user = DXUser::get_current($call);
+ $conn->conns($call);
my $basecall = $call;
$basecall =~ s/-\d+$//; # remember this for later multiple user processing
my $lock;
$user->startt($systime); # mark the start time of this connection
if ($user->is_node) {
- $dxchan = DXProt->new($call, $conn, $user);
+ $dxchan = DXProt->new($call, $conn, $user);
+ } elsif ($user->is_rbn) {
+ $dxchan = RBN->new($newcall, $conn, $user);
} elsif ($user->is_user) {
$dxchan = DXCommandmode->new($newcall, $conn, $user);
} else {
UDPMsg::finish();
# end everything else
+ RBN::finish();
DXUser::finish();
DXDupe::finish();
}
STDOUT->autoflush(1);
+ # log our path
+ dbg "Perl path: " . join(':', @INC);
# try to load the database
if (DXSql::init($dsn)) {
if ($desc) {
my ($v, $s, $b, $g) = $desc =~ /^([\d.]+)(?:\.(\d+))?-(\d+)-g([0-9a-f]+)/;
$s ||= '';
- dbg("Git: $desc");
- dbg("Git: V=$v S=$s B=$b g=$g");
+ dbg("Git: $desc") if isdbg('git');
+ dbg("Git: V=$v S=$s B=$b g=$g") if isdbg('git');
$version = $v;
$build = $b || 0;
$gitversion = "$g\[r]";
dbg("loading user file system ...");
DXUser::init(4); # version 4 == json format
+ Filter::init(); # doesn't do much, but has to be done
+
+
# look for the sysop and the alias user and complain if they aren't there
{
die "\$myalias \& \$mycall are the same ($mycall)!, they must be different (hint: make \$mycall = '${mycall}-2';). Oh and don't forget to rerun create_sysop.pl!" if $mycall eq $myalias;
my $oldsort = $ref->sort;
if ($oldsort ne 'S') {
$ref->sort('S');
- dbg "Resetting node type from $oldsort -> DXSpider ('S')";
+ dbg("Resetting node type from $oldsort -> DXSpider ('S')");
}
$ref = DXUser::get($myalias);
die "$myalias missing, run the create_sysop.pl script and please RTFM" unless $ref && $ref->priv == 9;
$oldsort = $ref->sort;
if ($oldsort ne 'U') {
$ref->sort('U');
- dbg "Resetting sysop user type from $oldsort -> User ('U')";
+ dbg("Resetting sysop user type from $oldsort -> User ('U')");
}
}
dbg("reading database descriptors ...");
DXDb::load();
+ dbg("starting RBN ...");
+ RBN::init();
+
# starting local stuff
dbg("doing local initialisation ...");
QSL::init(1);
IsoTime::update($systime);
DXCommandmode::process(); # process ongoing command mode stuff
DXProt::process(); # process ongoing ak1a pcxx stuff
- DXCron::process(); # do cron jobs
DXXml::process();
DXConnect::process();
DXMsg::process();
DXDb::process();
DXUser::process();
DXDupe::process();
- DXCron::process(); # do cron jobs
IsoTime::update($systime);
DXConnect::process();
DXUser::process();
AGWMsg::process();
-
+ DXCron::process(); # do cron jobs
+ RBN::process();
+
Timer::handler();
DXLog::flushall();
}
}
-
sub per_minute
{
-
+ RBN::per_minute();
}
sub per_10_minute
{
-
+ RBN::per_10_minute();
}
sub per_hour
{
-
+ RBN::per_hour();
}
sub per_day