X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FInterface%2FEmail%2FAuth%2FGnuPG.pm;h=87a523dad885d8a54aac63c145bc89055f1e7fc8;hb=a72a10f754f7465121d6137bb3dcee0a21ea6443;hp=df987d80661313508c9ed4b865ef5752efeb42f6;hpb=63a268637b2d51a8766412617724b9436439deb6;p=freeside.git diff --git a/rt/lib/RT/Interface/Email/Auth/GnuPG.pm b/rt/lib/RT/Interface/Email/Auth/GnuPG.pm index df987d806..87a523dad 100755 --- a/rt/lib/RT/Interface/Email/Auth/GnuPG.pm +++ b/rt/lib/RT/Interface/Email/Auth/GnuPG.pm @@ -1,40 +1,40 @@ # BEGIN BPS TAGGED BLOCK {{{ -# +# # COPYRIGHT: -# -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# -# +# +# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +# +# # (Except where explicitly superseded by other copyright notices) -# -# +# +# # LICENSE: -# +# # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have # been provided with this software, but in any event can be snarfed # from www.gnu.org. -# +# # This work is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 or visit their web page on the internet at # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# +# +# # CONTRIBUTION SUBMISSION POLICY: -# +# # (The following paragraph is not intended to limit the rights granted # to you to modify and distribute this software under the terms of # the GNU General Public License and is only of importance to you if # you choose to contribute your changes and enhancements to the # community by submitting them to Best Practical Solutions, LLC.) -# +# # By intentionally submitting any modifications, corrections or # derivatives to this work, or any other work intended for use with # Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,7 +43,7 @@ # royalty-free, perpetual, license to use, copy, create derivative # works based on those contributions, and sublicense and distribute # those contributions and any derivatives thereof. -# +# # END BPS TAGGED BLOCK }}} package RT::Interface::Email::Auth::GnuPG; @@ -58,7 +58,7 @@ To use the gnupg-secured mail gateway, you need to do the following: Set up a GnuPG key directory with a pubring containing only the keys you care about and specify the following in your SiteConfig.pm - Set(%GnuPGOptions, homedir => '/opt/rt3/var/data/GnuPG'); + Set(%GnuPGOptions, homedir => '/opt/rt4/var/data/GnuPG'); Set(@MailPlugins, 'Auth::MailFrom', 'Auth::GnuPG', ...other filter...); =cut @@ -75,15 +75,21 @@ sub GetCurrentUser { @_ ); - $args{'Message'}->head->delete($_) - for qw(X-RT-GnuPG-Status X-RT-Incoming-Encrypton - X-RT-Incoming-Signature X-RT-Privacy); + foreach my $p ( $args{'Message'}->parts_DFS ) { + $p->head->delete($_) for qw( + X-RT-GnuPG-Status X-RT-Incoming-Encryption + X-RT-Incoming-Signature X-RT-Privacy + X-RT-Sign X-RT-Encrypt + ); + } my $msg = $args{'Message'}->dup; - my ($status, @res) = VerifyDecrypt( Entity => $args{'Message'} ); + my ($status, @res) = VerifyDecrypt( + Entity => $args{'Message'}, AddStatus => 1, + ); if ( $status && !@res ) { - $args{'Message'}->head->add( + $args{'Message'}->head->replace( 'X-RT-Incoming-Encryption' => 'Not encrypted' ); @@ -107,7 +113,7 @@ sub GetCurrentUser { Data => ${ $args{'RawMessageRef'} }, ); - $args{'Message'}->head->add( 'X-RT-Privacy' => 'PGP' ); + $args{'Message'}->head->replace( 'X-RT-Privacy' => 'PGP' ); foreach my $part ( $args{'Message'}->parts_DFS ) { my $decrypted; @@ -119,14 +125,14 @@ sub GetCurrentUser { $decrypted = 1; } if ( $_->{Operation} eq 'Verify' && $_->{Status} eq 'DONE' ) { - $part->head->add( + $part->head->replace( 'X-RT-Incoming-Signature' => $_->{UserString} ); } } } - $part->head->add( + $part->head->replace( 'X-RT-Incoming-Encryption' => $decrypted ? 'Success' : 'Not encrypted' ); @@ -245,14 +251,7 @@ sub VerifyDecrypt { return $status, @res, @nested; } -eval "require RT::Interface::Email::Auth::GnuPG_Vendor"; -die $@ - if ( $@ - && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/GnuPG_Vendor.pm} ); -eval "require RT::Interface::Email::Auth::GnuPG_Local"; -die $@ - if ( $@ - && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/GnuPG_Local.pm} ); +RT::Base->_ImportOverlays(); 1;