fix badspotters being able to send dx spots.
add LogDbg() routine to both log and dbg at the same time (at last).
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=======================================================================
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, ());
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");
}
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?
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;
return (1, $self->msg('dup')) if Spot::dup($freq, $spotted, $t, $line, $spotter);
my @spot = Spot::prepare($freq, $spotted, $t, $line, $spotter, $main::mycall);
-if ($DXProt::baddx->in($spotted) || $freq =~ /^69/ || $localonly) {
+if ($freq =~ /^69/ || $localonly) {
# heaven forfend that we get a 69Mhz band :-)
if ($freq =~ /^69/) {
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;
}
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);
# 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;
}
require Exporter;
@ISA = qw(Exporter);
-@EXPORT = qw(Log Logclose);
+@EXPORT = qw(Log LogDbg Logclose);
use IO::File;
use DXVars;
$log->writeunix($t, join('^', $t, @_) );
}
+sub LogDbg
+{
+ DXDebug::dbg($_[$#_]);
+ Log(@_);
+}
+
sub Logclose
{
$log->close();
}
# check the message for bad words
+ my @bad;
my @words;
+ @bad = BadWords::check($ref->{subject});
+ push @words, [$ref->{subject}, @bad] if @bad;
for (@{$ref->{lines}}) {
- push @words, BadWords::check($_);
+ @bad = BadWords::check($_);
+ push @words, [$_, @bad] if @bad;
}
- push @words, BadWords::check($ref->{subject});
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}");
- 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;