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

#############################################################################
#  
#   File:    mailform.pl
#
#   Input:   data from an HTML form called mailform.html
#
#   Output:  an HTML document, either confirming the message was sent
#            or reporting an error
#
#   From the HTML mail form, this perl script receives an URL-encoded 
#   message containing three pieces of data provided by the user: name, 
#   e-mail, and a message.  The script processes this data and sends an 
#   e-mail message to the recipient, after which the user is notified 
#   whether or not the mailing was successful.
#
#############################################################################
#  
#   Initialization
#
#############################################################################

$EOL = "\015\012";
$MAILPROG = '/usr/lib/sendmail -t -n';
$HOSTPATH = 'https://osprey3.npac.syr.edu:8443/cgi-bin';

#############################################################################
#  
#   Library Routines
#
#############################################################################

require "ReadParse.pl" || die "error loading ReadParse.pl\n";

#############################################################################
#  
#   Main Routines
#
#############################################################################

ReadData() &&
SendMessage();

#############################################################################
#  
#   Subroutines
#
#############################################################################

sub ReadData {
  my (%in);
  # ReadParse returns an associative array of key-value pairs:
  %in = ReadParse();
  $NAME = $in{'name'};
  $ADDRESS = $in{'address'};
  $MESSAGE = $in{'message'};
  return 1;
}

sub SendMessage {
  if ( open(MAIL, "|$MAILPROG") ) {
    print MAIL "To: \"$NAME\" \<$ADDRESS\>\n";
    print MAIL "From: \"$NAME\" \<$ADDRESS\>\n\n";
    print MAIL "$MESSAGE\n";
    close(MAIL);
    SendConfirm();
  } else {
    SendError();
  }
  return 1;
}

#############################################################################
#  
#   Print HTML pages
#
#############################################################################

sub SendConfirm {
  print qq{Content-type: text/html$EOL$EOL
<HTML>
<HEAD>
<TITLE>Mail Form Confirmation Notice</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">

Hi $NAME, <P>

Successful!!! Now Akenti is running. <P>
Thanks for sending an e-mail message to: <P>

$NAME <BR>
$ADDRESS

<P><HR><P>

Return to
<A HREF="https://osprey3.npac.syr.edu:8443">HTML test again</A>

</BODY>
</HTML>
};

}  # end SendConfirm

sub SendError {
  print qq{Content-type: text/html$EOL$EOL
<HTML>
<HEAD>
<TITLE>Mail Form Error Notice</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">

Hi $NAME, <P>

Sorry, your message to <P>

$NAME <BR>
$ADDRESS <P>

did not go through!

<P><HR><P>

Return to
<A HREF="https://osprey3.npac.syr.edu:8443">HTML test again</A>

</BODY>
</HTML>
};

}  # end SendError












