From 153c65f7f896e6aef3af1529223854864bf6abb3 Mon Sep 17 00:00:00 2001 From: Jacob Bachmeyer Date: Fri, 28 Oct 2022 18:37:48 -0500 Subject: [PATCH] Revise exclude_mail_blacklist --- gatekeeper.pl | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/gatekeeper.pl b/gatekeeper.pl index 3011c77..2999438 100755 --- a/gatekeeper.pl +++ b/gatekeeper.pl @@ -985,23 +985,30 @@ END # - Email # +=item @filtered = exclude_mail_blacklist ( $blacklist_file, @addresses ) + +Filter ADDRESSES to remove addresses mentioned in BLACKLIST_FILE. + +=cut + sub exclude_mail_blacklist { - my @emaillist = @_; - my @blacklist = (); - my @tomail = @emaillist; - if (-f $email_blacklist) { - open(BLACKLIST, "<$email_blacklist"); - @blacklist = ; - close(BLACKLIST); - chomp(@blacklist); - - my %blacklist = map{$_ => 1 } @blacklist; - my %emaillist = map{$_ => 1 } @emaillist; - - @tomail = grep(!defined $blacklist{$_}, @emaillist); - } + my $blacklist_file = shift; + my @emaillist = @_; + + local *_; + my %blacklist; + + my @filtered = @emaillist; + if (-f $blacklist_file) { + open BLACKLIST, '<', $blacklist_file + or ftp_abort("open($blacklist_file) failed: $!"); + while () { chomp; $blacklist{$_}++ } + close BLACKLIST or ftp_abort("close($blacklist_file) failed: $!"); + + @filtered = grep !$blacklist{$_}, @emaillist; + } - return @tomail; + return @filtered; } # Used for both success and failure. @@ -1043,7 +1050,7 @@ sub mail { $sender = 'ftp-upload@gnu.org' if ($send_to_user); # We really want replies to go to the ftp-upload queue - @email_list = exclude_mail_blacklist(@email_list); + @email_list = exclude_mail_blacklist($email_blacklist, @email_list); #print STDERR "final emails: @email_list\n"; # return @_; -- 2.25.1