]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/receive.in
* Properly handle \n line terminated emails
[debbugs.git] / scripts / receive.in
index 3d24a3fc904ddb3f233b304c29f46b3e32f20a20..eb101a4029fe5cf681c1c5f2b6fe60ceb8c62c61 100755 (executable)
@@ -1,12 +1,14 @@
-#!/usr/bin/perl -w
-# $Id: receive.in,v 1.8 2000/10/10 23:39:12 joy Exp $
+#!/usr/bin/perl
+# $Id: receive.in,v 1.17 2005/07/24 18:42:41 don Exp $
 # usage: mail is piped directly into program
 
 #set umask in order to have group-writable incoming/*
-#umask 002;
+#umask(002);
 
-#load configuration file
-require( '/etc/debbugs/config' );
+use Debbugs::Config qw(:globals :text);
+my $lib_path = $gLibPath;
+
+$ENV{'PATH'} = '/usr/lib/debbugs:'.$ENV{'PATH'};
 
 #set source of mail delivery
 #sets any prefix needed to get mailer to add it to error mail
@@ -24,7 +26,6 @@ if ( $gMailer eq 'exim' )
        s/\>//;
        s/\<//;
 }
-require("/etc/debbugs/text");
 
 #remove everything from @ to end of line
 s/\@.*$//;
@@ -33,17 +34,22 @@ s/\@.*$//;
 y/A-Z/a-z/;
 
 #set up to determine command
-%withnaddressmap= ('-submit',     'B',
+%withbugaddressmap= ('-submit',     'B',
                    '',            'B',
                    '-maintonly',  'M',
                    '-quiet',      'Q',
                    '-forwarded',  'F',
-                  '-fixed',      'X',
                    '-done',       'D',
                    '-close',      'D',
-                   '-submitter',  'U');
+                  '-request',    'R',
+                   '-submitter',  'U',
+                  # Used for bug subscription
+                  #'-list-nothing-will-match-this', 'L',
+                   );
+
+%withpkgaddressmap= ('-request',     'R');
 
-%withoutnaddressmap= ('submit',     'B',
+%withoutaddressmap= ('submit',     'B',
                       'bugs',       'B',
                       'maintonly',  'M',
                       'quiet',      'Q',
@@ -57,11 +63,24 @@ y/A-Z/a-z/;
 #determine command
 if (s/^(\d{1,9})\b//) {
     $bugnumber= $1;
-    $map= $withnaddressmap{$_};
+    if (not exists $withbugaddressmap{$_} and
+/-(?:(?:un)?subscribe|subhelp|help|ignore|(?:sub(?:yes|approve|reject)
+ |unsubyes|bounce|probe|approve|reject|
+ setlistyes|setlistsilentyes).*)/x
+       ) {
+        $map = 'L';
+    }
+    else {
+        $map= $withbugaddressmap{$_};
+    }
     $addrrec= "$bugnumber$_";
+} elsif (s/^(\w+)-//) {
+    $bugnumber= $1;
+    $map= $withpkgaddressmap{"-$_"};
+    $addrrec= "$bugnumber-$_";
 } else {
     $bugnumber= '';
-    $map= $withoutnaddressmap{$_};
+    $map= $withoutaddressmap{$_};
     $addrrec= "$_";
 }
 
@@ -85,9 +104,9 @@ $gBadEmailPrefix (all \@$gEmailDomain.)
 $gBadEmailPrefix
 $gBadEmailPrefix For instructions via the WWW see:
 $gBadEmailPrefix   http://$gWebDomain/
-$gBadEmailPrefix   http://$gWebDomain/Reporting.html
-$gBadEmailPrefix   http://$gWebDomain/Developer.html
-$gBadEmailPrefix   http://$gWebDomain/Access.html
+$gBadEmailPrefix   http://$gWebDomain/Reporting$gHTMLSuffix
+$gBadEmailPrefix   http://$gWebDomain/Developer$gHTMLSuffix
+$gBadEmailPrefix   http://$gWebDomain/Access$gHTMLSuffix
 $gTextInstructions
 $gBadEmailPrefix For details of how to access $gBug report logs by email:
 $gBadEmailPrefix   send \`request\@$gEmailDomain' the word \`help'
@@ -111,7 +130,13 @@ printf(FILE "Received: (at %s) by $gEmailDomain; %d %s %d %02d:%02d:%02d +0000\n
 while(<STDIN>) { print(FILE) || &failure("write temporary file: $!"); }
 close(FILE) || &failure("close temporary file: $!");
 
-rename("T.$id","I$queue.$id") || &failure("rename spool message: $!");
+my $prefix;
+if ($gSpamScan) {
+    $prefix = 'S';
+} else {
+    $prefix = 'I';
+}
+rename("T.$id","$prefix$queue.$id") || &failure("rename spool message: $!");
 
 exit(0);