X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXMsg.pm;h=fb9e962fa8151ab6bf9015b22087403a8165c65f;hb=cee25b44617748c623c45f20ff78eca71c3cdc7c;hp=8c565797d586490f0384492319aea6b870e30d8e;hpb=668e4252d23e2eda2a6b234f1031e1c1a5f43d15;p=spider.git diff --git a/perl/DXMsg.pm b/perl/DXMsg.pm index 8c565797..fb9e962f 100644 --- a/perl/DXMsg.pm +++ b/perl/DXMsg.pm @@ -69,10 +69,10 @@ $importfn = "$msgdir/import"; # import directory to => '0,To', from => '0,From', t => '0,Msg Time,cldatetime', - private => '5,Private', + private => '5,Private,yesno', subject => '0,Subject', linesreq => '0,Lines per Gob', - rrreq => '5,Read Confirm', + rrreq => '5,Read Confirm,yesno', origin => '0,Origin', lines => '5,Data', stream => '9,Stream No', @@ -175,7 +175,7 @@ sub process if (exists $busy{$fromnode}) { my $ref = $busy{$fromnode}; - my $tonode = $ref->{tonode}; + my $tonode = $ref->{tonode} || "unknown"; dbg("Busy, stopping msgno: $ref->{msgno} $fromnode->$tonode") if isdbg('msg'); $ref->stop_msg($self->call); } @@ -281,8 +281,8 @@ sub process if ($ref->{subject} eq $m->{subject} && $ref->{t} == $m->{t} && $ref->{from} eq $m->{from} && $ref->{to} eq $m->{to}) { $ref->stop_msg($self->call); my $msgno = $m->{msgno}; - dbg("duplicate message from $ref->{from} -> $ref->{to} to $msgno") if isdbg('msg'); - Log('msg', "duplicate message from $ref->{from} -> $ref->{to} to $msgno"); + dbg("duplicate message from $ref->{from} -> $ref->{to} to msg: $msgno") if isdbg('msg'); + Log('msg', "duplicate message from $ref->{from} -> $ref->{to} to msg: $msgno"); return; } } @@ -298,6 +298,23 @@ sub process return; } + # check the message for bad words + my @words; + for (@{$ref->{lines}}) { + push @words, BadWords::check($_); + } + push @words, BadWords::check($ref->{subject}); + if (@words) { + dbg("message with badwords '@words' $ref->{from} -> $ref->{to} '$ref->{subject}' origin: $ref->{origin}") if isdbg('msg'); + Log('msg',"message with badwords '@words' $ref->{from} -> $ref->{to} origin: $ref->{origin}"); + Log('msg',"subject: $ref->{subject}"); + for (@{$ref->{lines}}) { + Log('msg', "line: $_"); + } + $ref->stop_msg($self->call); + return; + } + $ref->{msgno} = next_transno("Msgno"); push @{$ref->{gotit}}, $f[2]; # mark this up as being received $ref->store($ref->{lines}); @@ -389,7 +406,7 @@ sub process if ($_->{from} eq $f[1] && $_->{subject} eq $f[2]) { $_->del_msg(); Log('msg', "Message $_->{msgno} from $_->{from} ($_->{subject}) fully deleted"); - DXProt::broadcast_ak1a($line, $self); + DXChannel::broadcast_nodes($line, $self); } } } @@ -868,6 +885,11 @@ sub do_send_stuff # $DB::single = 1; confess "local var gone missing" if !ref $self->{loc}; my $loc = $self->{loc}; + 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->{subject} = $line; $loc->{lines} = []; $self->state('sendbody'); @@ -920,12 +942,18 @@ sub do_send_stuff $self->func(undef); $self->state('prompt'); } 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', "line: $line"); + return ($self->msg('e17', @ans)); + } # i.e. it ain't and end or abort, therefore store the line push @{$loc->{lines}}, length($line) > 0 ? $line : " "; } } - return (1, @out); + return @out; } # return the standard directory line for this ref @@ -1111,7 +1139,7 @@ sub import_msgs my @msg = map { chomp; $_ } ; close(MSG); unlink($fn); - my @out = import_one($DXProt::me, \@msg, $splitit); + my @out = import_one($main::me, \@msg, $splitit); Log('msg', @out); } }