X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=efc6c159abd5414d5c3aff2b67abe3195a634870;hb=400227d4bd709387099bf224b1c00a6f988c8196;hp=6ba38a430c4579bde302d0719116cc7e777dec06;hpb=ee55bc4f9cf0763f17c9698ab4c7d47a4e7008ce;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 6ba38a43..efc6c159 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -89,14 +89,6 @@ sub handle_10 return; } - # will we allow it at all? - if ($censorpc) { - my @bad; - if (@bad = BadWords::check($pc->[3])) { - dbg("PCPROT: Bad words: @bad, dropped") if isdbg('chanerr'); - return; - } - } # is it for me or one of mine? my ($from, $to, $via, $call, $dxchan); @@ -110,7 +102,8 @@ sub handle_10 # if this is a 'nodx' node then ignore it if ($badnode->in($pc->[6]) || ($via && $badnode->in($via))) { - dbg("PCPROT: Bad Node, dropped") if isdbg('chanerr'); + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Bad Node, dropped"); return; } @@ -118,7 +111,8 @@ sub handle_10 my $nossid = $from; $nossid =~ s/-\d+$//; if ($badspotter->in($nossid)) { - dbg("PCPROT: Bad Spotter, dropped") if isdbg('chanerr'); + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Bad Spotter, dropped"); return; } @@ -129,6 +123,17 @@ sub handle_10 return; } } + + # will we allow it at all? + if ($censorpc) { + my @bad; + if (@bad = BadWords::check($pc->[3])) { + my $bw = join ', ', @bad; + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Badwords: '$bw', dropped"); + return; + } + } # convert this to a PC93, coming from mycall with origin set and process it as such $main::me->normal(pc93($to, $from, $via, $pc->[3], $pc->[6])); @@ -163,18 +168,21 @@ sub handle_11 # is the spotted callsign blank? This should really be trapped earlier but it # could break other protocol sentences. Also check for lower case characters. if ($pc->[2] =~ /^\s*$/) { - dbg("PCPROT: blank callsign, dropped") if isdbg('chanerr'); + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: blank callsign, dropped"); return; } if ($pc->[2] =~ /[a-z]/) { - dbg("PCPROT: lowercase characters, dropped") if isdbg('chanerr'); + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: lowercase characters, dropped"); return; } # if this is a 'nodx' node then ignore it if ($badnode->in($pc->[7])) { - dbg("PCPROT: Bad Node $pc->[7], dropped") if isdbg('chanerr'); + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Bad Node $pc->[7], dropped"); return; } @@ -182,7 +190,8 @@ sub handle_11 my $nossid = $pc->[6]; $nossid =~ s/-\d+$//; if ($badspotter->in($nossid)) { - dbg("PCPROT: Bad Spotter $pc->[6], dropped") if isdbg('chanerr'); + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Bad Spotter $pc->[6], dropped"); return; } @@ -200,13 +209,13 @@ sub handle_11 my $d = cltounix($pc->[3], $pc->[4]); # bang out (and don't pass on) if date is invalid or the spot is too old (or too young) if (!$d || (($pcno == 11 || $pcno == 61) && ($d < $main::systime - $pc11_max_age || $d > $main::systime + 900))) { - dbg("PCPROT: Spot ignored, invalid date or out of range ($pc->[3] $pc->[4])\n") if isdbg('chanerr'); + dbg("PCPROT: Spot ignored, invalid date or out of range ($pc->[3] $pc->[4])\n"); return; } # is it 'baddx' - if ($baddx->in($pc->[2]) || BadWords::check($pc->[2])) { - dbg("PCPROT: Bad DX spot, ignored") if isdbg('chanerr'); + if ($baddx->in($pc->[2])) { + dbg("PCPROT: Bad DX spot '$pc->[2]', ignored"); return; } @@ -217,13 +226,6 @@ sub handle_11 dbg("PCPROT: useless 'BUSTED' spot") if isdbg('chanerr'); return; } - if ($censorpc) { - my @bad; - if (@bad = BadWords::check($pc->[5])) { - dbg("PCPROT: Bad words: @bad, dropped") if isdbg('chanerr'); - return; - } - } my @spot = Spot::prepare($pc->[1], $pc->[2], $d, $pc->[5], $nossid, $pc->[7], $pc->[8]); @@ -322,6 +324,18 @@ sub handle_11 } } +# we until here to do any censorship to try and reduce the amount of noise that repeated copies +# from other connected nodes cause + if ($censorpc) { + my @bad; + if (@bad = BadWords::check($pc->[5])) { + my $bw = join ', ', @bad; + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Badwords: '$bw', dropped"); + return; + } + } + # If is a new PC11, store it, releasing the one that is there (if any), # if a PC61 comes along then dump the stored PC11 # If there is a different PC11 stored, release that one and store this PC11 instead, @@ -436,17 +450,10 @@ sub handle_12 # announce duplicate checking $pc->[3] =~ s/^\s+//; # remove leading blanks - if ($censorpc) { - my @bad; - if (@bad = BadWords::check($pc->[3])) { - dbg("PCPROT: Bad words: @bad, dropped") if isdbg('chanerr'); - return; - } - } - # if this is a 'nodx' node then ignore it if ($badnode->in($pc->[5])) { - dbg("PCPROT: Bad Node, dropped") if isdbg('chanerr'); + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Bad Node, dropped"); return; } @@ -454,7 +461,8 @@ sub handle_12 my $nossid = $pc->[1]; $nossid =~ s/-\d+$//; if ($badspotter->in($nossid)) { - dbg("PCPROT: Bad Spotter, dropped") if isdbg('chanerr'); + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Bad Spotter, dropped"); return; } @@ -465,6 +473,17 @@ sub handle_12 return; } + if ($censorpc) { + my @bad; + if (@bad = BadWords::check($pc->[3])) { + my $bw = join ', ', @bad; + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Badwords: '$bw', dropped"); + return; + } + } + + my $dxchan; if ((($dxchan = DXChannel::get($pc->[2])) && $dxchan->is_user) || $pc->[4] =~ /^[\#\w.]+$/){ @@ -2252,21 +2271,13 @@ sub handle_93 my $s = "ANNTALK: $from\@$onode$vs -> $to '$text' route: $origin"; dbg($s); } - - # will we allow it at all? - if ($censorpc) { - my @bad; - if (@bad = BadWords::check($text)) { - dbg("PCPROT: Bad words: @bad, dropped") if isdbg('chanerr'); - return; - } - } # if this is a 'bad spotter' user then ignore it my $nossid = $from; $nossid =~ s/-\d+$//; if ($badspotter->in($nossid)) { - dbg("PCPROT: Bad Spotter, dropped") if isdbg('chanerr'); + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Bad Spotter, dropped"); return; } @@ -2276,6 +2287,17 @@ sub handle_93 return; } + # will we allow it at all? + if ($censorpc) { + my @bad; + if (@bad = BadWords::check($text)) { + my $bw = join ', ', @bad; + dbg($line) if isdbg('nologchan'); + dbg("PCPROT: Badwords: '$bw', dropped"); + return; + } + } + # if it is routeable then then treat it like a talk my $ref = Route::get($to); if ($ref) {