summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorByron Jones <bjones@mozilla.com>2013-02-20 09:37:18 +0100
committerByron Jones <bjones@mozilla.com>2013-02-20 09:37:18 +0100
commit39e464daa0068f00fc1ae47a4dfbe952403b9d1d (patch)
tree930d25ef19c23115ee6e70d3146ac8343e1c472d
parent70f367216ff5af3731bced4ec0b206e1c8a4da2c (diff)
downloadbugzilla-39e464daa0068f00fc1ae47a4dfbe952403b9d1d.tar.gz
bugzilla-39e464daa0068f00fc1ae47a4dfbe952403b9d1d.tar.xz
Update and enable LimitedEmail extension
-rw-r--r--Bugzilla/Mailer.pm3
-rw-r--r--extensions/BMO/lib/Data.pm6
-rw-r--r--extensions/LimitedEmail/Config.pm31
-rw-r--r--extensions/LimitedEmail/Extension.pm70
-rw-r--r--extensions/LimitedEmail/disabled0
5 files changed, 51 insertions, 59 deletions
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 <bjones@mozilla.com>
+# 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 <bjones@mozilla.com>
+# 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
--- a/extensions/LimitedEmail/disabled
+++ /dev/null