#!/opt/bin/perl

####################################################
#          form response survey form cgi           #
#          saves text as TAB delimited             #
#          Version 1.4. Jun 11, 1998               #
#          Brian Librandi, John Wiley & Sons       #               
####################################################

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);

foreach $pair (@pairs){
   ($name, $value) = split(/=/, $pair);

   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $name =~ tr/+/ /;
   $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
          
   $FORM{$name} = $value;
}

# Set varibales from HTML
$logfile = $FORM{LogFile};
$administrator = $FORM{SendResponse};
$from = $FORM{FromResponse};
$mailsubj = $FORM{SubjResponse};


	print ("Location: $FORM{ResponsePath}\n\n");
# Send mail to administrator(s)
 open(MAIL, "|/usr/lib/sendmail -t -F \"$from\"") || die "Can't open /usr/lib/sendmail!\n";
 print MAIL "To: $administrator\n";
 #print MAIL "From: $from\n";
 print MAIL "Subject: $mailsubj\n\n";
 print MAIL "\n\n";

foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $name =~ tr/+/ /;
   $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

      # Print the MAIL for each name value pair
      if (($value ne "")&&(($name ne "LogFile")&&($name ne "SendResponse")&&($name ne "FromResponse")&&($name ne "SubjResponse")&&($name ne "ResponsePath")&&($name ne "eResponsePath"))) {
         print MAIL "$name:   $value\n";
         print MAIL "____________________________________________\n\n";
      }
}
close (MAIL);

open(SURVEY, ">>$logfile.log") || die "Can't open $logfile.log!\n";
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /; 
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $name =~ tr/+/ /;
   $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   #print SURVEY "$name\;$value**\n";
      if (($value ne "")&&(($name ne "LogFile")&&($name ne "SendResponse")&&($name ne "FromResponse")&&($name ne "SubjResponse")&&($name ne "ResponsePath")&&($name ne "eResponsePath"))) {
   print SURVEY "$value\t";
      }
 
}
print SURVEY "\n";
close (SURVEY);
