X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FApp%2FEdwardNG.pm;h=4da1968ce2ab082321fc2ea5b334252f2ee6767e;hb=8dd68edb17156d846480991d2db9844c2b3ba6e6;hp=2d81020ea24ca6a287929f1b683cf3dc0844be3c;hpb=4224c4cea857a8ff83c22523e4adcf8e0568c042;p=app-edwardng.git
diff --git a/lib/App/EdwardNG.pm b/lib/App/EdwardNG.pm
index 2d81020..4da1968 100644
--- a/lib/App/EdwardNG.pm
+++ b/lib/App/EdwardNG.pm
@@ -8,7 +8,9 @@ our $VERSION = '0.001';
our @EXPORT = qw/process_message/;
use Email::Sender::Simple qw/sendmail/;
+use File::Share qw/dist_file/;
use File::Slurp qw/read_file/;
+use File::Spec::Functions qw/rel2abs/;
use Getopt::Long;
use MIME::Entity;
use MIME::Parser;
@@ -32,7 +34,7 @@ sub mg {
sub first_part{
my ($ent) = @_;
return first_part $ent->parts(0) if $ent->parts;
- $ent->bodyhandle->as_string
+ stringify [$ent->bodyhandle->as_lines]
}
sub process_message {
@@ -95,13 +97,16 @@ sub run {
'key=s' => \$ENV{EDWARDNG_KEY},
'keydir=s' => \$ENV{EDWARDNG_KEYDIR},
'passphrase=s' => \$ENV{EDWARDNG_PASSPHRASE},
+ 'tmpl-path=s' => \$ENV{EDWARDNG_TMPL_PATH},
'use-agent!' => \$ENV{EDWARDNG_USE_AGENT},
);
+ my $tmpl_path = $ENV{EDWARDNG_TMPL_PATH} // 'en';
my $parser = MIME::Parser->new;
$parser->decode_bodies(0);
$parser->output_to_core(1);
my $in = $parser->parse(\*STDIN);
+ debug 'Received mail from ', $in->get('From');
my ($tmpl, %params);
try {
@@ -109,10 +114,11 @@ sub run {
} catch {
($tmpl, %params) = (error => message => $_)
};
+ debug "Result is $tmpl, GnuPG said:\n", $params{message};
$params{plaintext} = first_part $params{decrypted} if $params{decrypted};
- my $tt = Template->new(INCLUDE_PATH => 'tmpl/en');
+ my $tt = Template->new(INCLUDE_PATH => rel2abs $tmpl_path, dist_file 'App-EdwardNG', 'tmpl');
my $data;
$tt->process($tmpl, \%params, \$data);
my $email = MIME::Entity->build(
@@ -124,7 +130,7 @@ sub run {
my $email_unencrypted = $email->dup;
my $mg = mg always_trust => 1;
my $encrypt_failed = $mg->mime_signencrypt($email, $in->get('From') =~ /<(.*)>/);
- debug 'Could not encrypt message, sending unencrypted. GnuPG said ', stringify $mg->{last_message} if $encrypt_failed;
+ debug 'Could not encrypt message, sending unencrypted. GnuPG said:', "\n", stringify $mg->{last_message} if $encrypt_failed;
sendmail $encrypt_failed ? $email_unencrypted : $email
}
@@ -163,8 +169,6 @@ App::EdwardNG - GnuPG email sign/encrypt testing bot
EdwardNG is a reimplementation of the Edward reply bot referenced in L.
-It takes mail messages, checks them for PGP signatures and encryption, then replies appropriately.
-
This module exports a single function, B, which takes a single parameter representing the message. This parameter can be:
=over