#!/usr/bin/perl # # Purpose: # # CGI Appwizard - Thu Oct 23 09:34:58 IST 1997 # #################### CONFIG SECTION ##################### # DATAFILE $DATAFILE = '/hsphere/local/home/iarc2/iarc.ie/wwwlist.txt'; $TEMPLATE_MAIN = '/hsphere/local/home/iarc2/iarc.ie/template.main'; $TEMPLATE_LAYOUT = '/hsphere/local/home/iarc2/iarc.ie/template.layout'; $SCRIPT_NAME = 'biographical.cgi'; $PAGE = `cat $TEMPLATE_MAIN` || &Error("Couldn't get main template $TEMPLATE_MAIN"); $LAYOUT_TEMPLATE = `cat $TEMPLATE_LAYOUT`|| &Error("Couldn't get layout template $TEMPLATE_LAYOUT"); # EMAIL SETTINGS $ADDRESS_FROM = 'IAA Architects Database'; $ADDRESS_TO = 'paul@archeire.com'; $ADDRESS_REPLYTO = 'paul@archeire.com'; $ADDRESS_CC = ''; $ADDRESS_BCC = ''; $SUBJECT = 'Bugger. An error.'; ######################################################### &ParseForm; if(!$FORM{'keywords'}) { $error_message = '
  • Please enter some keywords.'; &ReturnPage; } else { @keywords = split(/ +/,$FORM{'keywords'}); $DATA = `cat $DATAFILE` || &Error("Couldn't find datafile $DATAFILE"); @RECORDS = split(/\n/,$DATA); foreach($j=1; $j<@RECORDS; $j++) { $match=''; # THIS IS NOT A MATCH foreach($k=0; $k<@keywords; $k++) # CHECK IT FOR EACH KEYWORD { if($RECORDS[$j] =~ /$keywords[$k]/i) {$match .= "$keywords[$k] ";} # THIS IS A MATCH } if($match) { ($NAME,$CONTACT,$ADDRESS_1,$ADDRESS_2,$ADDRESS_3,$ADDRESS_4,$ADDRESS_5,$ADDRESS_6,$PHONE,$FAX,$EMAIL,$WWW) = split(/\t/,$RECORDS[$j]); &FormatRecord; } } if(!$LAYOUT) {$error_message = '
  • No matches found.';} &ReturnPage; } ################### UTILITY FUNCTIONS ################### sub FormatRecord { $THIS_LAYOUT = $LAYOUT_TEMPLATE; $THIS_LAYOUT =~ s/###MATCH###/$match/g; $THIS_LAYOUT =~ s/###NAME###/$NAME/g; $THIS_LAYOUT =~ s/###CONTACT###/$CONTACT/g; $THIS_LAYOUT =~ s/###ADDRESS_1###/$ADDRESS_1/g; $THIS_LAYOUT =~ s/###ADDRESS_2###/$ADDRESS_2/g; $THIS_LAYOUT =~ s/###ADDRESS_3###/$ADDRESS_3/g; $THIS_LAYOUT =~ s/###ADDRESS_4###/$ADDRESS_4/g; $THIS_LAYOUT =~ s/###ADDRESS_5###/$ADDRESS_5/g; $THIS_LAYOUT =~ s/###ADDRESS_6###/$ADDRESS_6/g; $THIS_LAYOUT =~ s/###PHONE###/$PHONE/g; $THIS_LAYOUT =~ s/###FAX###/$FAX/g; $THIS_LAYOUT =~ s/###EMAIL###/$EMAIL/g; $THIS_LAYOUT =~ s/###WWW###/$WWW/g; $LAYOUT .= $THIS_LAYOUT; } sub Debug { # DUMPS A STRING TO A BROWSER AS HTML if(!$DEBUG_USED) {print "Content-type: text/html\n\n";} $DEBUG_USED = 1; print "$_[0]"; } sub Error { # RETURNS A USER LEVEL ERROR MESSAGE WITH THE SYSTEM HEADER AND FOOTERS print "Content-type: text/html\n\n"; print"

    Error

    $_[0]"; die "$_[0]"; } sub ParseForm { local($name, $value, $buffer); if($ENV{REQUEST_METHOD} =~ /get/i) # FIND REQUEST METHOD {$buffer = $ENV{QUERY_STRING};} else {read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});} @pairs = split(/&/, $buffer); # SPLIT INTO NAME_VALUE PAIRS foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; # URL UNENCODE $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; $FORM{$name} = $value; # ASSIGN TO FORM } } sub ReturnPage { # PARSE THE TEMPLATE $PAGE =~ s/###SCRIPT_NAME###/$SCRIPT_NAME/g; $PAGE =~ s/###ERROR_MESSAGE###/$error_message/g; $PAGE =~ s/###KEYWORDS###/$FORM{'keywords'}/g; $PAGE =~ s/###LAYOUT###/$LAYOUT/g; # RETURN THE PAGE print "Content-type: text/html\n\n"; print "$PAGE"; } sub SendEntry { open (MAIL, "| /usr/sbin/sendmail -t"); print MAIL << "END_OF_MAIL"; From: $ADDRESS_FROM Reply-To: $ADDRESS_REPLYTO To: $ADDRESS_TO Cc: $ADDRESS_CC Bcc: $ADDRESS_BCC Subject: $SUBJECT $_[0] END_OF_MAIL close MAIL; }