From: Ian Jackson Date: Sun, 28 Feb 2010 20:51:16 +0000 (+0000) Subject: Actual error messages X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~webstump/git?p=modbot-ulm.git;a=commitdiff_plain;h=acff1ba7277dfa00ee47688742f2a3910ea6c106 Actual error messages --- diff --git a/stump/bin/acceptFromMod.pl b/stump/bin/acceptFromMod.pl index 9927f5c..3e408f1 100755 --- a/stump/bin/acceptFromMod.pl +++ b/stump/bin/acceptFromMod.pl @@ -136,15 +136,15 @@ $ENV{'EXPLANATION'} = $comment; open( COMMAND, "| $command" ) || &processError( "$command failed" ); open( MESSAGE, "$MessageFile" ) || &processError( "Can't open $MessageFile" ); - print COMMAND while( ); - close( MESSAGE ); + while( ) { 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" ); diff --git a/stump/bin/decodeBase64 b/stump/bin/decodeBase64 index 601c62b..61a025b 100755 --- a/stump/bin/decodeBase64 +++ b/stump/bin/decodeBase64 @@ -32,12 +32,12 @@ while(<>) { 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.$$"; @@ -49,14 +49,14 @@ open( DECODE, "|mimencode -u $switch > $TmpFile" ) || 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( ) { - print; + print or die $!; } -close( DECODED ); +close( DECODED ) or die "$? $!"; unlink( $TmpFile ); diff --git a/stump/bin/email-server.pl b/stump/bin/email-server.pl index c54de15..6170cb7 100755 --- a/stump/bin/email-server.pl +++ b/stump/bin/email-server.pl @@ -248,15 +248,15 @@ sub reply { 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 "$? $!"; } @@ -340,7 +340,7 @@ sub command_get { my $reply_body = ""; - open( FILE, $file ); + open( FILE, $file ) or die $!; $reply_body .= $_ while( ); close( FILE ); @@ -351,32 +351,32 @@ sub command_get { } } -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; diff --git a/stump/bin/processNoack.pl b/stump/bin/processNoack.pl index 38c29fe..33f3d04 100755 --- a/stump/bin/processNoack.pl +++ b/stump/bin/processNoack.pl @@ -29,9 +29,9 @@ if( $From =~ m/([\w-\.]*)\@([\w-\.]+)/ ) { 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"; } diff --git a/stump/bin/processPreapproved b/stump/bin/processPreapproved index 38eb714..5933a2b 100755 --- a/stump/bin/processPreapproved +++ b/stump/bin/processPreapproved @@ -14,22 +14,22 @@ $GoodGuys = "$MNG_ROOT/data/good.guys.list"; $Argv = join( ' ', @ARGV ); -open( PROCESS_APPROVED, "|processApproved $Argv" ); +open( PROCESS_APPROVED, "|processApproved $Argv" ) or die $!; while( ) { $From = $_ if( /^From: / ); - print PROCESS_APPROVED; + print PROCESS_APPROVED or die $!; chop; last if( /^$/ ); } while( ) { # 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-\.]+)/ ) { @@ -41,9 +41,9 @@ 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"; } diff --git a/stump/bin/processRejected b/stump/bin/processRejected index 046e692..c2dbc5e 100755 --- a/stump/bin/processRejected +++ b/stump/bin/processRejected @@ -1,4 +1,4 @@ -#!/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. diff --git a/stump/bin/stump-report.pl b/stump/bin/stump-report.pl index 253065d..e5c5abd 100755 --- a/stump/bin/stump-report.pl +++ b/stump/bin/stump-report.pl @@ -34,4 +34,4 @@ print " Approved: $approvedCount messages (of them, $autoCount automatically) Rejected: $rejectedCount messages Preapproved: $preApprovedCount new posters -"; +" or die $!; diff --git a/stump/bin/submission.pl b/stump/bin/submission.pl index fe02ca8..a6f05fd 100755 --- a/stump/bin/submission.pl +++ b/stump/bin/submission.pl @@ -184,8 +184,8 @@ print STDERR "FromSig = $FromSig, good = $good\n" if $FromSig; # 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; @@ -298,22 +298,22 @@ sub ignoreHeader { 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; @@ -367,7 +367,7 @@ print STDERR "BAD NEWSSERVER\n"; } } use IO::Handle; - print IWJL "SbRmE $!\n"; +# print IWJL "SbRmE $!\n"; die "read message $! !" if STDIN->error; close( TMPFILE ); @@ -402,8 +402,8 @@ $command = &Filter; # 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"; @@ -426,10 +426,10 @@ 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; @@ -439,20 +439,20 @@ open( TMPFILE, "$TmpFile" ) || die "cant open tmpfile"; # "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 diff --git a/stump/bin/suspicious.pl b/stump/bin/suspicious.pl index 38b94f8..6870d89 100755 --- a/stump/bin/suspicious.pl +++ b/stump/bin/suspicious.pl @@ -29,11 +29,11 @@ print STDERR "Needack = $needAck\n"; 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( ) { -print IWJL "SsRm $_\n"; +#print IWJL "SsRm $_\n"; $Body .= $_; @@ -123,13 +123,13 @@ $MessageNumber = time . $$; 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 @@ -147,14 +147,14 @@ THE FIRST LINE, choosing LITERALLY from ONE of the following options approve preapprove -"; +" or die $!;; -open( REASONS, "$MNG_ROOT/etc/rejection-reasons.lst" ); +open( REASONS, "$MNG_ROOT/etc/rejection-reasons.lst" ) or die $!; while( ) { ($reason, $explanation) = split( /::/, $_ ); - print COMMAND "reject $reason\n"; + print COMMAND "reject $reason\n" or die $!; } -close( REASONS ); +close( REASONS ) or die $!; print COMMAND " @@ -165,15 +165,15 @@ before approve, preapprove, or reject. 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; diff --git a/stump/etc/modenv.INO b/stump/etc/modenv.INO index 161a9b8..eebf1d5 100755 --- a/stump/etc/modenv.INO +++ b/stump/etc/modenv.INO @@ -19,7 +19,7 @@ MNG_ROOT=%BASEDIR%/stump exec >>%BASEDIR%/errs 2>&1 -printf "============ %s" "$*" +printf "============ %s " "$*" date export MNG_ROOT BASEDIR diff --git a/webstump/scripts/file-message.pl b/webstump/scripts/file-message.pl index 59d5f17..1585f86 100755 --- a/webstump/scripts/file-message.pl +++ b/webstump/scripts/file-message.pl @@ -77,16 +77,16 @@ chmod 0755, $queue_dir; 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; diff --git a/webstump/scripts/gatekeeper-file-message.pl b/webstump/scripts/gatekeeper-file-message.pl index 8b0db62..7f160ba 100755 --- a/webstump/scripts/gatekeeper-file-message.pl +++ b/webstump/scripts/gatekeeper-file-message.pl @@ -36,7 +36,7 @@ $file = "$queue_dir/$time.$$"; open( QUEUE_FILE, ">$file" ) || die "Could not open $file for writing"; while( ) { - print QUEUE_FILE; + print QUEUE_FILE or die $!; } -close( QUEUE_FILE ); +close( QUEUE_FILE ) or die $!; diff --git a/webstump/scripts/gatekeeper.lib b/webstump/scripts/gatekeeper.lib index 3adca4b..b90a2e0 100644 --- a/webstump/scripts/gatekeeper.lib +++ b/webstump/scripts/gatekeeper.lib @@ -67,7 +67,7 @@ sub prepareArticle { $body .= $_ while(
); -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; } @@ -92,8 +92,8 @@ sub processApproved { 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 $!; } } diff --git a/webstump/scripts/mime-parsing.lib b/webstump/scripts/mime-parsing.lib index 4605f10..4a11a23 100644 --- a/webstump/scripts/mime-parsing.lib +++ b/webstump/scripts/mime-parsing.lib @@ -17,7 +17,7 @@ sub uudecode_text { 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) { @@ -28,14 +28,14 @@ sub uudecode_text { 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; } @@ -62,9 +62,9 @@ sub decode_mime_message { # 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" ); @@ -75,13 +75,13 @@ sub decode_mime_message { $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; @@ -90,7 +90,7 @@ sub decode_mime_message { 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; @@ -144,9 +144,9 @@ sub file_plaintext_message { 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"; @@ -157,20 +157,20 @@ sub file_plaintext_message { 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; } diff --git a/webstump/scripts/webstump.lib.pl b/webstump/scripts/webstump.lib.pl index 8397f86..c76d25d 100644 --- a/webstump/scripts/webstump.lib.pl +++ b/webstump/scripts/webstump.lib.pl @@ -185,8 +185,9 @@ sub init_webstump { next if ! -r $file; - open( FILE, $file ); + open( FILE, $file ) or die $!; $addr = ; + defined $addr or die $! chop $addr; close( FILE ); @@ -197,8 +198,9 @@ sub init_webstump { } 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 @@ -511,9 +513,10 @@ sub email_message { 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 "$? $!"; }