#!/usr/bin/perl
############################################################################
#
#                             GUESTBOOK.PL 
#
#                          W. Klippel in 2000
#
############################################################################
# Historie:
#
# 13.04.00  V1.0   Freigabe "wie es ist"
# 16.05.00  V1.1   Speicherung der URL mit TARGET="_BLANK"
# 20.05.00  V1.2   Umbau auf PrintEOF
# 22.05.00  V1.3   Freigabe von HTML in den Kommentaren
# 29.05.00  V1.4   "Schmutzige Wörter"-Filter eingebaut
# 30.05.00  V1.5   Vorbereitungen für Admin-Edit und Unterscheidung Test/Prod
# 31.05.00  V2.0   Schutz des HTML-Codes gegen Editieren
# 04.06.00  V2.1   "Schmutzige Wörter"-Filter von Interpunktion unabhängig
# 18.06.00  V2.2   Bug: ungültige Mail-Adresse bringt in Prod "500 Script error" behoben!
# 21.06.00  V2.3   Detail-Fehlermeldung bei unvollständigem Eintrag
# 23.06.00  V2.4   Admin-Edit der Einträge
# 25.06.00  V2.5   "Schmutzige Wörter"-Filter von Groß-/Kleinschreibung unabhängig
# 26.06.00  V2.6   Neugier: Wohnort und Heimatland
# 30.06.00  V3.0   Layout: so kann es bleiben
# 30.06.00  V3.01  Neue "Schmutzige Wörter"
# 03.06.00  V3.02  diverse kleine Anpassungen durch Natokh
############################################################################
#
# Das Gästebuch wird von einer HTML-Seite wie folgt aufgerufen:
#
# <a href="http://www.deine-site.de/guestbook_dir/guestbook.pl">Gästebuch</a> 
#
# Die Verwaltungsfuktion wird wie folgt aufgerufen:
#
# <a href="http://www.deine-site.de/guestbook_dir/guestbook.pl?admin">Gästebuch-Admin</a>
#
#
# Bitte beachten: Bei $path muß der physikalische Pfad zum Gästebuch-
# Textfile eingetragen werden. Dieser muß meist beim Provider erfragt werden.
#
############################################################################
# Variablen - Deklaration

$version = '3.02';                                      # Versionsnummer
$version_date = '03.06.01';                             # Versionsdatum
$test = '0';                                            # 0 = Prod       1 = Test

############################################################################
# Physikalische Variablen, Namen und Passwort

$path = 'www.natokh.de/gaestebuch/';
$home = 'http://www.natokh.de/';                        # Homepage-URL virtuell
$home_url = 'http://www.natokh.de/gaestebuch/';         # Homepage-URL real
$bookname = '"Natokhs Gaestebuch"';                     # Gästebuch-Überschrift
$admin_password = 'uxmal';                           # beliebiges Verwaltungs-Passwort
$addsecs ='0';                                          # Sekunden zwischen Server und Lokalzeit

############################################################################
# Farbdefinitionen

$background = 'background="http://www.natokh.de/graphics/drock005.jpg"';  # Hintergrund: Bild oder Farbe
$tablecolor = 'bgcolor=006400';                         # Gästebuch-Hintergrundfarbe
$textcolor = 'text=FFFF00';                             # Standard-Textfarbe
$linkcolor = 'vlink=FF7F50 alink=FF7F50';               # HyperLink-Farben

$color1 = 'color=7FFFD4';                               # Besonderheiten-Farbe
$color2 = 'color=FF00FF';                               # Alarm-Farbe
$color3 = 'color=FFFFFF';                               # eMailAdress-Farbe

############################################################################
# Schriftgrößen und -arten

$headerstyle2 = 'face="Comic Sans MS" size="5"';        # Große Überschrift
$headerstyle = 'face="Comic Sans MS" size="3"';                  # Kleine Überschrift
                                                        # als Normalschrift wird Standardschrift des Browsers eingesetzt
$letterstyle2 = 'face="Verdana, Arial, Helvetica, sans-serif" size="2"';   # große Extras-Schrift
$letterstyle = 'face="Verdana, Arial, Helvetica, sans-serif" size="1"';    # kleine Extras-Schrift

############################################################################
# Variablen für den Mail-Versand

$mailprog = '/usr/sbin/sendmail -t';
$emailfrom = 'webmaster@natokh.de';
$mailtext1 = 'Danke für den Besuch meiner Homepage und den Eintrag in meinem Gaestebuch.';
$mailtext2 = 'Bitte empfiehl meine Webseite weiter, wenn sie dir, wie ich hoffe, gefallen hat.';
$mailtext3 = 'Gruss';
$mailtext4 = 'Christoph aka Natokh';

############################################################################
# "Bad word filtering", die Liste der verbotenen Worte in den Kommentaren

@banned_words = ('mist','scheiss','scheiß','kotze','saublöd','saudumm','fick','schwanz',
                 'fotze','möse','asch','arsch','verdammt','gottverdammt',
                 'bumsen','wichser','wixer','schwuchtel','tunte','schwul',
                 'fuck','cock','cunt','asshole','ass','piss','arsehole','suck','shit',
                 'damned','gay','arschloch','pajero');

############################################################################
############################################################################
#
# Unterhalb dieses Blockes ist eine Änderung von Ihnen nicht notwendig!!!
#
############################################################################
############################################################################
# Variablen in Unterscheidung für Test/Produktion

if ($test) {
  $version .= 'test';
  $adminpw = '';                                        # kein Passwort
  $mail = '0'; $mailadmin = '0';                        # kein Mailversand
  $guestfile = $path; $guestfile .= 'guestbook2.txt';   # Test-Gästebuch
  $cgiurl = $home_url; $cgiurl .= 'guestbook2.pl';      # Test-Gästebuchscript
  $admin_url = $home_url; $admin_url .= 'guestbook2.pl?admin';
} else {
  $adminpw = $admin_password;                           # Passwort
  $mail = '1'; $mailadmin = '1';                        # Mails versenden
  $guestfile = $path; $guestfile .= 'guestbook.txt';    # Prod-Gästebuch
  $cgiurl = $home_url; $cgiurl .= 'guestbook.pl';       # Prod-Gästebuchscript
  $admin_url = $home_url; $admin_url .= 'guestbook.pl?admin';
}

############################################################################
# System - Variablen

$domain = 'http://'.$ENV{'SERVER_NAME'};
$referrer = $ENV{'HTTP_REFERER'};
$ip = $ENV{'REMOTE_ADDR'}; 
$pagemark = 'guestentryhere';

#
############################################################################
# Gästebuch - Hauptroutine

&date;
&read;
if ($INPUT{'REMOVE'}) { &remove; &admin;}
if ($INPUT{'SENDPASS'}) { &admin; }
if ($INPUT{'SIGN'}) { &create; }
if ($INPUT{'ADD'}) { &editbook; &mail;}
if ($INPUT{'ADMEDT'}) { &admedt; &admin;}
if ($INPUT{'ADMWRITE'}) { &admwrite; &admin;}
if ($INPUT{'HOME'}) { print "REFRESH:0; URL=http://www.natokh.de/ \n"; }
&showbook;
exit;

#
############################################################################
# benötigte Unterroutinen

sub read {

if ($ENV{'QUERY_STRING'}) {$namevalues = $ENV{'QUERY_STRING'};}
else {read(STDIN, $namevalues, $ENV{'CONTENT_LENGTH'});}

@pairs = split(/&/, $namevalues);
    foreach $pair (@pairs) {
	($name, $value) = split(/=/, $pair);
        $value =~ tr/+/ /;
	$value =~ s/%(..)/pack("C", hex($1))/eg;
        $value =~ s/<!--(.|\n)*-->//g;
        if ($name eq 'admin') { &adminpass; }
	$INPUT{$name} = $value;
        $INPUT{$name} =~ s/[^A-Z0-9äöüÄÖÜß\.!?\$ ,'"<>@\/~:+=\-()\*\n]//gio;
    }
}


sub date { 
############################################################################
# Ermitteln Datum / Uhrzeit

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+$addsecs); 
@days = ("So.","Mo.","Di.","Mi.","Do.","Fr.","Sa.");
@months = ("Jan.","Feb.","Mär.","Apr.","Mai","Jun.","Jul.","Aug.","Sep.","Okt.","Nov.","Dez."); 

if ($sec < 10) {$sec = "0$sec";}
if ($min < 10) {$min = "0$min";}
if ($hour < 10) {$hour = "0$hour";}
if ($mday < 10) {$mday = "0$mday";}

$year += 1900;
$date = "@days[$wday], $mday. @months[$mon] $year";
$time = "$hour:$min:$sec";

} 
 

sub edit_prevent {
############################################################################
# Rechter-Mausclick verhindern

if ($test) {
}
else {
  print <<EOP;
<SCRIPT LANGUAGE="JavaScript">
 document.onmousedown=click
 var tries=0
 function click() {
   if ((event.button==2) || (event.button==3)) {
   if (tries>=2) { ende() }
   if (tries<=1) { alert("Die rechte Maustaste ist hier nicht gestattet!");  }
   tries++ 
   } 
 }
 function ende() {
   alert("Wer nicht hören will...");
   ende() 
 }
</SCRIPT>
EOP

 }
}


sub mail {
############################################################################
# Mail an Gast und Gästbuchbesitzer

if(!$mail) { &showbook };
open (MAIL, "|$mailprog");                                 # Mail an Gast
print MAIL "To: $email\n";
print MAIL "From: $emailfrom\n";
print MAIL "Subject: Antwort auf Gästebucheintrag\n\n";
print MAIL "Hallo $name,\n\n$mailtext1\n$mailtext2\n\n$mailtext3 \n$mailtext4";
close(MAIL);

if(!$mailadmin) { &showbook };
open (MAIL, "|$mailprog");                                 # Mail an Gästebuchbesitzer
print MAIL "To: $emailfrom\n";
print MAIL "From: $emailfrom\n";
print MAIL "Subject: Neuer Eintrag in $bookname \n\n";
print MAIL "Es gibt einen neuen Eintrag im Gästebuch von $name ($email)!!!";
close(MAIL);

}


sub dirtywords {
############################################################################
# Verhindern der Eingabe von "schmutzigen" Wörtern

@comment_word = split (" ",$comments);
for ($loop1 = 0; $loop1 <= $#comment_word; $loop1++) {
   $help_word1 = $comment_word[$loop1];
   $help_word1 =~ tr/[A-Z]/[a-z]/;
   CHECK: for ($loop2 = 0; $loop2 <= $#banned_words; $loop2++) {
      $len = length($banned_words[$loop2]);
      if (substr($help_word1,0,$len) eq $banned_words[$loop2])
        { $help_word1 =~ s/[a-z0-9ß]/\*/gio; last CHECK; }
   }
   if ( substr($help_word1,0,1) eq "*") {
       $comment2 .= "$help_word1 "; }
   else { $comment2 .= "$comment_word[$loop1] ";
    }
}
$comments = "$comment2";
}


sub end_html {
############################################################################
#  Der Rest jeder HTML-Seite

if ($test) {
print <<EOP;
<hr width=90%><font $letterstyle><b><center>GUESTBOOK.PL Version $version<br>
<a href="$admin_url">(c)</a> 2000 by <a href="http://www.w-klippel.de" target="_self">
W. Klippel</a><p></font></center></BODY></HTML>
EOP
} else {
print <<EOP;
<hr width=90%><font $letterstyle><b><center>GUESTBOOK.PL Version $version<br>
<a href="$admin_url">(c)</a> 2000 by <a href="http://www.w-klippel.de" target="_self">
W. Klippel</a><p></font></center></BODY></HTML>
EOP
}
}

sub editbook {
############################################################################
# Eintrag in's Gästebuch erstellen

$name = $INPUT{'NAME'}; 
$email = $INPUT{'EMAIL'};
$comments = $INPUT{'COMMENTS'};
$url = $INPUT{'URL'};
$quote = $INPUT{'QUOTE'};
$ort = $INPUT{'ORT'};
$land = $INPUT{'LAND'};

$enter = '
';
$replace = '';
$comments =~ s/$enter/$replace/g;

$error = 0;
#if ($email eq '') { $error = 1; $error_nr = 0; }
if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ ||
    $email !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) {
    $error = 1; $error_nr = 1; }
if ($name eq '') { $error = 1; $error_nr = 2; }
if ($comments eq '') { $error = 1; $error_nr = 3; }

if ($error) {
   &error_message;
   exit;
}

&dirtywords;

open (FILE, "$guestfile");
@lines = <FILE>;
close(FILE);

open (GUEST,">$guestfile");
if (@lines < 1) {print GUEST "<!--$pagemark-->\n"; close (GUEST);
open (FILE, "$guestfile"); @lines = <FILE>; close(FILE);
open (GUEST,">$guestfile");}

foreach $line (@lines) {
if ($line =~ /<!--$pagemark-->/) { 
print GUEST ("<!--$pagemark-->\n");

&standort;

print GUEST ("<table width=\"100%\" border=\"0\" align=\"center\"><tr><td width=\"50%\"><font $letterstyle2><X> $date - $time <X></font></td><td width=\"50%\" valign=\"top\"><font $letterstyle2> IP - Addresse: <X>$ip<X> </font></td><tr><td width=\"50%\" valign=\"top\"><font $headerstyle> Von: <X>$name<X> </font></td><td width=\"50%\" valign=\"top\"><font $letterstyle2>$standort</td><tr><td width=\"50%\" valign=\"top\"><A HREF=\"$url\" target=\"_blank\"><font $letterstyle2 $color1><X> $url <X></font></a></td><td width=\"50%\" valign=\"top\"><A HREF=\"Mailto:$email\"><font $letterstyle2 $color3><X> $email <X></font></a></td></table><p><font $headerstyle size=\"2\"><X><center><img src=\"$quote.gif\"><br><br><X> $comments<X></center></font><P><hr width=90% size=5>\n");}

else {print GUEST ("$line");} 
}
close (GUEST);
}


sub create {
############################################################################
# HTML-Maske zur Eingabe

print <<EOP;
Content-type: text/html

<HTML>
<HEAD>
<TITLE> $version signing_guestbook</TITLE>
EOP
&edit_prevent;
print <<EOP;
</HEAD><BODY $background $linkcolor $textcolor><CENTER>
<font $headerstyle2>Eintrag in $bookname</font>
<hr width=90%><P><font $letterstyle2><b>
Um sich in $bookname einzutragen, füllen Sie bitte alle Felder mit einer Überschrift in 
dieser Farbe aus!<br>
To sign $bookname, please fill out all the fields with this color!<br>
<font $color1>Die Felder mit einer Überschrift in dieser Farbe sind freiwillig!<br>
The fields with this color are free to fill!
</font></b></font><br><br>
<FORM METHOD=POST ACTION="$cgiurl">
<table width="90%" border="0">
  <tr align="center" valign="top"> 
    <td width="50%"> 
      <div align="center"><font $letterstyle2><b>Name:<br>
        </b></font> 
        <input type="TEXT" name="NAME" size=30>
      </div>
    </td>
    <td> 
      <div align="center"><font $letterstyle2 $color1><b>
        </b></font><font $letterstyle2><b>Ihre eMail - Addresse (eMail-adress):<br>
        </b></font> 
        <input type="TEXT" name="EMAIL" size=30>
        <font $letterstyle2 $color1><b> </b></font> </div>
    </td>
  </tr>
  <tr align="center" valign="top"> 
    <td width="50%"> 
      <div align="center"><font $letterstyle2 $color1><b><br>Ihr Wohnort (hometown):<br>
        </b></font> 
        <input type="TEXT" name="ORT" size=30>
      </div>
    </td>
    <td> 
      <div align="center"><font $letterstyle2 $color1><b><br>
        </b></font> <font $letterstyle2 $color1><b>Ihr Heimatland (homecountry):<br>
        </b></font> 
        <input type="TEXT" name="LAND" size=30>
      </div>
    </td>
  </tr>
  <tr align="center" valign="top"> 
    <td width="50%"> 
      <div align="center"><font $letterstyle2 $color1><b><br>
        Ihre Homepage - URL (your homepage - url):<br>
        </b></font> 
        <input type="TEXT" name="URL" value="http://" size=30>
        <font $letterstyle2 $color1><b> </b></font> </div>
    </td>
    <td> 
      <div align="center"><font $letterstyle2 $color1><b><br>
        Wie haben Ihnen unsere Seiten gefallen?<br>(Your opinion about this page)<br>
        </b></font> 
        <select name="QUOTE" size="1">
          <option value=0 selected>keine Angabe (no comment)</option>
          <option value=1>gut bis sehr gut (good)</option>
          <option value=3>durchschnittlich (average)</option>
          <option value=5>wenig bis nicht (poor)</option>
        </select>
      </div>
    </td>
  </tr>
</table>
<table width="90%" border="0">
  <tr align="center" valign="top"> 
    <td><font $letterstyle2><b><br>
      Bemerkungen und Kommentare (commentaries):<br>
      </b></font> 
      <textarea name="COMMENTS" cols=80 rows=5 wrap=VIRTUAL></textarea>
    </td>
  </tr>
</table>
<BR>
  <INPUT TYPE="SUBMIT" NAME="ADD" VALUE="Eingabe abschicken (send entry)">
  <INPUT TYPE="RESET" VALUE="Eingabe löschen (clear entry)"></FORM>
EOP

&end_html;
exit;

}


sub showbook {
############################################################################
# Gästebuch anzeigen

print <<EOP;
Content-type: text/html

<HTML>
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<TITLE>Guestbook Version $version vom $version_date</TITLE>
EOP
&edit_prevent;
print <<EOP;
</HEAD><BODY $background $linkcolor $textcolor><CENTER>
<font $headerstyle2>$bookname</font><HR width=90%>
<FORM METHOD=POST ACTION="$cgiurl">
<INPUT TYPE="SUBMIT" NAME="SIGN" VALUE="Eintrag erstellen (make entry)">
<INPUT TYPE="SUBMIT" NAME="HOME" VALUE="Zurueck zur Startseite (back to homepage)">
</form>
<P><TABLE BORDER=4 cellspacing=0 cellpadding=5 width=90%><TR>
<TD $tablecolor><font $letterstyle2><b>
EOP

open (FILE,"$guestfile");
@lines = <FILE>;
close(FILE);
open (GUEST,">$guestfile");
foreach $line (@lines) {
if(@lines >1) {print "$line"; print GUEST ("$line");} 
else {print ("<center>$bookname ist leer!</center>\n"); print GUEST ("$line");}
}
close (GUEST);

print <<EOP;
</b></font></TD></TR></TABLE><p><center>
<FORM METHOD=POST ACTION="$cgiurl">
<INPUT TYPE="SUBMIT" NAME="SIGN" VALUE="Eintrag erstellen (make entry)">
<INPUT TYPE="SUBMIT" NAME="HOME" VALUE="Zurueck zur Startseite (back to homepage)">
</form>
<br><br><hr width=90%><font $letterstyle>
Für die Inhalte der über die oben angegebenen Links erreichbaren Homepages sind wir nicht verantwortlich.<br>
Wir distanzieren uns ausdrücklich von jeder Art von Inhalt, der gegen bestehende Gesetze oder gegen Anstand und Moral verstößt! 
Wir behalten uns vor, solche Links umgehend zu löschen!<br><br>
Wir behalten uns ebenfalls vor, Einträge in diesem Gästebuch zu verändern oder zu löschen, bei denen Kommentare mit HTML verwendet werden und die das Layout dieses Gästebuches zerstören.
EOP

&end_html;
exit;

}


sub split_entry {
############################################################################
# Ermitteln der verschiedenen Einträge für Admin-Funktionen

@guestline = split("<X>",$line);
$datetime = $guestline[1];
$ip_adress = $guestline[3];
$entryname = $guestline[5];
$ort = $guestline[7];
$land = $guestline[9];
$url_adress = $guestline[11];
$mail_adress = $guestline[13];
$picture = $guestline[15]; @pict1 = split("\"",$picture); $quote= $pict1[1];
$comment_entry = $guestline[16];
}


sub admwrite {
############################################################################
# Administrator-Schreiben eines veränderten Eintrages

$editdate = $INPUT{'DATETIME'};
$ip_adress = $INPUT{'IP_ADRESS'};
$entryname = $INPUT{'ENTRYNAME'};
$url_adress = $INPUT{'URL_ADRESS'};
$mail_adress = $INPUT{'MAIL_ADRESS'};
$quote = $INPUT{'QUOTE'};
$comment_entry = $INPUT{'COMMENT_ENTRY'};
$ort = $INPUT{'ORT'};
$land = $INPUT{'LAND'};

&standort;

open (FILE, "$guestfile"); @lines = <FILE>; close(FILE);
open (GUEST,">$guestfile");
foreach $line (@lines) {
  if($line =~ $editdate) { 
  print GUEST ("<table width=\"100%\" border=\"0\" align=\"center\"><tr><td width=\"50%\"><font $letterstyle2><X>$editdate<X></font></td><td width=\"50%\" valign=\"top\"><font $letterstyle2> IP - Addresse: <X>$ip<X> </font></td><tr><td width=\"50%\" valign=\"top\"><font $headerstyle> Von: <X>$entryname<X> </font></td><td width=\"50%\" valign=\"top\"><font $letterstyle2>$standort</td><tr><td width=\"50%\" valign=\"top\"><A HREF=\"$url_adress\" target=\"_blank\"><font $letterstyle2 $color1><X>$url_adress<X></font></a></td><td width=\"50%\" valign=\"top\"><A HREF=\"Mailto:$mail_adress\"><font $letterstyle2 $color3><X>$mail_adress<X></font></a></td></table><p><font $headerstyle size=\"2\"><X><center><img src=\"$quote\"><br><br><X> $comment_entry<X></center></font><P><hr width=90% size=5>\n");
  }
  else {print GUEST ("$line");
  } 
}

close (GUEST);
$adminpw = $password;

}


sub admedt {
############################################################################
# Administrator-Editieren der Einträge

$editdate = $INPUT{'ENTRYDATE'};

open (FILE, "$guestfile"); @lines = <FILE>; close(FILE);
foreach $line (@lines) {
  if($line =~ $editdate) { 
  print <<EOP;
Content-type: text/html

<HTML>
<HEAD>
<TITLE> $version admin_edit</TITLE>
EOP
&edit_prevent;
print <<EOP;
</HEAD><BODY $background $linkcolor $textcolor><CENTER>
<font $headerstyle2><br>ADMIN_EDIT</font><br><br>
EOP

&split_entry;

  print <<EOP;
<FORM METHOD=POST ACTION="$cgiurl">
<INPUT TYPE="HIDDEN" NAME="IP_ADRESS" VALUE="$ip_adress">
<INPUT TYPE="HIDDEN" NAME="QUOTE" VALUE="$quote">
<table BORDER=1 cellspacing=0 cellpadding=5 width=80%>
<tr>
<td $tablecolor width=50% align=center><font $letterstyle2><b>Datum:</font><br><font $color3>$datetime</b></font>
<INPUT TYPE="HIDDEN" NAME="DATETIME" VALUE="$datetime">
<td $tablecolor width=50% align=center><font $letterstyle2><b>Name:</font><br>
<INPUT TYPE="TEXT" NAME="ENTRYNAME" value="$entryname" size=30></td>
</tr>
<tr>
<td $tablecolor width=50% align=center><font $letterstyle2><b>eMail-Adresse:</b></font>
<br><INPUT TYPE="TEXT" NAME="MAIL_ADRESS" value="$mail_adress" size=30></td>
<td $tablecolor width=50% align=center><font $letterstyle2><b>Homepage:</b></font><br>
<INPUT TYPE="TEXT" NAME="URL_ADRESS" value="$url_adress" size=30></td>
</tr>
<tr>
<td $tablecolor width=50% align=center><font $letterstyle2><b>Wohnort:</font><br>
<INPUT TYPE="TEXT" NAME="ORT" value="$ort" size=30></td>
<td $tablecolor width=50% align=center><font $letterstyle2><b>Land:</font><br>
<INPUT TYPE="TEXT" NAME="LAND" value="$land" size=30></td>
</tr>
</table>
<table BORDER=1 cellspacing=0 cellpadding=5 width=80%><tr>
<td $tablecolor width=20% align=center valign=top><font $letterstyle2><b>Bewertung:<br><br>
<img src="$quote"></b></font>
<INPUT TYPE="HIDDEN" NAME="QUOTE" VALUE="$quote"></td>
<td $tablecolor width=80% align=center><font $letterstyle2><b>Kommentar:</b></font><br>
<TEXTAREA name="COMMENT_ENTRY" COLS=50 ROWS=5 wrap=virtual>$comment_entry</TEXTAREA>
</td></table><br><br><INPUT TYPE=button VALUE="Zurück" onClick="history.go(-1)">
<INPUT TYPE="SUBMIT" NAME="ADMWRITE" VALUE="Ändern"></FORM>
EOP
&end_html;
  }
 }
$adminpw = $password;
exit;
}


sub remove {
############################################################################
# Administrator-Löschen von kompletten Einträgen

$removedate = $INPUT{'ENTRYDATE'};
open (FILE, "$guestfile");
@lines = <FILE>;
close(FILE);
open (GUEST,">$guestfile");
foreach $line (@lines) {
if($line =~ $removedate) { $removed eq 1; }
else { print GUEST ("$line"); }
}
close (GUEST);
$adminpw = $password;
}


sub adminpass {
############################################################################
# Abfrage des Administrator-Passwortes

print <<EOP;
Content-type: text/html

<HTML>
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<TITLE> $version guestbook_password_checker</TITLE>
EOP
&edit_prevent;
print <<EOP;
</HEAD><BODY $background $linkcolor $textcolor><CENTER>
<font $headerstyle2>Administrator - Funktionen</font>
<hr width=90%><P><BR><font $letterstyle2><b>
Geben Sie das Verwaltungs - Passwort ein:</b></font><P>
<FORM METHOD=POST ACTION="$cgiurl">
<INPUT TYPE="password" NAME="PASSWORD" size=20>
<INPUT TYPE="SUBMIT" NAME="SENDPASS" VALUE="Passwort senden"></FORM>
<P><br><br><br><br><br><br>
EOP

&end_html;
exit;

}


sub admin {
############################################################################
#  Administrator-Funktionen

$password = $INPUT{'PASSWORD'};

if ($adminpw ne $password) {
print <<EOP;
Content-type: text/html

<HTML>
<HEAD>
<TITLE> $version password_error</TITLE>
EOP
&edit_prevent;
print <<EOP;
</HEAD><BODY $background $linkcolor $textcolor><CENTER>
<font $headerstyle2><br>UNERLAUBTER ZUGRIFF</font><font $letterstyle2 $color2><b>
<br><br>Sie haben keine Berechtigung, auf diese Funktion zuzugreifen!<br><br></b></font>
<FORM><INPUT TYPE=button VALUE="Zurück" onClick="history.go(-2)"></FORM></BODY></HTML>
EOP
exit;}

open (FILE, "$guestfile");
@lines = <FILE>;
close(FILE);

print <<EOP;
Content-type: text/html

<HTML>
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<TITLE> $version guestbook_admin</TITLE>
EOP
&edit_prevent;
print <<EOP;
</HEAD><BODY $background $linkcolor $textcolor><CENTER>
<font $headerstyle2>$bookname - Verwaltung</font>
<hr width=90%><font $letterstyle2><b>
<a href = "$cgiurl">Zurück zum Gästebuch</a><P>
EOP

if (@lines > 1) {print ("Eintrag auswählen:</font><P>\n");}
print ("</b><TABLE BORDER=1 cellspacing=0 cellpadding=5 width=90%>\n");

if(@lines < 2) {
print ("<TR><TD $tablecolor align=center>\n");
print ("<font $letterstyle2><b>$bookname ist leer!\n");
}

else {
print <<EOP;
<TR><TD $tablecolor width=34% align=center>
<font $letterstyle2><b>Name des Besuchers</b></font></td>
<TD $tablecolor width=30% align=center>
<font $letterstyle2><b>Datum des Eintrages</b></font></td>
<TD $tablecolor width=18% align=center>
<font $letterstyle><b>Löschen des<br>Eintrages</b></font></td>
<TD $tablecolor width=18% align=center>
<font $letterstyle><b>Editieren des Eintrages</b></font></td></TR>
EOP
}

open (GUEST,">$guestfile");
foreach $line (@lines) {
if($line =~ /<!--$pagemark-->/) {print GUEST ("$line");}

else {

&split_entry;

print <<EOP;
<TR><TD $tablecolor align=center><font $letterstyle2><b>$entryname
</font></td><TD $tablecolor align=center><font $letterstyle2><b>
$datetime</font></td><TD $tablecolor align=center>
<font $letterstyle2><b><FORM METHOD=POST ACTION="$cgiurl">
<INPUT TYPE="HIDDEN" NAME="ENTRYDATE" VALUE="$datetime">
<INPUT TYPE="SUBMIT" NAME="REMOVE" VALUE="Löschen"></td>
<TD $tablecolor align=center><font $letterstyle2>
<b><INPUT TYPE="SUBMIT" NAME="ADMEDT" VALUE="Editieren">
</b></font></td></tr></FORM><p>
EOP

print GUEST ("$line");}

}
close (GUEST);

print ("</font></TD></TR></TABLE><p>");
&end_html;

exit;

}


sub error_message {
############################################################################
# eingegebene Daten überprüfen

@error_codes = (
	"Sie haben keine eMail-Adresse angegeben.",
	"Sie haben keine eMail-Adresse angegeben, oder<br>die von Ihnen eingegebene eMail-Adresse ist nicht gültig.",
	"Wollen Sie uns nicht verraten, wie Sie heißen?",
	"Ohne einen Kommentar ist ein Eintrag in $bookname nicht möglich.",
  );

print <<EOP;
Content-type: text/html

<HTML>
<HEAD>
<TITLE> $version signing_error</TITLE>
EOP
&edit_prevent;
print <<EOP;
</HEAD><BODY $background $linkcolor $textcolor><CENTER>
<font $headerstyle2><br>FEHLER BEIM EINTRAGEN IN DAS GAESTEBUCH</font>
<font $letterstyle2 $color1><b><BR><BR><BR>
<center>Ihr Eintrag in $bookname konnte aus folgendem Grund nicht vorgenommen werden:
<H3><BR><font $color2>$error_codes[$error_nr]</font></H3>
<BR>Gehen Sie bitte zur Eingabe zurück und korrigieren Sie dies. Danke!</font>
<br><br><br><FORM><INPUT TYPE=button VALUE="Zurück" onClick="history.go(-1)"></FORM>
</center><br><br><br><br><br><br>
EOP
&end_html;
}


sub standort {
############################################################################
# Erstellen des Wohnort/Heimatland-Eintrages

if (($ort eq "") and ($land eq "")) { $standort = "<X><X><X><X>"; }
elsif ($ort eq "") { $standort = "Heimatland: <X><X><X>$land<X>"; }
elsif ($land eq "") { $standort = "Wohnort: <X>$ort<X><X><X>"; }
else { $standort = "wohnhaft in: <X>$ort<X>, <X>$land<X>"; }
}
