attempt to fix myalias/mycall external usurpation
[spider.git] / perl / RBN.pm
index 9d17d33bddfd597bf6318f0e1b2ec263d2f0cf8d..820f39cbb620d73cab33efaa54da2245edef0876 100644 (file)
@@ -172,9 +172,9 @@ sub start
        my $name = $user->{name};
                
        # log it
-       my $host = $self->{conn}->peerhost;
-       $host ||= "unknown";
-       $self->{hostname} = $host;
+       unless ($self->{hostname}) {
+               $self->{hostname} = $self->{conn}->peerhost || 'unknown';
+       }
 
        $self->{name} = $name ? $name : $call;
        $self->state('prompt');         # a bit of room for further expansion, passwords etc
@@ -194,7 +194,7 @@ sub start
        $self->{width} = 80 unless $self->{width} && $self->{width} > 80;
        $self->{consort} = $line;       # save the connection type
 
-       LogDbg('DXCommand', "$call connected from $self->{hostname}");
+       LogDbg('err', "$call connected from $self->{hostname}");
 
        # set some necessary flags on the user if they are connecting
        $self->{registered} = 1;
@@ -259,6 +259,14 @@ sub normal
                return;
        }
 
+       # is it 'baddx'
+       if ($DXProt::baddx->in($call)) {
+               dbg("RBN: Bad DX spot '$call', ignored");
+               dbg($line) if isdbg('nologchan');
+               return;
+       }
+
+       
        # remove all extraneous crap from the origin - just leave the base callsign
        my $norigin = basecall($origin);
        unless ($norigin) {
@@ -361,7 +369,7 @@ sub normal
                                                dbg("seeme: result '$buf'") if isdbg('seeme');
                                                $uchan->local_send('S', $buf);
                                        } else {
-                                               LogDbg("RBN Someone is playing silly persons $rcall is not a user and cannot do 'seeme', ignored and reset");
+                                               LogDbg('err',"RBN Someone is playing silly persons $rcall is not a user and cannot do 'seeme', ignored and reset");
                                                del_seeme($rcall);
                                        }
                                }
@@ -844,7 +852,7 @@ sub per_minute
                next unless $dxchan->is_rbn;
                dbg "RBN:STATS minute $dxchan->{call} raw: $dxchan->{noraw} retrieved spots: $dxchan->{norbn} delivered: $dxchan->{nospot} after filtering to users: " . scalar keys %{$dxchan->{nousers}} if isdbg('rbnstats');
                if ($dxchan->{noraw} == 0 && $dxchan->{lasttime} > 60) {
-                       LogDbg('RBN', "RBN: no input from $dxchan->{call}, disconnecting");
+                       LogDbg('err', "RBN: no input from $dxchan->{call}, disconnecting");
                        $dxchan->disconnect;
                }
                $dxchan->{noraw} = $dxchan->{norbn} = $dxchan->{nospot} = 0; $dxchan->{nousers} = {};
@@ -900,7 +908,10 @@ sub finish
 
 sub write_cache
 {
+       return unless $json;
+
        my $ta = [ gettimeofday ];
+       
        $json->indent(1)->canonical(1) if isdbg 'rbncache';
        my $s = eval {$json->encode($spots)};
        if ($s) {
@@ -980,7 +991,7 @@ sub del_seeme
        my $call = shift;
        my $base = basecall($call);
        my $ref = $seeme{$base};
-       return unless @$ref;
+       return unless $ref && @$ref;
        
        @$ref =  grep {$_ ne $call} @$ref;
        if (@$ref) {