Move email addresses to configuration file
authorJacob Bachmeyer <jcb@gnu.org>
Tue, 28 Mar 2023 04:35:25 +0000 (23:35 -0500)
committerJacob Bachmeyer <jcb@gnu.org>
Tue, 28 Mar 2023 04:35:25 +0000 (23:35 -0500)
The testsuite is expanded to cover the new options.

gatekeeper.pl
testsuite/gatekeeper.all/20_config.exp

index 8c80b00b56f50229849ceb6c5788b82f36b47d19..76fbe6b3c87de39ec3083f18718867a7911aec71 100755 (executable)
@@ -295,6 +295,8 @@ BEGIN {
   my $c_Zone_Tag = '';         # CONF_Zone_Tag
   my $c_Email_Blacklist;       # CONF_Email_Blacklist
   my $c_Email_MaintainerMap;   # CONF_Email_Maintainers
+  my $c_Email_SourceAddress;   # CONF_Email_SourceAddress
+  my $c_Email_ReturnAddress;   # CONF_Email_ReturnAddress
   my $c_Email_ArchiveBox;      # CONF_Email_PublicArchive
   my $c_Email_InternalBox;     # CONF_Email_InternalArchive
   my $c_Package_Config;                # CONF_DIR_ConfigBase
@@ -319,6 +321,9 @@ BEGIN {
       $c_Email_Blacklist   =   File::Spec->catfile($base, 'email.blacklist');
       $c_Email_MaintainerMap = File::Spec->catfile($base, 'm.bypkg');
 
+      $c_Email_SourceAddress = 'ftp-upload-script@gnu.org';
+      $c_Email_ReturnAddress = 'ftp-upload@gnu.org';
+
       $c_Email_ArchiveBox = 'ftp-upload-report@gnu.org';
       $c_Email_InternalBox = 'ftp-upload-script@gnu.org';
 
@@ -377,6 +382,9 @@ BEGIN {
       $c_Email_Blacklist = $EmailConfig{blacklist};
       $c_Email_MaintainerMap = $EmailConfig{maintainermap};
 
+      $c_Email_SourceAddress = $EmailConfig{sourcebox};
+      $c_Email_ReturnAddress = $EmailConfig{returnbox};
+
       $c_Email_ArchiveBox = $EmailConfig{archivebox};
       $c_Email_InternalBox = $EmailConfig{internalbox};
 
@@ -412,6 +420,7 @@ BEGIN {
                        [archivedir => $c_dir_Archive])
        { print $item->[0],' = ',$item->[1],"\n" if $item->[1] }
       if ($c_Email_Blacklist || $c_Email_MaintainerMap
+         || $c_Email_SourceAddress || $c_Email_ReturnAddress
          || $c_Email_ArchiveBox || $c_Email_InternalBox) {
        print "\n[email]\n";
        print "blacklist = $c_Email_Blacklist\n"
@@ -420,6 +429,13 @@ BEGIN {
          if $c_Email_MaintainerMap;
        print "\n"
          if ($c_Email_Blacklist || $c_Email_MaintainerMap)
+           && ($c_Email_SourceAddress || $c_Email_ReturnAddress);
+       print "sourcebox = $c_Email_SourceAddress\n"
+         if $c_Email_SourceAddress;
+       print "returnbox = $c_Email_ReturnAddress\n"
+         if $c_Email_ReturnAddress;
+       print "\n"
+         if ($c_Email_SourceAddress || $c_Email_ReturnAddress)
            && ($c_Email_ArchiveBox || $c_Email_InternalBox);
        print "archivebox = $c_Email_ArchiveBox\n"
          if $c_Email_ArchiveBox;
@@ -449,9 +465,6 @@ BEGIN {
       die "gatekeeper: required configuration parameter(s) not set\n"
        unless $ok;
     }
-
-    exit 0 if $CheckConfigurationParse;
-
   } # end of configuration handling skipped for --help and --version
 
   constant->import(CONF_Log_Tag => $c_Log_Tag);
@@ -459,6 +472,9 @@ BEGIN {
 
   constant->import(CONF_Email_Blacklist => $c_Email_Blacklist);
   constant->import(CONF_Email_Maintainers => $c_Email_MaintainerMap || '');
+  constant->import(CONF_Email_SourceAddress => $c_Email_SourceAddress);
+  constant->import(CONF_Email_ReturnAddress =>
+                  $c_Email_ReturnAddress || $c_Email_SourceAddress);
   constant->import(CONF_Email_PublicArchive => $c_Email_ArchiveBox);
   constant->import(CONF_Email_InternalArchive => $c_Email_InternalBox);
 
@@ -471,6 +487,8 @@ BEGIN {
   constant->import(CONF_DIR_Archive => $c_dir_Archive);
 
   constant->import(CONF_FILE_Serials => $c_Serials_FileName);
+
+  exit 0 if $CheckConfigurationParse;  # stop here if checking parser
 }
 
 if (WANT_VERSION) {
@@ -2795,6 +2813,8 @@ sub mail {
   my $msg = shift;
   my %args = @_;
 
+  return unless CONF_Email_SourceAddress;
+
   $args{subject} = 'generic failure' unless $args{subject};
 
   my @email_list = (CONF_Email_InternalArchive);
@@ -2817,9 +2837,9 @@ sub mail {
   # value in the address list.  Remove it.
   @email_list = grep defined, @email_list;
 
-  my $sender = 'ftp-upload-script@gnu.org';
-  $sender = 'ftp-upload@gnu.org'
-    if defined $args{to}; # We really want replies to go to the ftp-upload queue
+  my $sender = CONF_Email_SourceAddress;
+  $sender = CONF_Email_ReturnAddress
+    if defined $args{to}; # We really want replies to go to the return box.
 
   @email_list = exclude_mail_blacklist(CONF_Email_Blacklist, @email_list)
     if CONF_Email_Blacklist;
@@ -2836,7 +2856,7 @@ sub mail {
            [From       => $sender],
            [Date       => strftime("%a, %e %b %Y %H:%M:%S %z", localtime)],
            [Subject    => $args{subject}],
-           ['Reply-To' => 'ftp-upload@gnu.org'],
+           ['Reply-To' => CONF_Email_ReturnAddress],
            ['Message-ID'=> Email::MessageID->new->in_brackets],
           ],
           wrap('','',$msg));
@@ -2854,16 +2874,16 @@ sub report_upload_to_archive {
   my $msg = shift;
   my $package_name = shift;
 
-  return unless CONF_Email_PublicArchive;
+  return unless CONF_Email_PublicArchive && CONF_Email_SourceAddress;
 
-  sendmail('ftp-upload-script@gnu.org',
+  sendmail(CONF_Email_SourceAddress,
           [CONF_Email_PublicArchive],
           [[To         => CONF_Email_PublicArchive],
-           [From       => 'ftp-upload-script@gnu.org'],
+           [From       => CONF_Email_SourceAddress],
            [Date       => strftime("%a, %e %b %Y %H:%M:%S %z", localtime)],
            [Subject    => ("[".CONF_Zone_Tag." gnu-ftp-debug] "
                            ."new upload processed: $package_name")],
-           ['Reply-To' => 'ftp-upload@gnu.org'],
+           ['Reply-To' => CONF_Email_ReturnAddress],
            ['Message-ID'=> Email::MessageID->new->in_brackets],
           ],
           $msg);
index 8ed3f45d3ef8b34052701f2b394a5d67b8663fda..c1690365d2b20a9d9a31c156f06f9a15c79f5ae2 100644 (file)
@@ -161,6 +161,9 @@ append configuration_file(basic-email) {
 blacklist = /srv/gatetest/config/email.blacklist
 maintainermap = /srv/gatetest/config/maintainers.bypkg
 
+sourcebox = upload-handler@example.org
+returnbox = upload-admin@example.org
+
 archivebox = public@example.org
 internalbox = internal@example.org
 }
@@ -190,12 +193,14 @@ do_configuration_test "parse basic configuration with email" basic-email.conf \
 proc run_email_option_coverage_test {} {
     global configuration_file
 
-    for { set i 0 } { $i <= 15 } { incr i } {
+    for { set i 0 } { $i <= 63 } { incr i } {
        set cnf $configuration_file(basic-email)
        if { $i & 1<<0 } { regsub -line {^blacklist = .*\n}     $cnf "" cnf }
        if { $i & 1<<1 } { regsub -line {^maintainermap = .*\n} $cnf "" cnf }
-       if { $i & 1<<2 } { regsub -line {^archivebox = .*\n}    $cnf "" cnf }
-       if { $i & 1<<3 } { regsub -line {^internalbox = .*\n}   $cnf "" cnf }
+       if { $i & 1<<2 } { regsub -line {^sourcebox = .*\n}     $cnf "" cnf }
+       if { $i & 1<<3 } { regsub -line {^returnbox = .*\n}     $cnf "" cnf }
+       if { $i & 1<<4 } { regsub -line {^archivebox = .*\n}    $cnf "" cnf }
+       if { $i & 1<<5 } { regsub -line {^internalbox = .*\n}   $cnf "" cnf }
        do_configuration_test \
            "email configuration coverage $i" "email-$i.conf" $cnf {} {0 {}}
     }