#!/usr/bin/perl ############################################################################# # # Guestbook Version 2.3.1 ############################################################################# # # Set Variables $guestbookurl = "http://home.deds.nl/~maxgiezen/guestbook.html"; $guestbookreal = "guestbook.html"; $guestlog = "guestlog.html"; $cgiurl = "http://home.deds.nl/~maxgiezen/guestbook.pl"; $date_command = "/usr/bin/date"; # Set Your Options: $mail = 0; # 1 = Yes; 0 = No $uselog = 1; # 1 = Yes; 0 = No $linkmail = 0; # 1 = Yes; 0 = No $separator = 1; # 1 =
; 0 =

$redirection = 0; # 1 = Yes; 0 = No $entry_order = 1; # 1 = Newest entries added first; # 0 = Newest Entries added last. $remote_mail = 0; # 1 = Yes; 0 = No $allow_html = 1; # 1 = Yes; 0 = No $line_breaks = 0; # 1 = Yes; 0 = No # If you answered 1 to $mail or $remote_mail you will need to fill out # these variables below: $mailprog = '/usr/lib/sendmail'; $recipient = 'you@your.com'; # Done ############################################################################# # # Get the Date for Entry $date = `$date_command +"%A, %B %d, %Y at %T (%Z)"`; chop($date); $shortdate = `$date_command +"%D %T %Z"`; chop($shortdate); # Get the input read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Split the name-value pairs @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Un-Webify plus signs and %-encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; if ($allow_html != 1) { $value =~ s/<([^>]|\n)*>//g; } $FORM{$name} = $value; } # Print the Blank Response Subroutines &no_comments unless $FORM{'comments'}; &no_name unless $FORM{'realname'}; # Begin the Editing of the Guestbook File open (FILE,"$guestbookreal") || die "Can't Open $guestbookreal: $!\n"; @LINES=; close(FILE); $SIZE=@LINES; # Open Link File to Output open (GUEST,">$guestbookreal") || die "Can't Open $guestbookreal: $!\n"; for ($i=0;$i<=$SIZE;$i++) { $_=$LINES[$i]; if (//) { if ($entry_order eq '1') { print GUEST "\n"; } if ($line_breaks == 1) { $FORM{'comments'} =~ s/\cM\n/
\n/g; } print GUEST "$FORM{'comments'}
\n"; if ($FORM{'url'}) { print GUEST "$FORM{'realname'}"; } else { print GUEST "$FORM{'realname'}"; } if ( $FORM{'username'} ){ if ($linkmail eq '1') { print GUEST " \<"; print GUEST "$FORM{'username'}\>"; } else { print GUEST " <$FORM{'username'}>"; } } print GUEST "
\n"; if ( $FORM{'city'} ){ print GUEST "$FORM{'city'},"; } if ( $FORM{'state'} ){ print GUEST " $FORM{'state'}"; } if ( $FORM{'country'} ){ print GUEST " $FORM{'country'}"; } if ($separator eq '1') { print GUEST " - $date


\n\n"; } else { print GUEST " - $date

\n\n"; } if ($entry_order eq '0') { print GUEST "\n"; } } else { print GUEST $_; } } close (GUEST); # Log The Entry if ($uselog eq '1') { &log('entry'); } ######### # Options # Mail Option if ($mail eq '1') { open (MAIL, "|$mailprog $recipient") || die "Can't open $mailprog!\n"; print MAIL "Reply-to: $FORM{'username'} ($FORM{'realname'})\n"; print MAIL "From: $FORM{'username'} ($FORM{'realname'})\n"; print MAIL "Subject: Entry to Guestbook\n\n"; print MAIL "You have a new entry in your guestbook:\n\n"; print MAIL "------------------------------------------------------\n"; print MAIL "$FORM{'comments'}\n"; print MAIL "$FORM{'realname'}"; if ( $FORM{'username'} ){ print MAIL " <$FORM{'username'}>"; } print MAIL "\n"; if ( $FORM{'city'} ){ print MAIL "$FORM{'city'},"; } if ( $FORM{'state'} ){ print MAIL " $FORM{'state'}"; } if ( $FORM{'country'} ){ print MAIL " $FORM{'country'}"; } print MAIL " - $date\n"; print MAIL "------------------------------------------------------\n"; close (MAIL); } if ($remote_mail eq '1' && $FORM{'username'}) { open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!\n"; print MAIL "To: $FORM{'username'}\n"; print MAIL "From: $recipient\n"; print MAIL "Subject: Entry to Guestbook\n\n"; print MAIL "Thank you for adding to my guestbook.\n\n"; print MAIL "------------------------------------------------------\n"; print MAIL "$FORM{'comments'}\n"; print MAIL "$FORM{'realname'}"; if ( $FORM{'username'} ){ print MAIL " <$FORM{'username'}>"; } print MAIL "\n"; if ( $FORM{'city'} ){ print MAIL "$FORM{'city'},"; } if ( $FORM{'state'} ){ print MAIL " $FORM{'state'}"; } if ( $FORM{'country'} ){ print MAIL " $FORM{'country'}"; } print MAIL " - $date\n"; print MAIL "------------------------------------------------------\n"; close (MAIL); } # Print Out Initial Output Location Heading if ($redirection eq '1') { print "Location: $guestbookurl\n\n"; } else { &no_redirection; } ####################### # Subroutines sub no_comments { print "Content-type: text/html\n\n"; print "No Comments\n"; print "

Your Comments appear to be blank

\n"; print "The comment section in the guestbook fillout form appears\n"; print "to be blank and therefore the Guestbook Addition was not\n"; print "added. Please enter your comments below.

\n"; print "

\n"; print "Your Name:
\n"; print "E-Mail:
\n"; print "City: , State: Country:

\n"; print "Comments:
\n"; print "

\n"; print " *


\n"; print "Return to the Guestbook."; print "\n\n"; # Log The Error if ($uselog eq '1') { &log('no_comments'); } exit; } sub no_name { print "Content-type: text/html\n\n"; print "No Name\n"; print "

Your Name appears to be blank

\n"; print "Je bent vergeten om in te vullen voor wie de vraag is.\n"; print "Je vraag is niet toegevoegd bij de vragen.\n"; print "

\n"; print "

\n"; print "Aan:
\n"; print "Comments have been retained.

\n"; print "\n"; print " *


\n"; print "Ga terug naar de vragen.."; print "\n\n"; # Log The Error if ($uselog eq '1') { &log('no_name'); } exit; } # Log the Entry or Error sub log { $log_type = $_[0]; open (LOG, ">>$guestlog"); if ($log_type eq 'entry') { print LOG "$ENV{'REMOTE_HOST'} - [$shortdate]
\n"; } elsif ($log_type eq 'no_name') { print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No Name
\n"; } elsif ($log_type eq 'no_comments') { print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No "; print LOG "Comments
\n"; } } # Redirection Option sub no_redirection { # Print Beginning of HTML print "Content-Type: text/html\n\n"; print "Thank You\n"; print "

Uw vraag is toegevoegd.

\n"; # Print Response print "Uw vraag is toegevoegd\n"; print "
\n"; print "Dit is de vraag die je hebt gesteld:

\n"; print "$FORM{'comments'}
\n"; if ($FORM{'url'}) { print "$FORM{'realname'}"; } else { print "$FORM{'realname'}"; } print " - $date

\n"; # Print End of HTML print "


\n"; print "Terug naar de vragen\n"; print "- Het kan zijn dat de pagina moet vernieuwen om je vraag te kunnen zien.\n"; print "\n"; print "\n"; exit; }