#!/usr/bin/perl
#
#
#
use strict;
use POSIX qw(strftime);

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};

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

my $header = 1;
while (my $line = <STDIN>) {
    if ($header && $subject_prefix) {
        if ($line =~ /^Subject:\s(.*)/ms) {
            $line = "Subject: $subject_prefix $1";
        }
        if ($line =~ /^Date:\s(.+)(\r?\n)/ms) {
            my $datestr = $1;
            my $crlf = $2;
            $line =  "X-Benno-Date: ${datestr}${crlf}";
            $line .= 'Date: '.strftime("%a, %d %b %Y %H:%M:%S %z$crlf", localtime(time()));
        }
    }
    $header = 0 if $line =~ /^$/;
    print $sendmail $line;
}

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;
}
