From 39e464daa0068f00fc1ae47a4dfbe952403b9d1d Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Wed, 20 Feb 2013 16:37:18 +0800 Subject: Update and enable LimitedEmail extension --- Bugzilla/Mailer.pm | 3 ++ extensions/BMO/lib/Data.pm | 6 ++++ extensions/LimitedEmail/Config.pm | 31 ++++------------ extensions/LimitedEmail/Extension.pm | 70 ++++++++++++++++++------------------ extensions/LimitedEmail/disabled | 0 5 files changed, 51 insertions(+), 59 deletions(-) delete mode 100644 extensions/LimitedEmail/disabled diff --git a/Bugzilla/Mailer.pm b/Bugzilla/Mailer.pm index 7789af018..381422821 100644 --- a/Bugzilla/Mailer.pm +++ b/Bugzilla/Mailer.pm @@ -166,6 +166,9 @@ sub MessageToMTA { Bugzilla::Hook::process('mailer_before_send', { email => $email, mailer_args => \@args }); + # Allow for extensions to to drop the bugmail by clearing the 'to' header + return if $email->header('to') eq ''; + $email->walk_parts(sub { my ($part) = @_; return if $part->parts > 1; # Top-level diff --git a/extensions/BMO/lib/Data.pm b/extensions/BMO/lib/Data.pm index 88663fe43..ee2f273b2 100644 --- a/extensions/BMO/lib/Data.pm +++ b/extensions/BMO/lib/Data.pm @@ -291,6 +291,12 @@ our $cf_disabled_flags = [ 'cf_tracking_esr10', 'cf_status_esr10', 'cf_blocking_kilimanjaro', + 'cf_tracking_firefox18', + 'cf_status_firefox18', + 'cf_tracking_thunderbird18', + 'cf_status_thunderbird18', + 'cf_tracking_seamonkey215', + 'cf_status_seamonkey215', ]; # Who to CC on particular bugmails when certain groups are added or removed. diff --git a/extensions/LimitedEmail/Config.pm b/extensions/LimitedEmail/Config.pm index f1ab104bc..026398edb 100644 --- a/extensions/LimitedEmail/Config.pm +++ b/extensions/LimitedEmail/Config.pm @@ -1,24 +1,9 @@ -# -*- Mode: perl; indent-tabs-mode: nil -*- +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. # -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is the LimitedEmail Extension. - -# -# The Initial Developer of the Original Code is the Mozilla Foundation -# Portions created by the Initial Developers are Copyright (C) 2011 the -# Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Byron Jones +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. package Bugzilla::Extension::LimitedEmail; @@ -28,14 +13,12 @@ use constant REQUIRED_MODULES => [ ]; use constant OPTIONAL_MODULES => [ ]; use constant FILTERS => [ - qr/^(glob|dkl|justdave)\@mozilla\.com$/i, + qr/^(?:glob|dkl|justdave|shyam)\@mozilla\.com$/i, qr/^byron\.jones\@gmail\.com$/i, qr/^gerv\@mozilla\.org$/i, qr/^reed\@reedloden\.com$/i, - qr/^shyam\@mozilla\.com$/i, ]; -use constant BLACK_HOLE => 'nobody@mozilla.org'; - +use constant MAIL_LOG => 'data/mail.log'; __PACKAGE__->NAME; diff --git a/extensions/LimitedEmail/Extension.pm b/extensions/LimitedEmail/Extension.pm index 253c3d900..f2020a6cc 100644 --- a/extensions/LimitedEmail/Extension.pm +++ b/extensions/LimitedEmail/Extension.pm @@ -1,53 +1,48 @@ -# -*- Mode: perl; indent-tabs-mode: nil -*- +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. # -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is the LimitedEmail Extension. - -# -# The Initial Developer of the Original Code is the Mozilla Foundation -# Portions created by the Initial Developers are Copyright (C) 2011 the -# Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Byron Jones +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. package Bugzilla::Extension::LimitedEmail; use strict; use base qw(Bugzilla::Extension); -our $VERSION = '1'; +our $VERSION = '2'; -use Bugzilla::User; - -sub bugmail_recipients { - my ($self, $args) = @_; - foreach my $user_id (keys %{$args->{recipients}}) { - my $user = Bugzilla::User->new($user_id); - if (!deliver_to($user->email)) { - delete $args->{recipients}{$user_id}; - } - } -} +use FileHandle; +use Date::Format; +use Encode qw(encode_utf8); sub mailer_before_send { my ($self, $args) = @_; my $email = $args->{email}; - if (!deliver_to($email->{header}->header('to'))) { - $email->{header}->header_set(to => Bugzilla::Extension::LimitedEmail::BLACK_HOLE); + my $header = $email->{header}; + return if $header->header('to') eq ''; + + my $blocked = ''; + if (!deliver_to($header->header('to'))) { + $blocked = $header->header('to'); + $header->header_set(to => ''); + } + + my $fh = FileHandle->new('>>' . Bugzilla::Extension::LimitedEmail::MAIL_LOG); + if ($fh) { + print $fh encode_utf8(sprintf( + "[%s] %s%s %s : %s\n", + time2str('%D %T', time), + ($blocked eq '' ? '' : '(blocked) '), + ($blocked eq '' ? $header->header('to') : $blocked), + $header->header('X-Bugzilla-Reason') || '-', + $header->header('subject') + )); + $fh->close(); } } sub deliver_to { - my $email = shift; + my $email = address_of(shift); my $ra_filters = Bugzilla::Extension::LimitedEmail::FILTERS; foreach my $re (@$ra_filters) { if ($email =~ $re) { @@ -57,4 +52,9 @@ sub deliver_to { return 0; } +sub address_of { + my $email = shift; + return $email =~ /<([^>]+)>/ ? $1 : $email; +} + __PACKAGE__->NAME; diff --git a/extensions/LimitedEmail/disabled b/extensions/LimitedEmail/disabled deleted file mode 100644 index e69de29bb..000000000 -- cgit v1.2.3-24-g4f1b