#!/usr/bin/perl
#
#
#
use strict;
use MIME::Parser;
use Date::Format;

my ($arg_i,$arg_f,$mail_from,$send_to) = @ARGV;

my $DEBUG = $ENV{DEBUG};
my $config_file = $ENV{FORWARD_CONFIG} || '/etc/benno-web/benno.conf';

my %config = read_config($config_file);

my $sendmail_cmd   = $config{FORWARD_SENDMAIL} || '/usr/sbin/sendmail';
my $subject_prefix = $config{FORWARD_SUBJECT_PREFIX};

my $parser  = new MIME::Parser;
$parser->output_to_core(1);
my $entity  = $parser->parse(\*STDIN) or die "Parse failed\n";
my $head    = $entity->head;

# Change subject
my $subject = $head->get('Subject');
if ($subject_prefix) {
    $head->replace('Subject',$subject_prefix.' '.$subject);
}

my $org_date    = $head->get('Date');
$head->add('X-Benno-Date',$org_date);
$head->replace('Date',time2str('%a, %d %b %Y %H:%M:%S %z', time));

$head->delete('Received');
$head->delete('DKIM-Signature');
$head->delete('Authentication-Results');

open my $sendmail, "|$sendmail_cmd $arg_i $arg_f $mail_from $send_to"
    or die "Cannot call $sendmail_cmd: $!";

print $sendmail $entity->stringify;

close $sendmail;

### SUB ###
sub read_config
{
  my $configfile = shift;
  my %config;
  # _very_ simple config file parser
  #
  # Config format:   var = val
  #
  open CONF, "$configfile" or die "Cannot open config file $configfile. $!\n";
  foreach my $line (<CONF>) {
      next if $line =~ /^$/;
      next if $line =~ /^#/;
      chomp $line;
      my ($var,$val) = split(/=/, $line,2);
      # strip ws
      $var =~ s/\s//g;
      $val =~ s/^\s+//g;
      $val =~ s/\s+$//g;
      print "  $var => $val\n" if $DEBUG;
      $config{$var} = $val;
  }
  close CONF;
  return %config;
}
