chiark / gitweb /
Publish rejections
[modbot-uram.git] / xlog / bin / record
index a62819575b6584d67c92da38f713c89236243aae..11c7e605678d4d0dc8339506be5c3e243d45fa3a 100755 (executable)
@@ -4,6 +4,13 @@ use strict (qw(vars));
 use IO::Handle;
 
 our %f;
+
+my $publish_rejections= 0;
+if ($ARGV[0] eq '-P') {
+    $publish_rejections= 1;
+    shift @ARGV;
+}
+
 our ($how) = @_;
 
 my $dir= $0;
@@ -77,7 +84,9 @@ sub parse_mailout () {
     while (<STDIN>) {
        $keepheader= 1 unless m/^[ \t]/;
        $keepheader= 0
-           if m/^(?: received )/ix;
+           if m/^(?: received
+                  | envelope-to
+                  )/ix;
        $keepheader= 'mangle'
            if m/^(?: to
                   | from
@@ -110,9 +119,11 @@ STDIN->error and die $!;
 
 $f{Now}= time;
 
-if ($f{Event} =~ m/^notify reject /) {
-    #$ref= $f{MessageID}
-    open I, ">$dir/nr-$f{MessageNum}.txt" or die $!;
+if ($publish_rejections &&
+    $f{Event} =~ m/^notify reject /) {
+    $f{CopyRef}= $f{MessageID};
+    $f{CopyRef} =~ s/\W/ sprintf '-%02x', ord($&) /ge;
+    open I, ">$dir/public/nr-$f{CopyRef}.txt" or die $!;
     print I $message or die $!;
     close I or die $!;
 }
@@ -125,7 +136,7 @@ my @s= map {
     $v =~ s/\t/  /g;
     $v =~ s/[\r\n]/?/g;
     $v;
-} qw(Now MessageNum MessageID From Subject Event);
+} qw(Now MessageNum MessageID From Subject Event CopyRef);
 
 print L join("\t",@s)."\n" or die $!;
 close L or die $!;