open( COMMAND, "| $command" ) || &processError( "$command failed" );
open( MESSAGE, "$MessageFile" ) || &processError( "Can't open $MessageFile" );
- print COMMAND while( <MESSAGE> );
- close( MESSAGE );
+ while( <MESSAGE> ) { print COMMAND or die $!; }
+ close( MESSAGE ) or die "$? $!";
# if( $comment && !($command =~ '^processRejected') ) {
# print COMMAND
# "\n======================================= MODERATOR'S COMMENT: \n" .
# $comment;
# }
-#close( COMMAND );
+close( COMMAND ) or die "$? $!";
&processError( "No action specified" )
if( $done ne "yes" );
if( !$isEncoded ) {
print $FullHeaders . "\n";
while( <> ) {
- print;
+ print or die $!;
}
exit 0;
}
-print $DecodedHeaders . "\n";
+print $DecodedHeaders . "\n" or die $!;
if( $ENV{'TMP'} ) {
$TmpFile = "$ENV{'TMP'}/letter.$$";
|| die "Can't run mmencode writing to $TmpFile";
while( <> ) {
- print DECODE;
+ print DECODE or die $!;
}
-close( DECODE );
+close( DECODE ) or die "$? $!";
open( DECODED, $TmpFile ) || die "Can't open just decoded file $TmpFile";
while( <DECODED> ) {
- print;
+ print or die $!;
}
-close( DECODED );
+close( DECODED ) or die "$? $!";
unlink( $TmpFile );
open( SENDMAIL, "|$sendmail '$address'" )
|| die "Could not start sendmail in $sendmail";
- print SENDMAIL "From: $To\n";
- print SENDMAIL "To: $address\n";
- print SENDMAIL "Subject: Re: $Subject\n";
+ print SENDMAIL "From: $To\n" or die $!;
+ print SENDMAIL "To: $address\n" or die $!;
+ print SENDMAIL "Subject: Re: $Subject\n" or die $!;
- print SENDMAIL "\n";
+ print SENDMAIL "\n" or die $!;
- print SENDMAIL "$msg\n";
+ print SENDMAIL "$msg\n" or die $!;
- close( SENDMAIL );
+ close( SENDMAIL ) or die "$? $!";
}
my $reply_body = "";
- open( FILE, $file );
+ open( FILE, $file ) or die $!;
$reply_body .= $_ while( <FILE> );
close( FILE );
}
}
-sub command_set {
- my $arg = pop( @_ );
-
- my $file = &file_from_arg( $arg );
- my $mode = &mode_from_arg( $arg );
-
- &user_error( "File $arg is not in the list of available files." )
- if( !$file );
-
- if( -w $file && -f $file && $mode eq "rw" ) {
-
- my $reply_body = "Succeeded in writing to file '$arg':\n\n$Body";
-
- if( open( FILE, ">$file" ) ) {
- print FILE $Body;
- close( FILE );
- } else {
- $reply_body = "Failed to write to file $arg:\n\n$Body";
- }
-
- &reply( $reply_body );
-
- } else {
- &user_error( "File $arg does not exist or is not writable" );
- }
-}
+# sub command_set {
+# my $arg = pop( @_ );
+#
+# my $file = &file_from_arg( $arg );
+# my $mode = &mode_from_arg( $arg );
+#
+# &user_error( "File $arg is not in the list of available files." )
+# if( !$file );
+#
+# if( -w $file && -f $file && $mode eq "rw" ) {
+#
+# my $reply_body = "Succeeded in writing to file '$arg':\n\n$Body";
+#
+# if( open( FILE, ">$file" ) ) {
+# print FILE $Body;
+# close( FILE );
+# } else {
+# $reply_body = "Failed to write to file $arg:\n\n$Body";
+# }
+#
+# &reply( $reply_body );
+#
+# } else {
+# &user_error( "File $arg does not exist or is not writable" );
+# }
+# }
sub main {
&init;
if( !&nameIsInList( $From, "noack.list" ) ) { # need to preapprove
print STDERR "Adding $From to the noack list...\n";
- open( NOACK, ">>$NoAckFile" );
- print NOACK "$From\n";
- close( NOACK );
+ open( NOACK, ">>$NoAckFile" ) or die $!;
+ print NOACK "$From\n" or die $!;
+ close( NOACK ) or die $!;
} else {
print STDERR "$From already is in noack list\n";
}
$Argv = join( ' ', @ARGV );
-open( PROCESS_APPROVED, "|processApproved $Argv" );
+open( PROCESS_APPROVED, "|processApproved $Argv" ) or die $!;
while( <STDIN> ) {
$From = $_ if( /^From: / );
- print PROCESS_APPROVED;
+ print PROCESS_APPROVED or die $!;
chop;
last if( /^$/ );
}
while( <STDIN> ) { # Body
- print PROCESS_APPROVED;
+ print PROCESS_APPROVED or die $!;
}
-close PROCESS_APPROVED;
+close PROCESS_APPROVED or die "$? $!";
$From =~ s/^From: //g;
if( $From =~ m/([\w-\.]*)\@([\w-\.]+)/ ) {
if( !&nameIsInList( $From, "good.guys.list" ) ) { # need to preapprove
&logAction( "Action: processPreapproved $From\n" );
- open( GOOD_GUYS, ">>$GoodGuys" );
- print GOOD_GUYS "$From\n";
- close( GOOD_GUYS );
+ open( GOOD_GUYS, ">>$GoodGuys" ) or die $!;
+ print GOOD_GUYS "$From\n" or die $!;
+ close( GOOD_GUYS ) or die $!;
} else {
print STDERR "$From already preapproved\n";
}
-#!/bin/sh
+#!/bin/bash
#
# This script takes a raw article that is already rejected, creates a
# reply message, signs it with PGP and sends back to the author.
Approved: $approvedCount messages (of them, $autoCount automatically)
Rejected: $rejectedCount messages
Preapproved: $preApprovedCount new posters
-";
+" or die $!;
# checks charter calling conforms_charter
#
sub checkCharter {
- open( VERIFY, "|conforms_charter" );
- print VERIFY $Body;
+ open( VERIFY, "|conforms_charter" ) or die $!;
+ print VERIFY $Body or die $!;
close( VERIFY );
return $? == 0;
sub readMessage {
-open IWJL, ">>/home/webstump/t.log";
-print IWJL "=========== SUBMISSION READMESSAGE\n";
+#open IWJL, ">>/home/webstump/t.log";
+#print IWJL "=========== SUBMISSION READMESSAGE\n";
- open( TMPFILE, "> $TmpFile" );
+ open( TMPFILE, "> $TmpFile" ) or die $!;
$IsBody = 0;
while( <> ) {
-print IWJL "SbRm $_\n";
+#print IWJL "SbRm $_\n";
$Body .= $_;
if( !$IsBody && &ignoreHeader( $_ ) ) {
next;
}
- print TMPFILE;
+ print TMPFILE or die $!;
chop;
}
}
use IO::Handle;
- print IWJL "SbRmE $!\n";
+# print IWJL "SbRmE $!\n";
die "read message $! !" if STDIN->error;
close( TMPFILE );
# process
print STDERR "command = $command\n";
-open IWJL, ">>/home/webstump/t.log";
-print IWJL "=========== SUBMISSION MAIN\n";
+#open IWJL, ">>/home/webstump/t.log";
+#print IWJL "=========== SUBMISSION MAIN\n";
open( COMMAND, "| $command" ) or die $!;
open( TMPFILE, "$TmpFile" ) || die "cant open tmpfile";
}
if( /^From / ) {
- print COMMAND;
- print COMMAND "X-Origin: $X_Origin, $_" if $X_Origin;
+ print COMMAND or die $!;
+ print COMMAND "X-Origin: $X_Origin, $_" or die $! if $X_Origin;
print STDERR "Subject =`$Subject'\n";
- print COMMAND "Subject: No subject given\n" if !$Subject;
+ print COMMAND "Subject: No subject given\n" or die $! if !$Subject;
# nothing
} elsif( /^From: / && !$IsBody) {
next if $FromWasUsed;
# "From: " to go to headers!
if( $From ) {
- print COMMAND "$From\n";
+ print COMMAND "$From\n" or die $!;
$From = "";
} else {
- print COMMAND;
+ print COMMAND or die $!;
}
} elsif( /^Newsgroups: / && !$IsBody ) {
- print COMMAND "Newsgroups: $Newsgroups\n";
+ print COMMAND "Newsgroups: $Newsgroups\n" or die $!;
} else {
- print COMMAND;
+ print COMMAND or die $!;
}
}
close( TMPFILE ) or die $!;
-close( COMMAND ) or die $!;
+close( COMMAND ) or die "$? $!";
################################################################## Archiving
# archive
sub readMessage {
$IsBody = 0;
-open IWJL, ">>/home/webstump/t.log";
-print IWJL "=========== SUSPICIOUS READMESSAGE\n";
+#open IWJL, ">>/home/webstump/t.log";
+#print IWJL "=========== SUSPICIOUS READMESSAGE\n";
while( <STDIN> ) {
-print IWJL "SsRm $_\n";
+#print IWJL "SsRm $_\n";
$Body .= $_;
print STDERR "Opening $MNG_ROOT/tmp/messages/$MessageNumber\n";
-open( MESSAGE, "> $MNG_ROOT/tmp/messages/$MessageNumber" );
-print MESSAGE $Body;
-close( MESSAGE );
+open( MESSAGE, "> $MNG_ROOT/tmp/messages/$MessageNumber" ) or die $!;
+print MESSAGE $Body or die $!;
+close( MESSAGE ) or die $!;
$Subject = "Subject: try again" if( !$Subject );
-open( COMMAND, "| sendmail -odb -oi $moderator > /dev/null" );
+open( COMMAND, "| sendmail -odb -oi $moderator > /dev/null" ) or die $!;
print COMMAND "From: $ENV{'DECISION_ADDRESS'}
$Subject ::$Prefix/$MessageNumber
approve
preapprove
-";
+" or die $!;;
-open( REASONS, "$MNG_ROOT/etc/rejection-reasons.lst" );
+open( REASONS, "$MNG_ROOT/etc/rejection-reasons.lst" ) or die $!;
while( <REASONS> ) {
($reason, $explanation) = split( /::/, $_ );
- print COMMAND "reject $reason\n";
+ print COMMAND "reject $reason\n" or die $!;
}
-close( REASONS );
+close( REASONS ) or die $!;
print COMMAND "
Message follows:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-";
+" or die $!;
-print COMMAND $Body;
-close( COMMAND );
+print COMMAND $Body or die $!;
+close( COMMAND ) or die "$? $!";
if( $needAck eq "yes" ) {
open( ACK, "| modack.received" ) or die $!;
- print ACK $Body;
- close( ACK ) or die $!;
+ print ACK $Body or die $!;
+ close( ACK ) or die "$? $!";
}
1;
MNG_ROOT=%BASEDIR%/stump
exec >>%BASEDIR%/errs 2>&1
-printf "============ %s" "$*"
+printf "============ %s " "$*"
date
export MNG_ROOT BASEDIR
die "$queue_dir does not exist or is not writable"
if( ! -d $queue_dir || ! -w $queue_dir );
-open( PROLOG, ">$directory/stump-prolog.txt" );
-print PROLOG $prolog;
-close( PROLOG );
+open( PROLOG, ">$directory/stump-prolog.txt" ) or die $!;
+print PROLOG $prolog or die $!;
+close( PROLOG ) or die $!;
#open( FULL, ">$directory/full_message.txt" );
#print FULL $entity->as_string;
#close( FULL );
my $dir = "dir_$time" . "_$$";
-rename $directory, "$queue_dir/$dir";
+rename $directory, "$queue_dir/$dir" or die $!;
&init_webstump;
$request{"newsgroup"} = $newsgroup;
open( QUEUE_FILE, ">$file" ) || die "Could not open $file for writing";
while( <STDIN> ) {
- print QUEUE_FILE;
+ print QUEUE_FILE or die $!;
}
-close( QUEUE_FILE );
+close( QUEUE_FILE ) or die $!;
$body .= $_ while( <ARTICLE> );
-print "Header:\n\n$header\nBody:\n\n$body\n";
+print "Header:\n\n$header\nBody:\n\n$body\n" or die $!;
return $headers . $body;
}
my $spoolfile = "$posting_spool_dir/$$.$time";
open( SPOOL, ">$posting_spool_dir/$$.$time" )
|| &error( "Can't open $spoolfile" );
- print SPOOL $message;
- close( SPOOL );
+ print SPOOL $message or die $!;
+ close( SPOOL ) or die $!;
}
}
if( $type =~ /^text\// ) {
my $filename = $entity->bodyhandle->path;
$filename =~ s/.*\///;
- print TEXT_FILES $filename . "\n";
+ print TEXT_FILES $filename . "\n" or die $!;
my $count = 0;
while(1) {
if( $data && $name ) {
$body =~ s/\nbegin.*?\nend\n/((((Encoded File: $name))))\n/s;
if( open( FILE, ">$dir/$name" ) ) {
- print FILE $data;
- close FILE;
- chmod 0644, $file;
+ print FILE $data or die $!;
+ close FILE or die $!;
+ chmod 0644, $file or die $!;
}
my $filename = $entity->bodyhandle->path;
- open( REDUCED, ">$filename" );
- print REDUCED $body;
- close( REDUCED );
+ open( REDUCED, ">$filename" ) or die $!;
+ print REDUCED $body or die $!;
+ close( REDUCED ) or die $!;
} else {
last;
}
# Parse input:
$entity = $parser->read(\*STDIN) or die "couldn't parse MIME stream";
- open( FULL, ">$dir/full_message.txt" );
- print FULL $entity->as_string;
- close( FULL );
+ open( FULL, ">$dir/full_message.txt" ) or die $!;
+ print FULL $entity->as_string or die $!;
+ close( FULL ) or die $!;
my $RealSubject = "Real-Subject: " . $entity->head->get( "Subject" );
$entity->dump_skeleton( \*SKELETON );
close( SKELETON );
- open( HEAD, ">$dir/headers.txt" );
- print HEAD $entity->head->as_string . "\n";
- close( HEAD );
+ open( HEAD, ">$dir/headers.txt" ) or die $!;
+ print HEAD $entity->head->as_string . "\n" or die $!;
+ close( HEAD ) or die $!;
- open( TEXT_FILES, ">$dir/text.files.lst" );
+ open( TEXT_FILES, ">$dir/text.files.lst" ) or die $!;
- print TEXT_FILES "headers.txt\n";
+ print TEXT_FILES "headers.txt\n" or die $!;
my $body = &uudecode_text( $entity, $dir );
$body =~ /(.*\n){0,3}/s;
if( $entity->is_multipart ) {
foreach( $entity->parts() ) {
- print $_->mime_type . "\n";
+ print $_->mime_type . "\n" or die $!;
$body = &uudecode_text( $_, $dir );
$body =~ /(.*\n){0,3}/s;
$prolog .= $1;
mkdir $dir, 0775;
chmod 0755, $dir;
- open( FULL, ">$dir/full_message.txt" );
- print FULL $Article_Body;
- close( FULL );
+ open( FULL, ">$dir/full_message.txt" ) or die $!;
+ print FULL $Article_Body or die $!;
+ close( FULL ) or die $!;
my $prolog = "From: " . $Article_From . "\nReal-Subject: $Article_Subject";
open( SKELETON, ">$dir/skeleton.skeleton" );
close( SKELETON );
- open( HEAD, ">$dir/headers.txt" );
- print HEAD $Article_Head . "\n";
- close( HEAD );
+ open( HEAD, ">$dir/headers.txt" ) or die $!;
+ print HEAD $Article_Head . "\n" or die $!;
+ close( HEAD ) or die $!;
- open( TEXT_FILES, ">$dir/text.files.lst" );
+ open( TEXT_FILES, ">$dir/text.files.lst" ) or die $!;
- print TEXT_FILES "headers.txt\nfull_message.txt\n";
+ print TEXT_FILES "headers.txt\nfull_message.txt\n" or die $!;
my $body = $Article_Body;
$body =~ /(.*\n){0,3}/s;
$prolog .= $1;
- close( TEXT_FILES );
+ close( TEXT_FILES ) or die $!;
return $prolog;
}
next if ! -r $file;
- open( FILE, $file );
+ open( FILE, $file ) or die $!;
$addr = <FILE>;
+ defined $addr or die $!
chop $addr;
close( FILE );
}
close( NEWSGROUPS );
- open( LOG, ">>$webstump_home/log/webstump.log" );
- print LOG "Call from $ENV{'REMOTE_ADDR'}, QUERY_STRING=$ENV{'QUERY_STRING'}\n";
+ open( LOG, ">>$webstump_home/log/webstump.log" ) or die $!;
+ LOG->autoflush(1);
+ print LOG "Call from $ENV{'REMOTE_ADDR'}, QUERY_STRING=$ENV{'QUERY_STRING'}\n" or die $!;
}
# gets the directory name for the newsgroup
my $sendmail_command = "$sendmail $recipient";
$sendmail_command =~ /(^.*$)/;
$sendmail_command = $1; # untaint
- open_pipe_for_writing( SENDMAIL, "$sendmail_command > /dev/null " );
- print SENDMAIL $message;
- close( SENDMAIL );
+ open_pipe_for_writing( SENDMAIL, "$sendmail_command > /dev/null " )
+ or die $!;
+ print SENDMAIL $message or die $!;
+ close( SENDMAIL ) or die "$? $!";
}