]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/process.in
merge colin changes and suggestions by fjp
[debbugs.git] / scripts / process.in
index eeb195dfc23b0cb6f82ec292ea83a13980893233..209d9dbcc26fffd08b38afb8326856b1a2695ef5 100755 (executable)
@@ -4,9 +4,7 @@
 # Usage: process nn
 # Temps:  incoming/Pnn
 
-use POSIX qw(strftime tzset);
-$ENV{"TZ"} = 'UTC';
-tzset();
+use POSIX qw(strftime);
 
 use MIME::Parser;
 use Debbugs::MIME qw(decode_rfc1522 create_mime_message);
@@ -14,14 +12,18 @@ use Debbugs::Mail qw(send_mail_message encode_headers);
 use Debbugs::Packages qw(getpkgsrc);
 use Debbugs::User qw(read_usertags write_usertags);
 
-my $config_path = '/etc/debbugs';
-my $lib_path = '/usr/lib/debbugs';
+use Debbugs::CGI qw(html_escape);
+
+use Debbugs::Log qw(:misc);
 
 # TODO DLA; needs config reworking and errorlib reworking
 # use warnings;
 # use strict;
 
-require "$config_path/config";
+use Debbugs::Status qw(:versions);
+use Debbugs::Config qw(:globals);
+my $lib_path = $gLibPath;
+
 require "$lib_path/errorlib";
 $ENV{'PATH'} = $lib_path.':'.$ENV{'PATH'};
 
@@ -152,7 +154,7 @@ for my $phline (@bodylines)
     print DEBUG ">$fn|$fv|\n";
     $fn = lc $fn;
     # Don't lc owner or forwarded
-    $fv = lc $fv unless $fh =~ /^(?:owner|forwarded|usertags)$/;
+    $fv = lc $fv unless $fh =~ /^(?:owner|forwarded|usertags|version|source-version)$/;
     $pheader{$fn} = $fv;
     print DEBUG ">$fn~$fv<\n";
 }
@@ -283,6 +285,10 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
         $receivedat= "forwarded\@$gEmailDomain";
         $markaswhat= 'forwarded';
         $set_forwarded= $header{'to'};
+       # Dissallow forwarded being set to this bug tracking system
+       if (defined $set_forwarded and $set_forwarded =~ /\Q$gEmailDomain\E/) {
+            undef $set_forwarded;
+       }
        if ( length( $gListDomain ) > 0 && length( $gForwardList ) > 0 ) {
            push @generalcc, "$gForwardList\@$gListDomain";
            $generalcc= "$gForwardList\@$gListDomain";
@@ -482,8 +488,9 @@ END
               "Content-Type"            => 'text/plain; charset="utf-8"',
              ],<<END ,[join("\n",@msg)]),'',undef,1);
 This is an automatic notification regarding your $gBug report
-#$ref: $data->{subject},
-which was filed against the $data->{package} package.
+which was filed against the $data->{package} package:
+
+#$ref: $data->{subject}
 
 It has been closed by $markedby.
 
@@ -651,12 +658,12 @@ END
     # Deal with usertags
     if (exists $pheader{usertags}) {
         my $user = $replyto;
+        $user = $pheader{user} if exists $pheader{user};
         $user =~ s/,.*//;
         $user =~ s/^.*<(.*)>.*$/$1/;
         $user =~ s/[(].*[)]//;
         $user =~ s/^\s*(\S+)\s+.*$/$1/;
-        $user = "" unless (Debbugs::User::is_valid_user($user));
-        if ($user ne '') {
+        if ($user ne '' and Debbugs::User::is_valid_user($user)) {
              $pheader{usertags} =~ s/(?:^\s+|\s+$)//g;
              my %user_tags;
              read_usertags(\%user_tags,$user);
@@ -668,7 +675,13 @@ END
                        $user_tags{$tag} = [keys %bugs_with_tag];
                   }
              }
-             write_usertags(\%usertags,$user);
+             write_usertags(\%user_tags,$user);
+        }
+        else {
+             $brokenness .=<<END;
+Your message tried to set a usertag, but didn't have a valid
+user set ('$user' isn't valid)
+END
         }
     }
     &overwrite("db-h/$hash/$ref.report",
@@ -765,7 +778,7 @@ END
     &htmllog($newref ? "Report" : "Information", "forwarded",
              join(', ',"$gSubmitList\@$gListDomain",@resentccs),
              "<code>$gBug#$ref</code>".
-             (length($data->{package})? "; Package <code>".&sani($data->{package})."</code>" : '').
+             (length($data->{package})? "; Package <code>".html_escape($data->{package})."</code>" : '').
              ".");
     &sendmessage(<<END,["$gSubmitList\@$gListDomain",@resentccs],[@bccs]);
 Subject: $gBug#$ref: $newsubject
@@ -788,13 +801,13 @@ END
         &htmllog($newref ? "Report" : "Information", "forwarded",
                  $resentccval,
                  "<code>$gBug#$ref</code>".
-                 (length($data->{package}) ? "; Package <code>".&sani($data->{package})."</code>" : '').
+                 (length($data->{package}) ? "; Package <code>".html_escape($data->{package})."</code>" : '').
                  ".");
     } else {
         &htmllog($newref ? "Report" : "Information", "stored",
                  "",
                  "<code>$gBug#$ref</code>".
-                 (length($data->{package}) ? "; Package <code>".&sani($data->{package})."</code>" : '').
+                 (length($data->{package}) ? "; Package <code>".html_escape($data->{package})."</code>" : '').
                  ".");
     }
     &sendmessage(<<END,[@resentccs],[@bccs]);
@@ -812,10 +825,10 @@ ${source_pr_header}$fwd
 END
 }
 
-$htmlbreak= length($brokenness) ? "<p>\n".&sani($brokenness)."\n<p>\n" : '';
+$htmlbreak= length($brokenness) ? "<p>\n".html_escape($brokenness)."\n<p>\n" : '';
 $htmlbreak =~ s/\n\n/\n<P>\n\n/g;
 if (length($resentccval)) {
-    $htmlbreak = "  Copy sent to <code>".&sani($resentccval)."</code>.".
+    $htmlbreak = "  Copy sent to <code>".html_escape($resentccval)."</code>.".
         $htmlbreak;
 }
 unless (exists $header{'x-debbugs-no-ack'}) {
@@ -1059,7 +1072,7 @@ sub appendlog {
         print DEBUG "failed open log err $!<\n";
         &quit("opening db-h/$hash/$ref.log (li): $!");
     }
-    print(AP "\7\n",@{escapelog(@log)},"\n\3\n") || &quit("writing db-h/$hash/$ref.log (li): $!");
+    print(AP "\7\n",escape_log(@log),"\n\3\n") || &quit("writing db-h/$hash/$ref.log (li): $!");
     close(AP) || &quit("closing db-h/$hash/$ref.log (li): $!");
 }
 
@@ -1080,7 +1093,7 @@ sub htmllog {
     print(AP
           "\6\n".
           "<strong>$whatobj $whatverb</strong>".
-          ($where eq '' ? "" : " to <code>".&sani($where)."</code>").
+          ($where eq '' ? "" : " to <code>".html_escape($where)."</code>").
           ":<br>\n". $desc.
           "\n\3\n") || &quit("writing db-h/$hash/$ref.log (lh): $!");
     close(AP) || &quit("closing db-h/$hash/$ref.log (lh): $!");
@@ -1143,7 +1156,7 @@ sub sendmessage {
     #save email to the log
     open(AP,">>db-h/$hash/$ref.log") || &quit("opening db-h/$hash/$ref.log (lo): $!");
     print(AP "\2\n",join("\4",@$recips),"\n\5\n",
-          @{escapelog(stripbccs($msg))},"\n\3\n") ||
+          escape_log(stripbccs($msg)),"\n\3\n") ||
         &quit("writing db-h/$hash/$ref.log (lo): $!");
     close(AP) || &quit("closing db-h/$hash/$ref.log (lo): $!");