diff options
Diffstat (limited to 'extensions/LimitedEmail')
-rw-r--r-- | extensions/LimitedEmail/Config.pm | 38 | ||||
-rw-r--r-- | extensions/LimitedEmail/Extension.pm | 60 | ||||
-rw-r--r-- | extensions/LimitedEmail/disabled | 0 |
3 files changed, 98 insertions, 0 deletions
diff --git a/extensions/LimitedEmail/Config.pm b/extensions/LimitedEmail/Config.pm new file mode 100644 index 000000000..4622f26bc --- /dev/null +++ b/extensions/LimitedEmail/Config.pm @@ -0,0 +1,38 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# 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> + +package Bugzilla::Extension::LimitedEmail; + +use strict; +use constant NAME => 'LimitedEmail'; +use constant REQUIRED_MODULES => [ ]; +use constant OPTIONAL_MODULES => [ ]; + +use constant FILTERS => [ + qr/^(glob|dkl|justdave)\@mozilla\.com$/i, + qr/^gerv\@mozilla\.org$/i, + qr/^reed\@reedloden\.com/i, +]; + +use constant BLACK_HOLE => 'nobody@mozilla.org'; + +__PACKAGE__->NAME; diff --git a/extensions/LimitedEmail/Extension.pm b/extensions/LimitedEmail/Extension.pm new file mode 100644 index 000000000..253c3d900 --- /dev/null +++ b/extensions/LimitedEmail/Extension.pm @@ -0,0 +1,60 @@ +# -*- Mode: perl; indent-tabs-mode: nil -*- +# +# 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> + +package Bugzilla::Extension::LimitedEmail; +use strict; +use base qw(Bugzilla::Extension); + +our $VERSION = '1'; + +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}; + } + } +} + +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); + } +} + +sub deliver_to { + my $email = shift; + my $ra_filters = Bugzilla::Extension::LimitedEmail::FILTERS; + foreach my $re (@$ra_filters) { + if ($email =~ $re) { + return 1; + } + } + return 0; +} + +__PACKAGE__->NAME; diff --git a/extensions/LimitedEmail/disabled b/extensions/LimitedEmail/disabled new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/extensions/LimitedEmail/disabled |