staging init
[spider.git] / perl / DXProtHandle.pm
index a6668a36db0daeef1752d86b796d4dcaf7d82e18..efc6c159abd5414d5c3aff2b67abe3195a634870 100644 (file)
@@ -89,16 +89,6 @@ 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;
-               }
-       }
 
        # is it for me or one of mine?
        my ($from, $to, $via, $call, $dxchan);
@@ -133,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]));
@@ -213,10 +214,8 @@ sub handle_11
        }
 
        # is it 'baddx'
-       if ($baddx->in($pc->[2]) || (my @bad = BadWords::check($pc->[2]))) {
-               my $bw = join ', ', @bad;
-               $bw = qq{ '$bw'} if $bw;
-               dbg("PCPROT: Bad DX spot$bw, ignored");
+       if ($baddx->in($pc->[2])) {
+               dbg("PCPROT: Bad DX spot '$pc->[2]', ignored");
                return;
        }
 
@@ -227,15 +226,6 @@ sub handle_11
                dbg("PCPROT: useless 'BUSTED' spot") if isdbg('chanerr');
                return;
        }
-       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;
-               }
-       }
        
 
        my @spot = Spot::prepare($pc->[1], $pc->[2], $d, $pc->[5], $nossid, $pc->[7], $pc->[8]);
@@ -334,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,
@@ -448,16 +450,6 @@ sub handle_12
        # announce duplicate checking
        $pc->[3] =~ s/^\s+//;                   # remove leading blanks
 
-       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;
-               }
-       }
-
        # if this is a 'nodx' node then ignore it
        if ($badnode->in($pc->[5])) {
                dbg($line) if isdbg('nologchan');
@@ -481,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.]+$/){
@@ -2268,17 +2271,6 @@ 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)) {
-                       my $bw = join ', ', @bad;
-                       dbg($line) if isdbg('nologchan');
-                       dbg("PCPROT: Badwords: '$bw', dropped");
-                       return;
-               }
-       }
 
        # if this is a 'bad spotter' user then ignore it
        my $nossid = $from;
@@ -2295,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) {