#!/usr/bin/env perl
#
# Accepteer een mail op stdin,
# schrijf die weg in een file genaamd <SUBJECT>-<teller>,
# en upload de file met sftp.
# 
# Casper Gielen, 2014, GPLv2+
#

# todo: 
# - geuploadete files na een tijdje weggooien uit $dir (cronjob?)
#

my $dir="/tmp/m2s";
my $host="localhost";

use Email::MIME;
use File::CounterFile;
use Net::SFTP::Foreign;

# subject en eerste mime-part extraheren
my $email = Email::MIME->new(join('', <STDIN>));
my $subject = $email->header("Subject");
my $body = ($email->parts)[0]->body_str;

# tellertje bijhouden
my $counter = new File::CounterFile "./counter";
$counter->lock;
my $id = $counter->inc;
$counter->unlock;

# wegkrabbelen
my $filename="$subject-$id";
my $filepath=$dir."/".$filename;

open(F, ">:encoding(UTF-8)", $filepath) or die "Cannot open file $!";
print F $body;
close(F);

# uploaden
my $sftp = Net::SFTP::Foreign->new($host, autodie => 1);
$sftp->put($filepath, $filename);

__END__

=head1 NAME

mail2sftp - Upload de body van een MIME-encoded email naar sftp

=head1 DESCRIPTION

GX stuurt formulieren per e-mail. Die moeten via sftp worden geupload
naar een server van LIS Office Automation.

