#!/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 =
$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= \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 " \n";
print
" \n";
print "
\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
" - $dateYour 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 "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
"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 "