summaryrefslogtreecommitdiffstats
path: root/extensions/LimitedEmail/Extension.pm
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 /extensions/LimitedEmail/Extension.pm
parent70f367216ff5af3731bced4ec0b206e1c8a4da2c (diff)
downloadbugzilla-39e464daa0068f00fc1ae47a4dfbe952403b9d1d.tar.gz
bugzilla-39e464daa0068f00fc1ae47a4dfbe952403b9d1d.tar.xz
Update and enable LimitedEmail extension
Diffstat (limited to 'extensions/LimitedEmail/Extension.pm')
-rw-r--r--extensions/LimitedEmail/Extension.pm70
1 files changed, 35 insertions, 35 deletions
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;