#!/usr/bin/perl
#
# Variablen 
#
$| = 1;

use strict;

my $exlock=2;
my $unlock=8;
my $orig="/home/httpd/htdocs/pinnwand/.guestbook.txt";
my $time=localtime(time);

my $remotehost=$ENV{'REMOTE_HOST'};
my $remoteaddr=$ENV{'REMOTE_ADDR'};
my %FORM = ();

&parse_form;

$FORM{'INHALT'} =~ s/\n/<BR>\n/g; # Returns erhalten im HTML

# ***************************************************************************
# Web-page fuer den Betrachter kreieren mit ok-Meldung
# ***************************************************************************
print <<EOF;
<html><head><title>Pinnwand</title></head>
<body TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#FF00FF" ALINK="#FF0000">
<H1 ALIGN=CENTER>Danke</H1>
EOF

if ($FORM{NAME} ne "")
 { print "Lieber $FORM{NAME}"; print ",<P>" }
else
  { print "Lieber Anonymous (etwa sch&uuml;chtern? :-), <P>" }
print "Dein Beitrag wurde in die Pinwand aufgenommen und " ;
print "kann sofort gelesen werden. <P></body></html>\n" ;


#
# neue Datei anlegen
#
if ( open (OUT, ">>" . $orig) )
  {
  flock (OUT, $exlock);
  # Trenner ausgeben
  print OUT "<hr><p>\n";

  # Sofern vorhanden: Ueberschrift ausgeben
  print OUT "<h3 align=center> $FORM{'HEADLINE'} </h3>" if ($FORM{'HEADLINE'} ne "");

  # Eigentlichen Inhalt ausgeben
  print OUT "$FORM{'INHALT'}";
  print OUT "<p><blockquote><i><b>";
    
  # Sofern vorhanden: E-Mailadresse ausgeben
  if ($FORM{'EMAIL'} ne "")
    {
     print OUT "E-Mail: <a href=\"mailto:$FORM{'EMAIL'}\">";
     if ($FORM{'NAME'} eq "")
       { print OUT "$FORM{'EMAIL'}"; }
     else 
       { print OUT "$FORM{'NAME'}"; }
     print OUT "</a><br>";
    }

  # Sofern vohanden: URL ausgeben
  if ($FORM{'URL'} ne "")
    {
     print OUT "URL: <a href=\"$FORM{'URL'}\">";
     if ($FORM{'NAME'} eq "")
       { print OUT "$FORM{'URL'}"; }
     else 
       { print OUT "$FORM{'NAME'}"; }
     print OUT "</a><br>";
    }

  # Noch etwas Info ausgeben
  print OUT "Posted from $remotehost ";
  print OUT "($remoteaddr) " if ($remoteaddr ne "");
  print OUT "at ($time)</i></b></blockquote><p>\n";
  flock (OUT, $unlock);
  close OUT;
  }
else
  { print "Cannot write to data file $orig." };
exit 0;

sub parse_form 
    {
    my ($buffer, @pairs, $pair, $name, $value);
    # Read in text
    if ($ENV{'REQUEST_METHOD'} eq "POST")
      {
      read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
      }
    else
      {
      $buffer = $ENV{'QUERY_STRING'};
      }
    @pairs = split(/&/, $buffer);
    foreach $pair (@pairs)
      {
      ($name, $value) = split(/=/, $pair);
      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
      $FORM{$name} = $value;
      }
    }
