X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=4142f043f3aa024c98e07f4f5aff57e993c2ddd0;hb=ff8c77ef8bad7d4ff4433ca233a1dc8f0203983d;hp=ff173906bebef9945743b6e5eeb089bca430a886;hpb=08c06444bb706e557a28f08ae7984ba2852ae720;p=spider.git diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index ff173906..4142f043 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -30,6 +30,8 @@ use AnnTalk; use WCY; use Sun; use Internet; +use Script; + use strict; use vars qw(%Cache %cmd_cache $errstr %aliases $scriptbase $maxerrors %nothereslug); @@ -75,6 +77,10 @@ sub start 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); @@ -96,6 +102,7 @@ sub start $self->{wx} = $user->wantwx; $self->{dx} = $user->wantdx; $self->{logininfo} = $user->wantlogininfo; + $self->{ann_talk} = $user->wantann_talk; $self->{here} = 1; # get the filters @@ -113,8 +120,6 @@ sub start $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"); @@ -123,7 +128,6 @@ sub start $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) { @@ -140,6 +144,12 @@ sub start run_cmd($DXProt::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; + + $self->prompt; } # @@ -701,6 +711,11 @@ sub announce 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;