X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=6986a41aa60b1d8188dbc06d7ce4715a32eb35c1;hb=428e91daacae4fddcabc7e6279c1fbd40edbbe91;hp=96ccc0a494aa872575064fee0a22cee274ad30c9;hpb=3634fba90a64fe488d237f438d9945d81158da52;p=spider.git diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index 96ccc0a4..6986a41a 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -32,7 +32,7 @@ use Sun; use Internet; use strict; -use vars qw(%Cache %cmd_cache $errstr %aliases $scriptbase $maxerrors %nothereslug); +use vars qw(%Cache %cmd_cache $errstr %aliases $scriptbase $maxerrors %nothereslug $suppress_ann_to_talk); %Cache = (); # cache of dynamically loaded routine's mod times %cmd_cache = (); # cache of short names @@ -40,6 +40,8 @@ $errstr = (); # error string from eval %aliases = (); # aliases for (parts of) commands $scriptbase = "$main::root/scripts"; # the place where all users start scripts go $maxerrors = 20; # the maximum number of concurrent errors allowed before disconnection +$suppress_ann_to_talk = 1; # don't announce 'to ' or ' ' type announcements + use vars qw($VERSION $BRANCH); $VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); @@ -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); @@ -83,6 +89,8 @@ sub start $self->{lang} = $user->lang || $main::lang || 'en'; $self->{pagelth} = $user->pagelth || 20; $self->{priv} = 0 if $line =~ /^(ax|te)/; # set the connection priv to 0 - can be upgraded later + ($self->{width}) = $line =~ /width=(\d+)/; + $self->{width} = 80 unless $self->{width} && $self->{width} > 80; $self->{consort} = $line; # save the connection type # set some necessary flags on the user if they are connecting @@ -111,8 +119,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"); @@ -423,6 +429,9 @@ sub disconnect { my $self = shift; my $call = $self->call; + + return if $self->{disconnecting}++; + delete $self->{senddbg}; my $uref = Route::User::get($call); @@ -696,6 +705,11 @@ sub announce my $text = shift; my ($filter, $hops); + if ($suppress_ann_to_talk) { + my ($to, $call) = $text =~ /^\s*([\w-]+)[\s:]+([\w-]+)/; + return if ($to && $call && ((uc $to =~ /^TO?$/ && is_callsign(uc $call)) || is_callsign($call = uc $to))); + } + if ($self->{annfilter}) { ($filter, $hops) = $self->{annfilter}->it(@_ ); return unless $filter;