mirror of
https://github.com/moparisthebest/gpgit
synced 2024-08-13 15:53:50 -04:00
Implemented --encrypt-mode and --help arguments. We now default to using
PGP/MIME for encryption at all times, but there are several modes for using inline encryption too. See --help.
This commit is contained in:
parent
e8ce1ea990
commit
e6d73b62f6
8
TODO
8
TODO
@ -25,12 +25,6 @@ it. Patches welcome.
|
|||||||
|
|
||||||
--on-missing-key output-plain / discard-recipient / die
|
--on-missing-key output-plain / discard-recipient / die
|
||||||
|
|
||||||
6.) At the moment, we prefer inline encryption and fall back to PGP/MIME if
|
6.) Optionally specify path to the gpg "homedir" on the command line
|
||||||
the message is multipart. Should provide several different optional modes
|
|
||||||
of encryption.
|
|
||||||
|
|
||||||
--encrypt-mode prefer-inline / pgpmime / inline-or-plain
|
|
||||||
|
|
||||||
7.) Optionally specify path to the gpg "homedir" on the command line
|
|
||||||
|
|
||||||
--gpg-home path-to-gnupg-directory
|
--gpg-home path-to-gnupg-directory
|
||||||
|
63
gpgit.pl
63
gpgit.pl
@ -26,9 +26,28 @@ use Mail::GnuPG;
|
|||||||
use MIME::Parser;
|
use MIME::Parser;
|
||||||
|
|
||||||
## Parse args
|
## Parse args
|
||||||
my @recipients = @ARGV;
|
my $encrypt_mode = 'pgpmime';
|
||||||
die "Bad arguments. Missing email address\n" unless int(@recipients);
|
my @recipients = ();
|
||||||
die "Bad arguments. Invalid email address\n" if grep( !/^.+\@.+$/, @recipients );
|
{
|
||||||
|
help() unless @ARGV;
|
||||||
|
my @args = @ARGV;
|
||||||
|
while( @args ){
|
||||||
|
my $key = shift @args;
|
||||||
|
if( $key eq '--help' || $key eq '-h' ){
|
||||||
|
help();
|
||||||
|
} elsif( $key eq '--encrypt-mode' ){
|
||||||
|
$encrypt_mode = shift @args;
|
||||||
|
unless( defined $encrypt_mode && grep( $encrypt_mode eq $_, 'prefer-inline', 'pgpmime', 'inline-or-plain' ) ){
|
||||||
|
die "Bad value for --encrypt-mode\n";
|
||||||
|
}
|
||||||
|
} elsif( $key =~ /^.+\@.+$/ ){
|
||||||
|
push @recipients, $key;
|
||||||
|
} else {
|
||||||
|
die "Bad argument: $key\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
die "Missing recipients\n" unless @recipients;
|
||||||
|
}
|
||||||
|
|
||||||
## Object for GPG encryption
|
## Object for GPG encryption
|
||||||
my $gpg = new Mail::GnuPG();
|
my $gpg = new Mail::GnuPG();
|
||||||
@ -68,9 +87,20 @@ use MIME::Parser;
|
|||||||
{
|
{
|
||||||
$mime->make_singlepart;
|
$mime->make_singlepart;
|
||||||
|
|
||||||
my $code = $mime->mime_type =~ /^text\/plain/
|
my $code;
|
||||||
|
if( $encrypt_mode eq 'pgpmime' ){
|
||||||
|
$code = $gpg->mime_encrypt( $mime, @recipients );
|
||||||
|
} elsif( $encrypt_mode eq 'prefer-inline' ){
|
||||||
|
$code = $mime->mime_type =~ /^text\/plain/
|
||||||
? $gpg->ascii_encrypt( $mime, @recipients )
|
? $gpg->ascii_encrypt( $mime, @recipients )
|
||||||
: $gpg->mime_encrypt( $mime, @recipients );
|
: $gpg->mime_encrypt( $mime, @recipients );
|
||||||
|
} elsif( $encrypt_mode eq 'inline-or-plain' ){
|
||||||
|
if( $mime->mime_type =~ /^text\/plain/ ){
|
||||||
|
$code = $gpg->ascii_encrypt( $mime, @recipients );
|
||||||
|
} else {
|
||||||
|
print $plain; exit 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( $code ){
|
if( $code ){
|
||||||
print $plain;
|
print $plain;
|
||||||
@ -83,3 +113,28 @@ use MIME::Parser;
|
|||||||
|
|
||||||
## Print out the encrypted version
|
## Print out the encrypted version
|
||||||
print $mime->stringify;
|
print $mime->stringify;
|
||||||
|
|
||||||
|
sub help {
|
||||||
|
print << "END_HELP";
|
||||||
|
Usage: gpgit.pl recipient1 recipient2
|
||||||
|
|
||||||
|
Gpgit takes a list of email addresses as its arguments. The email is encrypted
|
||||||
|
using the public keys associated with those email addresses.
|
||||||
|
|
||||||
|
Optional arguments:
|
||||||
|
|
||||||
|
--help or -h
|
||||||
|
|
||||||
|
Display this usage information.
|
||||||
|
|
||||||
|
--encrypt-mode prefer-inline / pgpmime / inline-or-plain
|
||||||
|
|
||||||
|
Single part text emails can be encrypted inline, or using PGP/MIME. Multi-part
|
||||||
|
emails can only be encrypted using PGP/MIME. "pgpmime" is the default for this
|
||||||
|
argument and means we will always use PGP/MIME. "prefer-inline" means that we
|
||||||
|
will use inline if possible, and PGP/MIME if not. "inline-or-plain" will use
|
||||||
|
inline encryption for single part emails, and no encryption for multi-part
|
||||||
|
emails.
|
||||||
|
END_HELP
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user