]> git.decadent.org.uk Git - dak.git/blobdiff - tools/debianqueued-0.9/debianqueued
debianqueued: Fix a brown-paper-bag bug (we just dont know who to assign tthe month...
[dak.git] / tools / debianqueued-0.9 / debianqueued
index 97359b0f8b540099e9dd546cb28a0550d62fee23..410e5716bab366c54d35d563ffcf6aade053e428 100755 (executable)
 require 5.002;
 use strict;
 use POSIX;
-use POSIX qw( sys_stat_h sys_wait_h signal_h );
+use POSIX qw( strftime sys_stat_h sys_wait_h signal_h );
 use Net::Ping;
 use Net::FTP;
 use Socket qw( PF_INET AF_INET SOCK_STREAM );
@@ -276,6 +276,7 @@ $junk = $conf::no_changes_timeout;
 $junk = @conf::nonus_packages;
 $junk = @conf::test_binaries;
 $junk = @conf::maintainer_mail;
+$junk = $conf::mail ||= '/usr/sbin/sendmail';
 $conf::target = "localhost" if $conf::upload_method eq "copy";
 package main;
 
@@ -1168,6 +1169,8 @@ sub process_commands($) {
 
        if ($pgplines < 3) {
                msg( "log,mail", "$commands isn't signed with PGP/GnuPG\n" );
+               msg( "mail", "or the uploaded file is broken. Make sure to transfer in binary mode\n" );
+               msg( "mail", "or better yet - use dcut for commands files\n");
                goto remove;
        }
        
@@ -2090,7 +2093,6 @@ sub init_mail(;$) {
 # then send out
 #
 sub finish_mail() {
-       local( *MAIL );
 
        debug( "No mail for $main::mail_addr" )
                if $main::mail_addr && !$main::mail_text;
@@ -2124,34 +2126,41 @@ sub send_mail($$$) {
        my $subject = shift;
        my $text = shift;
 
-        my $package = join(' ', keys %main::packages);
+       my $package = keys %main::packages ? join(' ', keys %main::packages) : "";
 
-        use Email::Send;
+       use Email::Send;
 
-        my $message = <<'__MESSAGE__';
-        To: $addr
-        From: dak@ftp-master.debian.org
-        Subject: $subject
-        X-Debian: DAK
+        unless (defined($Email::Send::Sendmail::SENDMAIL)) {
+               $Email::Send::Sendmail::SENDMAIL = $conf::mail;
+       }
+
+       my $date = sprintf "%s", strftime("%a, %d %b %Y %T %z", (localtime(time)));
+       my $message = <<__MESSAGE__;
+To: $addr
+From: Archive Administrator <dak\@ftp-master.debian.org>
+Subject: $subject
+Date: $date
+X-Debian: DAK
 __MESSAGE__
 
-        if (length $package) {
-            $message .= "X-Debian-Package: $package\n";
-        }
+       if (length $package) {
+               $message .= "X-Debian-Package: $package\n";
+       }
 
-        $message .= "\n$text";
+       $message .= "\n$text";
+       $message .= "\nGreetings,\n\n\tYour Debian queue daemon\n";
 
-        my $mail = Email::Send->new;
-        for ( qw[Sendmail SMTP] ) {
-            $mail->mailer($_) and last if $mail->mailer_available($_);
-        }
+       my $mail = Email::Send->new;
+       for ( qw[Sendmail SMTP] ) {
+               $mail->mailer($_) and last if $mail->mailer_available($_);
+       }
 
-        my $ret = $mail->send($message);
-        if ($ret && $ret !~ /Message sent/) {
-            return 0;
-        }
+       my $ret = $mail->send($message);
+       if ($ret && $ret !~ /Message sent|success/) {
+               return 0;
+       }
 
-        return 1;
+       return 1;
 }
 
 #