X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FRBN.pm;h=820f39cbb620d73cab33efaa54da2245edef0876;hb=5094a0b55d903d344277adf9d26b5af8e37247d8;hp=9d17d33bddfd597bf6318f0e1b2ec263d2f0cf8d;hpb=a152a2950881b694b5bc75fbc0cb4a1677243b81;p=spider.git diff --git a/perl/RBN.pm b/perl/RBN.pm index 9d17d33b..820f39cb 100644 --- a/perl/RBN.pm +++ b/perl/RBN.pm @@ -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) {