#!/usr/local/bin/perl -w

umask 0022;

my $name = `date +%Y-%m-%d-%H:%M:%S`;
chomp($name);
$name .= "-$$";

open(DROP,">","/usr/ctm/incomming/$name")
	or die "Failed to open $name in dropdir ($!)\n";
while(<STDIN>) {
	print DROP $_;
}
close(DROP)
	or die "Failed to close $name in dropdir ($!)\n";

## Check signatures

my $dropname = "/usr/ctm/incomming/$name";
my $plainname = "/usr/ctm/sigs/" . $name . "-plain";
my $logname = "/usr/ctm/sigs/" . $name . "-log";
my $statusname = "/usr/ctm/sigs/" . $name . "-status";
my $keyring = "/root/uucpkeyring";

system "gpg --no-default-keyring --keyring \Q$keyring\E --status-fd 3 -d < \Q$dropname\E > \Q$plainname\E 2> \Q$logname\E 3> \Q$statusname\E";

## Interpret signature check

open(STATUS,"<",$statusname);
$line = <STATUS>; chomp($line); $line =~ /^\[GNUPG:\] PLAINTEXT 74 0/ or exit 0;
$line = <STATUS>; chomp($line); $line =~ /^\[GNUPG:\] NEWSIG/ or exit 0;
$line = <STATUS>; chomp($line); $line =~ /^\[GNUPG:\] SIG_ID/ or exit 0;
$line = <STATUS>; chomp($line); $line =~ /^\[GNUPG:\] GOODSIG D047A1D765FE4840/ or exit 0;
$line = <STATUS>; chomp($line); $line =~ /^\[GNUPG:\] VALIDSIG 57C2E2F809F114312EB326F9D047A1D765FE4840/ or exit 0;
$line = <STATUS>; chomp($line); $line =~ /^\[GNUPG:\] TRUST/ or exit 0;
$line = <STATUS>; ! $line or exit 0;
close(STATUS);

## if reached here, signature is good and we can trust $plainname

my $goodname = "/usr/ctm/goodmails/" . $name;

rename $plainname, $goodname;

exit 0;
