fix swearing logging so that it is better.
authorminima <minima>
Sat, 7 Jan 2006 16:53:03 +0000 (16:53 +0000)
committerminima <minima>
Sat, 7 Jan 2006 16:53:03 +0000 (16:53 +0000)
fix badspotters being able to send dx spots.
add LogDbg() routine to both log and dbg at the same time (at last).

Changes
cmd/announce.pl
cmd/chat.pl
cmd/dx.pl
cmd/talk.pl
perl/DXCommandmode.pm
perl/DXLog.pm
perl/DXMsg.pm

diff --git a/Changes b/Changes
index 7a72d80729fbf88c55d4487c5ddbaa38b0dc2a81..fdc6451020fecdb462964d6a9f010d0560f6b412 100644 (file)
--- a/Changes
+++ b/Changes
@@ -2,6 +2,10 @@
 1. Fixed problem with the standalone 'showdx' program pointed out by Leo,
 IZ5FSA.
 2. Fixed rounding problem on entering spots as pointed out by Ron N5IN.
 1. Fixed problem with the standalone 'showdx' program pointed out by Leo,
 IZ5FSA.
 2. Fixed rounding problem on entering spots as pointed out by Ron N5IN.
+3. Fixed problem with badspotters sending DX as pointed out by Luigi IK5ZUK.
+4. Added some extra logging for swearing so that we can see what lines used
+which swear words. Hopefully this will allow sysops to refine their swearing 
+filters more easily. 
 06Jan06=======================================================================
 1. Fix problem with rcmd <call> sh/fdx
 27Dec05=======================================================================
 06Jan06=======================================================================
 1. Fix problem with rcmd <call> sh/fdx
 27Dec05=======================================================================
index 5e0ff58c998c4c1c440d3a6a66ac66d0698ae4e8..9a1cbd376b2dcc13700351e14774867b939878e7 100644 (file)
@@ -51,7 +51,7 @@ $line =~ s/\^/:/og;
 my @bad;
 if (@bad = BadWords::check($line)) {
        $self->badcount(($self->badcount||0) + @bad);
 my @bad;
 if (@bad = BadWords::check($line)) {
        $self->badcount(($self->badcount||0) + @bad);
-       Log('DXCommand', "$self->{call} swore: $line");
+       LogDbg('DXCommand', "$self->{call} swore: $line (with words:" . join(',', @bad) . ")");
        Log('ann', $to, $from, "[to $from only] $line");
        $self->send("To $to de $from <$t>: $line");
        return (1, ());
        Log('ann', $to, $from, "[to $from only] $line");
        $self->send("To $to de $from <$t>: $line");
        return (1, ());
index cace4508250816edf5eae169ffcedd554e8dfe5d..41cbb5caba4b9cde16abe870507f83e6fc310460 100644 (file)
@@ -29,7 +29,7 @@ $line =~ s/\^/:/og;
 my @bad;
 if (@bad = BadWords::check($line)) {
        $self->badcount(($self->badcount||0) + @bad);
 my @bad;
 if (@bad = BadWords::check($line)) {
        $self->badcount(($self->badcount||0) + @bad);
-       Log('DXCommand', "$self->{call} swore: $line");
+       LogDbg('DXCommand', "$self->{call} swore: $line (with words:" . join(',', @bad) . ")");
        Log('chat', $target, $from, "[to $from only] $line");
        return (1, "$target de $from <$t>: $line");
 }
        Log('chat', $target, $from, "[to $from only] $line");
        return (1, "$target de $from <$t>: $line");
 }
index 7ab6cce2e4d27ae2422cced80993092381f497d1..9454fd702d1f4b2843ef9aa4f931620f068e7142 100644 (file)
--- a/cmd/dx.pl
+++ b/cmd/dx.pl
@@ -22,8 +22,8 @@ return (1, $self->msg('e28')) unless $self->registered;
 my @bad;
 if (@bad = BadWords::check($line)) {   
        $self->badcount(($self->badcount||0) + @bad);
 my @bad;
 if (@bad = BadWords::check($line)) {   
        $self->badcount(($self->badcount||0) + @bad);
-       Log('DXCommand', "$self->{call} swore: $line");
-       $localonly++;
+       LogDbg('DXCommand', "$self->{call} swore: $line (with words:" . join(',', @bad) . ")");
+       $localonly++; 
 }
 
 # do we have at least two args?
 }
 
 # do we have at least two args?
@@ -53,6 +53,24 @@ if (is_freq($f[1]) && $f[0] =~ m{^[\w\d]+(?:/[\w\d]+){0,2}$}) {
        return (1, $self->msg('dx3'));
 }
 
        return (1, $self->msg('dx3'));
 }
 
+# check some other things
+# remove ssid from calls
+my $callnoid = $self->call;
+$callnoid =~ s/-\d+$//;
+my $spotternoid = $spotter;
+$spotternoid =~ s/-\d+$//;
+if ($DXProt::baddx->in($spotted)) {
+       $localonly++; 
+}
+if ($DXProt::badspotter->in($callnoid)) { 
+       LogDbg('DXCommand', "$self->{call} badspotter with $callnoid ($line)");
+       $localonly++; 
+}
+if ($callnoid ne $spotternoid && $DXProt::badspotter->in($spotternoid)) { 
+       LogDbg('DXCommand', "$self->{call} badspotter with $spotternoid ($line)");
+       $localonly++; 
+}
+
 # make line the rest of the line
 $line = $f[2] || " ";
 @f = split /\s+/, $line;
 # make line the rest of the line
 $line = $f[2] || " ";
 @f = split /\s+/, $line;
@@ -104,20 +122,28 @@ return (1, @out) unless $valid;
 
 # Store it here (but only if it isn't baddx)
 my $t = (int ($main::systime/60)) * 60;
 
 # Store it here (but only if it isn't baddx)
 my $t = (int ($main::systime/60)) * 60;
+return (1, $self->msg('dup')) if Spot::dup($freq, $spotted, $t, $line, $spotter);
 my @spot = Spot::prepare($freq, $spotted, $t, $line, $spotter, $main::mycall);
 my @spot = Spot::prepare($freq, $spotted, $t, $line, $spotter, $main::mycall);
-my $thing = Thingy::Dx->new(user=>$spotter);
-$thing->from_DXProt(spotdata=>\@spot);
 
 
-if ($DXProt::baddx->in($spotted) || $freq =~ /^69/ || $localonly) {
+if ($freq =~ /^69/ || $localonly) {
 
        # heaven forfend that we get a 69Mhz band :-)
        if ($freq =~ /^69/) {
                $self->badcount(($self->badcount||0) + 1);
        }
 
        # heaven forfend that we get a 69Mhz band :-)
        if ($freq =~ /^69/) {
                $self->badcount(($self->badcount||0) + 1);
        }
+
+       $self->dx_spot(undef, undef, @spot);
+       return (1);
 } else {
 } else {
-       $thing->queue($self);
+       if (@spot) {
+               # store it 
+               Spot::add(@spot);
+
+               # send orf to the users
+               DXProt::send_dx_spot($self, DXProt::pc11($spotter, $freq, $spotted, $line), @spot);
+       }
 }
 }
-push @out, $thing->gen_DXCommandmode($self);
+
 return (1, @out);
 
 
 return (1, @out);
 
 
index 2815ad39c710896b82e72e0a04575b7b14686b7b..66d3cd2c72dd5d2152a5921784a4749aaeaaea70 100644 (file)
@@ -42,7 +42,7 @@ if ($line) {
        my @bad;
        if (@bad = BadWords::check($line)) {
                $self->badcount(($self->badcount||0) + @bad);
        my @bad;
        if (@bad = BadWords::check($line)) {
                $self->badcount(($self->badcount||0) + @bad);
-               Log('DXCommand', "$self->{call} swore: $line");
+               LogDbg('DXCommand', "$self->{call} swore: $line (with words:" . join(',', @bad) . ")");
        } else {
                $dxchan->talk($self->call, $to, $via, $line) if $dxchan;
        }
        } else {
                $dxchan->talk($self->call, $to, $via, $line) if $dxchan;
        }
index 04a1b2866e850daf066562cc469456f2f5a7fc4d..29840c410e4c788359f97cbe26780dce0ce0519d 100644 (file)
@@ -311,7 +311,7 @@ sub normal
                        my @bad;
                        if (@bad = BadWords::check($cmdline)) {
                                $self->badcount(($self->badcount||0) + @bad);
                        my @bad;
                        if (@bad = BadWords::check($cmdline)) {
                                $self->badcount(($self->badcount||0) + @bad);
-                               Log('DXCommand', "$self->{call} swore: $cmdline");
+                               LogDbg('DXCommand', "$self->{call} swore: $cmdline with words:" . join(',', @bad) . ")");
                        } else {
                                for (@{$self->{talklist}}) {
                                        $self->send_talks($_, $rawline);
                        } else {
                                for (@{$self->{talklist}}) {
                                        $self->send_talks($_, $rawline);
@@ -343,7 +343,7 @@ sub normal
 
        # check for excessive swearing
        if ($self->{badcount} && $self->{badcount} >= $maxbadcount) {
 
        # check for excessive swearing
        if ($self->{badcount} && $self->{badcount} >= $maxbadcount) {
-               Log('DXCommand', "$self->{call} logged out for excessive swearing");
+               LogDbg('DXCommand', "$self->{call} logged out for excessive swearing");
                $self->disconnect;
                return;
        }
                $self->disconnect;
                return;
        }
index 2a2e9078d7f9cf2a1883aee172f4b45c421b02ae..785483533c562f50dfc438e30ecfebfda9cf024b 100644 (file)
@@ -27,7 +27,7 @@ package DXLog;
 
 require Exporter;
 @ISA = qw(Exporter);
 
 require Exporter;
 @ISA = qw(Exporter);
-@EXPORT = qw(Log Logclose);
+@EXPORT = qw(Log LogDbg Logclose);
 
 use IO::File;
 use DXVars;
 
 use IO::File;
 use DXVars;
@@ -39,7 +39,10 @@ use Carp;
 use strict;
 
 use vars qw($VERSION $BRANCH);
 use strict;
 
 use vars qw($VERSION $BRANCH);
-main::mkver($VERSION = q$Revision$) if main->can('mkver');
+$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
+$main::build += $VERSION;
+$main::branch += $BRANCH;
 
 use vars qw($log);
 
 
 use vars qw($log);
 
@@ -201,6 +204,12 @@ sub Log
        $log->writeunix($t, join('^', $t, @_) );
 }
 
        $log->writeunix($t, join('^', $t, @_) );
 }
 
+sub LogDbg
+{
+       DXDebug::dbg($_[$#_]);
+       Log(@_);
+}
+
 sub Logclose
 {
        $log->close();
 sub Logclose
 {
        $log->close();
index 5190b6b6cc49dd3ac5e9b1e66eeb2efa85e04616..f4a1b7aba0e66dd6818d288e1e229b90d03a30b3 100644 (file)
@@ -33,8 +33,10 @@ eval {
 use strict;
 
 use vars qw($VERSION $BRANCH);
 use strict;
 
 use vars qw($VERSION $BRANCH);
-
-main::mkver($VERSION = q$Revision$);
+$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
+$main::build += $VERSION;
+$main::branch += $BRANCH;
 
 use vars qw(%work @msg $msgdir %valid %busy $maxage $last_clean $residencetime
                        @badmsg @swop $swopfn $badmsgfn $forwardfn @forward $timeout $waittime
 
 use vars qw(%work @msg $msgdir %valid %busy $maxage $last_clean $residencetime
                        @badmsg @swop $swopfn $badmsgfn $forwardfn @forward $timeout $waittime
@@ -344,17 +346,22 @@ sub handle_32
                                }
 
                                # check the message for bad words 
                                }
 
                                # check the message for bad words 
+                               my @bad;
                                my @words;
                                my @words;
+                               @bad = BadWords::check($ref->{subject});
+                               push @words, [$ref->{subject}, @bad] if @bad; 
                                for (@{$ref->{lines}}) {
                                for (@{$ref->{lines}}) {
-                                       push @words, BadWords::check($_);
+                                       @bad = BadWords::check($_);
+                                       push @words, [$_, @bad] if @bad;
                                }
                                }
-                               push @words, BadWords::check($ref->{subject});
                                if (@words) {
                                if (@words) {
-                                       dbg("$ref->{from} swore: '@words' -> $ref->{to} '$ref->{subject}' origin: $ref->{origin} via " . $dxchan->call) if isdbg('msg');
-                                       Log('msg',"$ref->{from} swore: '@words' -> $ref->{to} origin: $ref->{origin} via " . $dxchan->call);
+                                       dbg("$ref->{from} swore: $ref->{to} '$ref->{subject}' origin: $ref->{origin} via " . $dxchan->call) if isdbg('msg');
+                                       Log('msg',"$ref->{from} swore: $ref->{to} origin: $ref->{origin} via " . $dxchan->call);
+                                   dbg("subject: $ref->{subject}");
                                        Log('msg',"subject: $ref->{subject}");
                                        Log('msg',"subject: $ref->{subject}");
-                                       for (@{$ref->{lines}}) {
-                                               Log('msg', "line: $_");
+                                       for (@words) {
+                                               dbg("line: $_->[0] (using words: ". join(',',@{$_->[1]}).")");
+                                               Log('msg', "line: $_->[0] (using words: ". join(',',@{$_->[1]}).")");
                                        }
                                        $ref->stop_msg($fromnode);
                                        return;
                                        }
                                        $ref->stop_msg($fromnode);
                                        return;