#!/usr/local/bin/perl
# Name: recruiter.cgi
#
# Version: 1.0
#
# Last Modified: 12-01-97
#
# Description: This recruiter script allows users to dynamically
# manipulate an HTML file by adding their own entries to the
# document.
#
# Installation: See recruiter.setup
#######################################################################
# Print Out the HTTP Header . #
#######################################################################
# First, print out the HTTP header. We'll output this quickly so that we
# will be able to do some of our debugging from the web and so that in
# the case of a bogged down server, we won't get timed-out.
print "Content-type: text/html\n\n";
#######################################################################
# Require Libraries and Parse Form Data #
#######################################################################
# First, get the customized information contained in the setup file. Then
# Use cgi-lib.pl to read the incoming form data. However, send form_data
# as a parameter to the subroutine &ReadParse in cgi-lib.pl so that the
# associative array of form keys/values comes back with a descriptinve
# name rather than just $in. Also require the library which we will use
# to send out mail using sendmail
require "./recruiter.setup";
require "$cgi_lib_location";
&ReadParse(*form_data);
require "$mail_lib_location";
#######################################################################
# Create Add Form #
#######################################################################
# Now determine what the client wants. If $form_data{'action'} eq "add"
# (client clicked on a button somewhere) or (||) $ENV{'REQUEST_METHOD'}
# eq "post" (client is accessing this script for the first time as a
# link, not as a submit button) then it means that the client is asking
# to see the form to "add" an item to the recruiter guestbook.
if ($form_data{'action'} eq "add" || $ENV{'REQUEST_METHOD'} eq "GET")
{
# Print out the form's header
print <<" end_of_html";
;
close(FILE);
$SIZE=@LINES;
# Now open up the recruiter file again, but this time open it for
# writing...in fact we will overwrite the existing guestbook file with new
# data (>)
open (RECRUITER,">$recruiterreal") || die "Can't Open $recruiterreal: $!\n";
# Now we are going to go through our @LINES array adding lines "back" to
# out guestbook file one by one, inserting the new entry along the way.
# For every line in the guestbook file (remember that $SIZE = number of
# lines) we'll assign the value of the line ($LINES[$i]) to the variable $_
# We'll start with the first line in the array ($i=0) and we'll end when
# we have gone through all of the lines ($i<=$SIZE) counting by one ($i++).
# We reference the array in the standard form $arrayname[$element_number]
for ($i=0;$i<=$SIZE;$i++)
{
$_=$LINES[$i];
# Now, if the line hapens to be we know that we are going to
# need to add a new entry. BTW, it is essential that your recruiter.html
# have that line, all on its own somewhere in the body when you initialize
# your guestbook.
if (//)
{
# Let's add the entry. First print again so that we will be
# able to find the top of the guestbook again the next time.
print RECRUITER "\n";
# Then begin adding the recruiter's information. First, let's print the Name
# of the recruiter. However, if the recruiter left a URL, let's make their name
# clickable top their URL. If the recruiter did not submit a URL, just print
# the name.
if ($form_data{'url'})
{
print RECRUITER "Name:";
print RECRUITER "$form_data{'realname'}";
print RECRUITER "
\n";
}
else
{
print RECRUITER "Name: $form_data{'realname'}
\n";
}
# Now print the email of the recruiter...and, if the admin has set the
# $linkmail tag to one in the setup file, then make the email link clickable.
if ( $form_data{'email'} )
{
if ($linkmail eq '1')
{
print RECRUITER "Email:";
print RECRUITER "";
print RECRUITER "$form_data{'email'}
\n";
}
else
{
print RECRUITER " $form_data{'email'}
\n";
}
}
# Now print out the recruiter's company if they submitted the values.
if ( $form_data{'company'} )
{
print RECRUITER "Company: $form_data{'company'},";
}
# Now print out the recruiter's address if they submitted the values.
if ( $form_data{'city'} )
{
print RECRUITER "Location: $form_data{'city'},";
}
if ( $form_data{'state'} )
{
print RECRUITER " $form_data{'state'}";
}
if ( $form_data{'country'} )
{
print RECRUITER " $form_data{'country'}
\n";
}
# Finally, print up the date and the comments.
print RECRUITER "Date: $date
\n";
print RECRUITER "Comments:$form_data{'comments'}";
print RECRUITER "
\n\n";
}
# If the line was not however, we should make sure to print
# up the line so that we retain all of the HTML that was in the guestbook
# before we added the entry. Thus, the very long FOR loop will go
# through each line...it will print the header...and get all the way down
# through whatever HTML you've written until it gets to the guestbook
# entries which begin with a . It will then print the new
# entry and then print out all the old entries as well...When it gets to
# the end of the file, it's over.
else
{
print RECRUITER $_;
}
}
# Close up the guestbook.
close (RECRUITER);
#######################################################################
# Send Email Note to the Admin #
#######################################################################
# Now prepare to email a note to the admin. Rename $form_data{'email'}
# to $email_of_sender, and split up that email into its two components,
# the username and the email server. Thus in dnobles@dnobles.com, dnobles
# becomes username and dnobles.com becomes server. We are going to need
# these values later when we send our email.
$email_of_recruiter = "$form_data{'email'}";
# Now, if the admin has set the $mail to 1 (admin wants to be mailed when
# someone enters a guestbook entry), then let's begin creating an email body.
# We'll store the body in the variable $email_body and we will
# continually append this variable by using .=
if ($mail eq '1')
{
$email_body .= "You have a new entry in your guestbook:\n\n";
$email_body .= "------------------------------------------------------\n";
$email_body .= "Name: $form_data{'realname'}\n";
# If the recruiter actually submitted values, write them too.
if ($form_data{'email'} ne "")
{
$email_body .="Email: <$form_data{'email'}>\n";
}
if ($form_data{'url'} ne "")
{
$email_body .="URL: <$form_data{'url'}>\n";
}
if ($form_data{'company'} ne "")
{
$email_body .= "Company: $form_data{'company'},";
}
if ($form_data{'city'} ne "")
{
$email_body .= "Location: $form_data{'city'},";
}
if ($form_data{'state'} ne "")
{
$email_body .= " $form_data{'state'}";
}
if ($form_data{'country'} ne "")
{
$email_body .= " $form_data{'country'}\n";
}
# Finish off the message body...
$email_body .= "Time: $date\n\n";
$email_body .= "Comments: $form_data{'comments'}\n";
$email_body .= "------------------------------------------------------\n";
# Use the send_mail subroutine in the mail-lib.pl library file to send
# the email to the admin. This routine takes 6 parameters, who is sending
# the mail, the server of the sender, who it is being sent to and their
# server, the subject and the body.
&send_mail("$email_of_recruiter", "$recipient",
"$email_subject", "$email_body");
}
###########################################################################
# Send Thank You Email to the Recruiter #
###########################################################################
# Now, if the admin has set $remote_mail equal to 1 and (&&) the recruiter has
# actually submitted an email, we should email the recruiter a thank you note
# also. The process is identical to the one above.
if ($remote_mail eq '1' && $form_data{'email'} ne "")
{
$email_body = "";
$email_body .= <<" end_of_message_to_recruiter";
Thanks very much for stopping by my site and a special
thank you for taking the time to sign my guestbook.
I hope you found my resume informative. Please let other
netizens know of the existence of my little corner of the
net..
end_of_message_to_recruiter
$email_body .= "\n";
$email_body .= " By the way, you wrote...\n\n";
$email_body .= " Name: $form_data{'realname'}\n";
if ($form_data{'email'} ne "")
{
$email_body .=" Email: <$form_data{'email'}>\n";
}
if ($form_data{'url'} ne "")
{
$email_body .=" URL: <$form_data{'url'}>\n";
}
if ($form_data{'company'} ne "")
{
$email_body .= " Company: $form_data{'city'},";
}
if ($form_data{'city'} ne "")
{
$email_body .= " Location: $form_data{'city'},";
}
if ($form_data{'state'} ne "")
{
$email_body .= " $form_data{'state'}";
}
if ($form_data{'country'} ne "")
{
$email_body .= " $form_data{'country'}\n";
}
$email_body .= " Time: $date\n\n";
$email_body .= " Comments: $form_data{'comments'}\n";
# Send off the email!
&send_mail("$recipient", "$email_of_recruiter",
"$email_subject", "$email_body");
}
#########################################################################
# Send back an HTML Thank you to Recruiter #
#########################################################################
# Now send the recruiter a thank you note on the web and provide her with a
# way to get back to where she was before.
print <<" end_of_html";
Thank You
Thank you for signing the Guestbook, $form_data{'realname'}
Your entry has now been added to the guestbook as follows...
end_of_html
# Print out a copy of their submissions.
if ($form_data{'url'} ne "")
{
print "Name:";
print "$form_data{'realname'}
";
}
else
{
print "Name: $form_data{'realname'}
";
}
if ( $form_data{'email'} )
{
if ($linkmail eq '1')
{
print "Email: (";
print "$form_data{'email'})
";
}
else
{
print "Email: ($form_data{'email'})
";
}
}
if ( $form_data{'company'} )
{
print "$form_data{'company'},";
}
print "Location: ";
if ( $form_data{'city'} )
{
print "$form_data{'city'},";
}
if ( $form_data{'state'} )
{
print " $form_data{'state'}";
}
if ( $form_data{'country'} ){
print " $form_data{'country'}";
}
print "
Time: $date";
print "Comments: $form_data{'comments'}
\n";
print "
";
print "Back to the Guestbook\n";
print "- You may need to reload it when you get there to see your\n";
print "entry.\n";
print "\n";
exit;
# Begin the subroutines...
#######################################################################
# missing_required_field_data subroutine #
#######################################################################
sub missing_required_field_data
{
# Assign the passed $variable parameter to the local variable $field
local($field) = @_;
# Now send the user an informative error message so that they can enter
# the correct amount of information.
print <<" end_of_html";
Data Entry Error
You forgot to fill out $field and I am not allowed
to add your guestbook entry without it. Would you please type
something something in below...
end_of_html
# Now reprint out the add form with the subroutine output_add_form at the
# end of this script. Then exit.
&output_add_form;
exit;
}
#######################################################################
# Output the Add Form #
#######################################################################
sub output_add_form
{
# This is pretty much straight forward printing...
print <<" end_of_html";
Back to the Main Page
end_of_html
}
#######################################################################
# get_date #
#######################################################################
sub get_date
{
@days = ('Sunday','Monday','Tuesday','Wednesday','Thursday',
'Friday','Saturday');
@months = ('January','February','March','April','May','June','July',
'August','September','October','November','December');
# Use the localtime command to get the current time, splitting it into
# variables.
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
# Format the variables and assign them to the final $date variable.
if ($hour < 10) { $hour = "0$hour"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
$date = "$days[$wday], $months[$mon] $mday, 19$year at $hour\:$min\:$sec";
}