#!/usr/bin/perl $guest_log = "./guest.log"; $guest_cgi = "http://www.railpage.org.au/guestbook.cgi"; $date = `date`; chop($date); # HTML for user interface sub main_page_top { print <<"EOT"; RailPage guestbook

Sign guestbook

EOT } sub main_page_bottom { print <<"EOT";


Back to RailPage

Guestbook script coded by David Bromage. Held together with putty and bits of wire. EOT } sub entry_page_top { print <<"EOT"; RailPage guestbook

Sign guestbook

EOT } # The guts of the script @ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'}); if ($ARGV[0] eq "add") { &add_to_guestbook; } # Get the input read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Split name-value pairs @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # dewebify plus signs and %-encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; # remove HTML tags $value =~ s/<([^>]|\n)*>//g; $FORM{$name} = $value; } print "Content-Type: text/html\n\n"; if ($FORM{'new'}) { $FORM{'comments'} =~ s/\cM//g; $FORM{'comments'} =~ s/\n\n/

/gi; $FORM{'comments'} =~ s/\n/ /g; open(GUESTLOG, "$guest_log"); flock(GUESTLOG, 2); @FILE = ; close(GUESTLOG); flock(GUESTLOG, 8); print GUESTLOG "Content-Type: text/plain\n\n"; open(GUESTLOG, ">$guest_log"); flock(GUESTLOG, 2); print GUESTLOG "$FORM{'name'}  "; print GUESTLOG "$FORM{'emailadd'}
"; print GUESTLOG "$FORM{'comments'}
"; print GUESTLOG "$date
"; print GUESTLOG "

\n"; print GUESTLOG @FILE; close(GUESTLOG); flock(GUESTLOG, 8); # Thank user print <<"EOT"; Thankyou

Your comments have been recorded. Thankyou.





Back to Guestbook EOT if ($FORM{'new'}) {} } else { &main_page_top; open(GUESTLOG, "$guest_log"); flock(GUESTLOG, 2); @filein = ; close(GUESTLOG); flock(GUESTLOG, 8); print @filein; &main_page_bottom; } # Name field blank sub no_name { print "Content-type: text/html\n\n"; print "No Name\n"; print "

No name entered.

\n"; print " Please go BACK and enter your name.

\n"; print "\n\n"; exit; } # Comments field blank sub no_comments { print "Content-type: text/html\n\n"; print "No Comments\n"; print "

No comments entered.

\n"; print " Please go BACK and enter your comments.

\n"; print "\n\n"; exit; } # Add to guestbook sub add_to_guestbook { print "Content-type: text/html\n\n"; &entry_page_top; print <<"EOT";

Name

Email address: (optional)

Comments



EOT exit; }