chiark / gitweb /
Actual error messages
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Feb 2010 20:51:16 +0000 (20:51 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Feb 2010 20:51:16 +0000 (20:51 +0000)
15 files changed:
stump/bin/acceptFromMod.pl
stump/bin/decodeBase64
stump/bin/email-server.pl
stump/bin/processNoack.pl
stump/bin/processPreapproved
stump/bin/processRejected
stump/bin/stump-report.pl
stump/bin/submission.pl
stump/bin/suspicious.pl
stump/etc/modenv.INO
webstump/scripts/file-message.pl
webstump/scripts/gatekeeper-file-message.pl
webstump/scripts/gatekeeper.lib
webstump/scripts/mime-parsing.lib
webstump/scripts/webstump.lib.pl

index 9927f5cf9ab8b203b24a1a2b8a9d8df315f3a9e5..3e408f103d2b297b9f6571a89c6d94b9b4ed57d6 100755 (executable)
@@ -136,15 +136,15 @@ $ENV{'EXPLANATION'} = $comment;
 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" );
index 601c62bce54f5cb03b07262e75b70929ce8814be..61a025b3b19924a536494c1099039a0aca7dd5b1 100755 (executable)
@@ -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( <DECODED> ) {
-    print;
+    print or die $!;
   }
-close( DECODED );
+close( DECODED ) or die "$? $!";
 
 unlink( $TmpFile );
index c54de157862067094a4ae520d4efa045e35847fa..6170cb7eda578cc699db7c1eda45ed297665a753 100755 (executable)
@@ -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( <FILE> );
     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;
index 38c29fe63804433fe955356b51c9ad2b668cac68..33f3d047b35886d5be19b59d5c374cdc09f1d80e 100755 (executable)
@@ -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";
 }
index 38eb7148756ec1a8d2911a78985cda328013722a..5933a2b52e7c8e71acb74fd65663d8f84f22aa2c 100755 (executable)
@@ -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( <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-\.]+)/ ) {
@@ -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";
 }
index 046e6921cd517d27e078d747046184efcf5ff839..c2dbc5ea071619e723e90d5d6d2c134634076316 100755 (executable)
@@ -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.
index 253065d20170a7d6bf6fce0cae8797c50d80193c..e5c5abd7a53244d7614f3a88f9c963709a3ede54 100755 (executable)
@@ -34,4 +34,4 @@ print "
 Approved:       $approvedCount         messages (of them, $autoCount automatically)
 Rejected:       $rejectedCount         messages
 Preapproved:    $preApprovedCount      new posters
-";
+" or die $!;
index fe02ca8e36a25d584686aa2d6d22b93243640a5f..a6f05fd6c6f0cf8522cfc90e2f6996528b107c9b 100755 (executable)
@@ -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
index 38b94f8df5d567a4fc0d0cd6999189487f5841fd..6870d89d4c95b382c433707a5aae9f1b3530c536 100755 (executable)
@@ -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( <STDIN> ) {
-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( <REASONS> ) {
   ($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;
index 161a9b8815fe2080a1911fd047f4cfc92831be16..eebf1d508d3ee0199321f1db48c1153ab37e5302 100755 (executable)
@@ -19,7 +19,7 @@
 MNG_ROOT=%BASEDIR%/stump
 exec >>%BASEDIR%/errs 2>&1
 
-printf "============ %s" "$*"
+printf "============ %s " "$*"
 date
 
 export MNG_ROOT BASEDIR
index 59d5f172b7bd08a1de84dc27d7558b434c1412e4..1585f8601c2b6a3d94cb49751f9429204bd3edec 100755 (executable)
@@ -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;
index 8b0db62c0f0725b7ed5975e4e8897992a2191e49..7f160ba1a08864bf805e5beff55ac40adc47564d 100755 (executable)
@@ -36,7 +36,7 @@ $file = "$queue_dir/$time.$$";
 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 $!;
index 3adca4b563b382790b306aa19ca3a8408acbc8e4..b90a2e066c2fa231fb4533d741cc8e2825d39d84 100644 (file)
@@ -67,7 +67,7 @@ sub prepareArticle {
 
   $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;
 }
@@ -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 $!;
   }
 }
 
index 4605f10cd8a6b84e747c42b1791d2f35db104a74..4a11a23667dd101f9ce113599ed4ed557ee2c007 100644 (file)
@@ -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;
 }
index 8397f8694cc8816fc4c94c81f5a5f68525b34280..c76d25dfd1e9f48ca99ba0377af52aad5df1f3d2 100644 (file)
@@ -185,8 +185,9 @@ sub init_webstump {
 
       next if ! -r $file;
 
-      open( FILE, $file );
+      open( FILE, $file ) or die $!;
       $addr = <FILE>;
+      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 "$? $!";
                 
 }