#!/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";

EOT } sub main_page_bottom { print <<"EOT";
Guestbook script coded by David Bromage. Held together with putty and bits of wire. EOT } sub entry_page_top { print <<"EOT";
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 = \n";
print GUESTLOG @FILE;
close(GUESTLOG);
flock(GUESTLOG, 8);
# Thank user
print <<"EOT";
\n";
print "\n\n";
exit;
}
# Comments field blank
sub no_comments
{
print "Content-type: text/html\n\n";
print " \n";
print "\n\n";
exit;
}
# Add to guestbook
sub add_to_guestbook
{
print "Content-type: text/html\n\n";
&entry_page_top;
print <<"EOT";
";
print GUESTLOG "$FORM{'comments'}
";
print GUESTLOG "$date
";
print GUESTLOG "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 = No name entered.
\n";
print " Please go BACK and enter your name.No comments entered.
\n";
print " Please go BACK and enter your comments.
EOT
exit;
}