diff options
Diffstat (limited to 'extensions/LimitedEmail/Extension.pm')
-rw-r--r-- | extensions/LimitedEmail/Extension.pm | 70 |
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; |