#!/usr/local/bin/perl

require 'parseform.pl';
$sm = '/usr/lib/sendmail -t -fwebmaster@mit.edu';
print("Content-Type: text/html\n\n");

if($ENV{'REQUEST_METHOD'} eq 'POST'){
	read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
	$query =~ s/\+/ /g;
	%formfields = &parseform($query);
}
else{
	print("<h1>Huh?</h1>\n");
	exit;
}


$to = $formfields{'to'};
delete $formfields{'to'};

$to =~ s/\@[^\@\%]+mit.edu//;
if($to=~/[\@\%]/ || $to eq ''){
	print("<h1>Invalid recipient of Form</h1>\n");
	exit;
}

for $field (keys %formfields) {
	$output .= ("$field\n");
	$output .= "-" x length($field);
	$output .= "\n";
	$output .= $formfields{$field};
	$output .=("\n\n\n");
}

open(SM, "|$sm");
printf SM "From: Web.survey.user\nSubject: Web Survey Response\nTo: %s\n",
	$to;
    print SM "X-WebClient: $ENV{'HTTP_USER_AGENT'}\n";
    print SM $output,"\n";
#Reverse resolve the machine name from the IP address:

@ipaddr = split(/\./, $ENV{'REMOTE_ADDR'});
$packipaddr = pack('C4', @ipaddr);
$realname = (gethostbyaddr($packipaddr,2))[0];
unless ($realname)
{
    $realname = "could not reverse-resolve name"
}



    printf SM "\n-----\nsubmitted by user on %s (%s)\nEmail sent via the WWW survey form gateway at %s:%s.\n\nWarning: the sender's name and address may be forged.\n", $ENV{'REMOTE_ADDR'}, $realname, $ENV{'SERVER_NAME'}, $ENV{'SERVER_PORT'};

close(SM);

print("<h1>Sent</h1>\n");
print("<pre>$output</pre>\n");
