use WCY;
use Sun;
use Internet;
+use Script;
+
use strict;
use vars qw(%Cache %cmd_cache $errstr %aliases $scriptbase $maxerrors %nothereslug);
my $pkg = shift;
my $call = shift;
my @rout = $main::routeroot->add_user($call, Route::here(1));
- DXProt::route_pc16($DXProt::me, $main::routeroot, @rout) if @rout;
+ DXProt::route_pc16($main::me, $main::routeroot, @rout) if @rout;
return $self;
}
my $call = $self->{call};
my $name = $user->{name};
+ # log it
+ my $host = $self->{conn}->{peerhost} || "unknown";
+ Log('DXCommand', "$call connected from $host");
+
$self->{name} = $name ? $name : $call;
$self->send($self->msg('l2',$self->{name}));
$self->send_file($main::motd) if (-e $main::motd);
$self->{wx} = $user->wantwx;
$self->{dx} = $user->wantdx;
$self->{logininfo} = $user->wantlogininfo;
+ $self->{ann_talk} = $user->wantann_talk;
$self->{here} = 1;
# get the filters
$user->qra(DXBearing::lltoqra($lat, $long)) if (defined $lat && defined $long);
}
- Log('DXCommand', "$call connected");
-
- # send prompts and things
- my $info = Route::cluster();
- $self->send("Cluster:$info");
- $self->send($self->msg('namee1')) if !$user->name;
- $self->send($self->msg('qthe1')) if !$user->qth;
- $self->send($self->msg('qll')) if !$user->qra || (!$user->lat && !$user->long);
- $self->send($self->msg('hnodee1')) if !$user->qth;
- $self->send($self->msg('m9')) if DXMsg::for_me($call);
- $self->prompt;
-
# decide on echo
if (!$user->wantecho) {
$self->send_now('E', "0");
my $lastoper = $user->lastoper || 0;
my $homenode = $user->homenode || "";
if ($homenode eq $main::mycall && $lastoper + $DXUser::lastoperinterval < $main::systime) {
- run_cmd($DXProt::me, "forward/opernam $call");
+ run_cmd($main::me, "forward/opernam $call");
$user->lastoper($main::systime);
}
+
+ # run a script send the output to the punter
+ my $script = new Script(lc $call) || new Script('user_default');
+ $script->run($self) if $script;
+
+ # send cluster info
+ my $info = Route::cluster();
+ $self->send("Cluster:$info");
+
+ # send prompts and things
+ $self->send($self->msg('namee1')) if !$user->name;
+ $self->send($self->msg('qthe1')) if !$user->qth;
+ $self->send($self->msg('qll')) if !$user->qra || (!$user->lat && !$user->long);
+ $self->send($self->msg('hnodee1')) if !$user->qth;
+ $self->send($self->msg('m9')) if DXMsg::for_me($call);
+ $self->prompt;
}
#
{
my $self = shift;
my $call = $self->call;
+
+ return if $self->{disconnecting}++;
+
delete $self->{senddbg};
my $uref = Route::User::get($call);
}
# issue a pc17 to everybody interested
- DXProt::route_pc17($DXProt::me, $main::routeroot, @rout) if @rout;
+ DXProt::route_pc17($main::me, $main::routeroot, @rout) if @rout;
# I was the last node visited
$self->user->node($main::mycall);
my $text = shift;
my ($filter, $hops);
+ if (!$self->{ann_talk} && $to ne $self->{call}) {
+ my $call = AnnTalk::is_talk_candidate($_[0], $text);
+ return if $call;
+ }
+
if ($self->{annfilter}) {
($filter, $hops) = $self->{annfilter}->it(@_ );
return unless $filter;