removed the ability for bad people to search the bad word space.
+09Oct01=======================================================================
+1. change Aliases to allow shutdown as a command again. If you have changed
+/spider/cmd/Aliases and you update from CVS you may find it better to remove
+this file and then do another 'cvs update'. Otherwise you may get conflicts
+and the Aliase file will not load properly. The cvs update will recreate
+the (now) missing file.
+2. Remove the 'please don't use XXXX on here' messages to prevent people
+from exploring the 'bad words space'. Three bad words will still disconnect
+without warning.
+3. Sending dx spots/announces with bad words will succeed - but only back to
+the sender. These two mods are designed to annoy the perpitrators of the
+sort of filth as much as possible whilst not inconveniencing 'normal' users.
04Oct01=======================================================================
1. allow a residence time of (default) 2 days before actually deleting a msg.
2. reduce the number R: lines on a bull from a bbs to 2 (the origin and the
'^rcmd/(\S+)', 'rcmd $1', 'rcmd',
],
's' => [
- '^set$', 'apropos set', 'apropos',
- '^sh\w*$', 'apropos show', 'apropos',
- '^st\w*$', 'apropos show', 'apropos',
'^s/p$', 'send', 'send',
'^sb$', 'send noprivate', 'send',
'^set/home$', 'set/homenode', 'set/homenode',
'^set/nota', 'unset/talk', 'unset/talk',
'^set/noww', 'unset/wwv', 'unset/wwv',
'^set/nowx', 'unset/wx', 'unset/wx',
+ '^set$', 'apropos set', 'apropos',
'^sh$', 'show', 'show',
'^sh\w*/u$', 'show/user', 'show/user',
'^sh\w*/bu', 'show/files bulletins', 'show/files',
'^sh\w*/up', 'show/cluster', 'show/cluster',
'^sh\w*/w\w*/(\d+)-(\d+)', 'show/wwv $1-$2', 'show/wwv',
'^sh\w*/w\w*/(\d+)', 'show/wwv $1', 'show/wwv',
+ '^shu\w*$', 'shutdown', 'shutdown',
+ '^sh\w*$', 'apropos show', 'apropos',
'^sp$', 'send', 'send',
+ '^st\w*$', 'apropos stat', 'apropos',
],
't' => [
my @bad;
if (@bad = BadWords::check($line)) {
$self->badcount(($self->badcount||0) + @bad);
- return (1, $self->msg('e17', @bad));
+ Log('DXCommand', "$self->{call} swore: $line");
+ Log('ann', $to, $from, "[to $from only] $line");
+ $self->send("To $to de $from <$t>: $line");
+ return (1, ());
}
return (1, $self->msg('dup')) if AnnTalk::dup($from, $toflag, $line);
my $freq;
my @out;
my $valid = 0;
+my $localonly;
return (1, $self->msg('e5')) if $self->remotecmd;
my @bad;
if (@bad = BadWords::check($line)) {
$self->badcount(($self->badcount||0) + @bad);
- return (1, $self->msg('e17', @bad));
+ Log('DXCommand', "$self->{call} swore: $line");
+ $localonly++;
}
# do we have at least two args?
# Store it here (but only if it isn't baddx)
-if ($DXProt::baddx->in($spotted) || $freq =~ /^69/) {
+if ($DXProt::baddx->in($spotted) || $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);
- return (1, $self->msg('e17', @bad));
+ Log('DXCommand', "$self->{call} swore: $line");
+ } else {
+ $dxchan->talk($self->call, $to, $via, $line) if $dxchan;
}
- $dxchan->talk($self->call, $to, $via, $line) if $dxchan;
} else {
my $s = $to;
$s .= ">$via" if $via;
metric => '1,Route metric',
badcount => '1,Bad Word Count',
edit => '7,Edit Function',
+ registered => '9,Registered?,yesno',
);
use vars qw($VERSION $BRANCH);
$self->send($self->talk_prompt);
} elsif ($self->{talklist} && @{$self->{talklist}}) {
# send what has been said to whoever is in this person's talk list
- for (@{$self->{talklist}}) {
- $self->send_talks($_, $cmdline);
+ my @bad;
+ if (@bad = BadWords::check($cmdline)) {
+ $self->badcount(($self->badcount||0) + @bad);
+ Log('DXCommand', "$self->{call} swore: $cmdline");
+ } else {
+ for (@{$self->{talklist}}) {
+ $self->send_talks($_, $cmdline);
+ }
}
$self->send($self->talk_prompt) if $self->{state} eq 'talk';
} else {
}
push @words, BadWords::check($ref->{subject});
if (@words) {
- dbg("message with badwords '@words' $ref->{from} -> $ref->{to} '$ref->{subject}' origin: $ref->{origin} via " . $self->call) if isdbg('msg');
- Log('msg',"message with badwords '@words' $ref->{from} -> $ref->{to} origin: $ref->{origin} via " . $self->call);
+ dbg("$ref->{from} swore: '@words' -> $ref->{to} '$ref->{subject}' origin: $ref->{origin} via " . $self->call) if isdbg('msg');
+ Log('msg',"$ref->{from} swore: '@words' -> $ref->{to} origin: $ref->{origin} via " . $self->call);
Log('msg',"subject: $ref->{subject}");
for (@{$ref->{lines}}) {
Log('msg', "line: $_");
$self->{delete}++;
$self->{deletetime} = 0;
} else {
- my $call;
- if ($dxchan) {
- $call = " by " . $dxchan->call;
- } else {
- $call = '';
- }
-
# remove it from the active message list
@msg = grep { $_ != $self } @msg;
+
+ my $call = '';
+ $call = ' by ' . $dxchan->call if $dxchan;
+ Log("Msgno $self->{msgno} expunged$call");
# remove the file
unlink filename($self->{msgno});
next if $ref->{tonode}; # ignore it if it already being processed
# is it awaiting deletion?
- if ($ref->{delete} && $main::systime > $ref->{deletetime}) {
+ if ($ref->{delete} && $main::systime >= $ref->{deletetime}) {
$ref->del_msg;
next;
}
if (my @ans = BadWords::check($line)) {
$self->{badcount} += @ans;
Log('msg', $self->call . " used badwords: @ans to @{$loc->{to}} in msg");
- return ($self->msg('e17', @ans), $self->msg('m1'));
+ $loc->{reject}++;
}
$loc->{subject} = $line;
$loc->{lines} = [];
my $loc = $self->{loc};
if ($line eq "\032" || $line eq '%1A' || uc $line eq "/EX") {
my $to;
-
- foreach $to (@{$loc->{to}}) {
- my $ref;
- my $systime = $main::systime;
- my $mycall = $main::mycall;
- $ref = DXMsg->alloc(DXMsg::next_transno('Msgno'),
- uc $to,
- exists $loc->{from} ? $loc->{from} : $self->call,
- $systime,
- $loc->{private},
- $loc->{subject},
- exists $loc->{origin} ? $loc->{origin} : $mycall,
- '0',
- $loc->{rrreq});
- $ref->swop_it($self->call);
- $ref->store($loc->{lines});
- $ref->add_dir();
- push @out, $self->msg('m11', $ref->{msgno}, $to);
- #push @out, "msgno $ref->{msgno} sent to $to";
- my $dxchan = DXChannel->get(uc $to);
- if ($dxchan) {
- if ($dxchan->is_user()) {
- $dxchan->send($dxchan->msg('m9'));
+ unless ($loc->{reject}) {
+ foreach $to (@{$loc->{to}}) {
+ my $ref;
+ my $systime = $main::systime;
+ my $mycall = $main::mycall;
+ $ref = DXMsg->alloc(DXMsg::next_transno('Msgno'),
+ uc $to,
+ exists $loc->{from} ? $loc->{from} : $self->call,
+ $systime,
+ $loc->{private},
+ $loc->{subject},
+ exists $loc->{origin} ? $loc->{origin} : $mycall,
+ '0',
+ $loc->{rrreq});
+ $ref->swop_it($self->call);
+ $ref->store($loc->{lines});
+ $ref->add_dir();
+ push @out, $self->msg('m11', $ref->{msgno}, $to);
+ #push @out, "msgno $ref->{msgno} sent to $to";
+ my $dxchan = DXChannel->get(uc $to);
+ if ($dxchan) {
+ if ($dxchan->is_user()) {
+ $dxchan->send($dxchan->msg('m9'));
+ }
}
}
+ } else {
+ Log('msg', $self->call . " swore to @{$loc->{to}} subject: '$loc->{subject}' in msg, REJECTED");
}
-
+
delete $loc->{lines};
delete $loc->{to};
delete $self->{loc};
} else {
if (my @ans = BadWords::check($line)) {
$self->{badcount} += @ans;
- Log('msg', $self->call . " used badwords: @ans to @{$loc->{to}} subject: '$loc->{subject}' in msg");
+ Log('msg', $self->call . " used badwords: @ans to @{$loc->{to}} subject: '$loc->{subject}' in msg") unless $loc->{reject};
Log('msg', "line: $line");
- return ($self->msg('e17', @ans));
+ $loc->{reject}++;
}
# i.e. it ain't and end or abort, therefore store the line
wantann_talk => '0,Talklike Anns,yesno',
lastoper => '9,Last for/oper,cldatetime',
nothere => '0,Not Here Text',
+ registered => '9,Registered?,yesno',
);
no strict;