#!/usr/local/bin/perl # $mailprog = '/usr/lib/sendmail'; # # *Version 2.3.1.1 # *Modifiziert von Ranson Johnson # *Letzte Modifizierung: 12/10/96 # # *Ins Deutsche übersetzt von Dan Sepeur # *Mail: dan@tentacle.de # *URL: http://www.tentacle.de/tag4tag # ########################################################################## # # Wenn Sie alle Dateien in das gleiche Verzeichnis laden, wird das Script # sofort arbeiten können. Ansonsten müssen Sie die Datei add.html # in ein anderes Verzeichnis laden und den Link zum Script im CGI-BIN # Verzeichnis korrekt setzen. # # Rechte, die gesetzt werden müssen: # Dateiname Rechte # -guestbook.cgi 755 # -guest.log 666 # -count.log 666 # # Das Verzeichnis in dem die Scripten liegen muss die Rechte 777 besitzen, # damit das Dateilocking korrekt arbeiten kann. # # Sie können die Datei add.htm Ihren Vorstellungen entsprechend anpassen. # Jedoch müssen Sie auf folgenden erforderlichen TAG achten: # # Wenn Sie diesen TAG entfernen, wird das Gästebuch nicht arbeiten. # # Schreiben Sie bei Fehlern an scripts@rlaj.com # Für die deutsche Übersetzung können Sie auch an dan@tentacle.de # schreiben. Oder im Support-Forum auf der Seite http://www.tentacle.de/tag4tag # nachlesen. # # Sie dürfen das Script frei kopieren, ändern, referenzieren etc. # Das Script wird so geliefert, wie es erstellt wurde. Es wird # keine Garantie für die Lauffähigkeit oder irgendwelche Schäden # übernommen, die an Hard- oder Software durch den Einsatz dieses Scriptes # geschehen, übernommen. # Wenn sie möchten, so schreiben Sie Ranson eine eMail dass Sie sein # Script einsetzen. Er wird Sie dann in eine Liste seiner Links eintragen. # Wenn Sie Public Domain Freeware Supporten möchten, sind Ranson Angebote # immer willkommen. # # Nochetwas. Wenn Sie in das Script Anführungszeichen (") oder ein @-Zeichen # einbauen, muss diesen Zeichen ein (\) vorangestellt werden. # Beispiel: oder auch dan\@tentacle.de # ########################################################################## ################# Einige zu konfigurierende Variablen #################### # Geben Sie den Pfad zur Datei guest.log an # Diese Datei beinhaltet alle Einträge zu Ihrem Gästebuch $guest_log = "guest.log"; # Geben Sie den Pfad zu dem Gästebuch-Script an $guest_cgi = "comments.cgi"; # Seitentitel $title = "comments"; # Geben Sie hier ihre BODY-Informationen an $body = ""; # Geben Sie hier den Kopf Ihrer Gästebuches an. # Dies sind die ersten Zeilen, die in Ihrem Gästebuch angezeigt werden. $top_of_page = "

comments

"; # Geben Sie hier die Informationen für den Fuss Ihres Gästebuches an. $bottom_of_page = "

technics of cyber<>feminism
"; # Möchten Sie, dass die eMail-Adresse des Posters als Hyperlink dargestellt wird? 1 = JA $hyper_link = 1; # 1 = JA; 0 = NEIN # Dürfen die Postings HTML-Code enthalten? 1 = JA $allow_html = 0; # 1 = JA; 0 = NEIN # Wie sollen die Einträge voneinander getrennt sein? 1 =

(Absatz) 0 =


(Linie) $seperate = 1; #1 =

0 =


# Möchten Sie einen Zugriffszähler auf Ihrem Gästebuch? - 1 = JA $counter = 0; # 1 = JA; 0 = NEIN # Geben Sie den Pfad zur Datei count.log an $count_log = "count.log"; ########## Mail Section ########## # Möchten Sie eine eMail haben, wenn sich jemand in Ihr Gästebuch eingetragen hat? $mail = 0; # 1 = JA 0 = NEIN $recipient = "ab\@iworld.de"; # Vergessen Sie hier nicht den (\) Backslash $subject = "Gästebuch-Eintrag"; # Möchten Sie dem Poster eine eMail zukommen lassen? Dies kann sehr nützlich sein # um einen Linktausch mit dem User vorzumehmen. $reciept = 0; # 1 = JA 0 = NEIN $reply_subject = "Vielen Dank für Ihren Eintrag"; # Dies ist die eMail, die der Poster von Ihnen erhält. Wenn Sie in der Mitteiung # einen Zeilenumbruch erreichen wollen, so sollte die Zeile mit einem (\n) # enden. Bitte stellen Sie sicher, dass hier mit einem (") begonnen und mit # einem (";) geendet wird. Sonst kommt es zu einer Fehlermeldung. $mail_body = "Vielen Dank für Ihren Eintrag"; ################### ENDE des Konfigurationsabschnittes ######################## # Eingaben aufnehmen read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Splitten der Namens-Variablen @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Webunspezifische Zeichen filtern $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; } if ($FORM{'new'}){ &no_name unless $FORM{'name'}; &no_comments unless $FORM{'comments'}; &no_email unless $FORM{'emailadd'}; &no_email unless $FORM{'emailadd'}; &no_valid_email unless (($FORM{'emailadd'} eq '') || (($FORM{'emailadd'} ne '') && ($FORM{'emailadd'} =~ /\w*@\w*/))); } &GetFileLock; print "Content-Type: text/html\n\n"; if ($FORM{'new'}){ #Nun haben wir einen neuen Eintrag open(GUESTLOG, "$guest_log"); @FILE = ; close(GUESTLOG); print GUESTLOG "Content-Type: text/plain\n\n"; open(GUESTLOG, ">$guest_log"); if ($FORM{'url'}){ print GUESTLOG ""; print GUESTLOG "$FORM{'name'}
"; }else{ print GUESTLOG "$FORM{'name'}
"; } print GUESTLOG "$FORM{'comments'}
"; if ($hyper_link eq '1'){ print GUESTLOG "$FORM{'emailadd'}"; }else{ print GUESTLOG "$FORM{'emailadd'}"; } if ($seperate eq '1'){ print GUESTLOG "

\n"; }else{ print GUESTLOG "


\n"; } print GUESTLOG "




\n"; print GUESTLOG @FILE; close(GUESTLOG); ###################### Dankeschön-Seite für den User ########################## print "\n"; print "$meta\n"; print "$title\n"; print "$body
\n"; print "Thank you $FORM{'name'} , for participating!
\n"; print "

\n"; print "these answers have been published
$FORM{'comments'}


\n"; print "

results
answers to the questionary
\n"; }else{ # Sehen wir uns das Gästebuch an ########### In dieser Sektion wird die Gästebuchdatei geöffnet und angezeigt ########### print "\n"; print "$meta\n"; print "$title\n"; print "$body\n"; print "$top_of_page
\n"; open(GUESTLOG, "$guest_log"); @filein = ; close(GUESTLOG); print @filein; ################### Hier ist der Seitenzähler ##################### { open LOG,"$count_log"; @log_lines = ; close LOG; chop($last_line = $log_lines[$#log_lines]); undef @log_lines; #release storage for log lines if ($last_line =~ /(\d+)/) { $next_number = $1 + 1; } open LOG,">$count_log"; print LOG "H$next_number\n"; close LOG; } if ($center eq '1'){ print "
"; } else{ print "
"; } print "
$font_color\n"; print "$font_size $before $next_number $after\n"; print "\n"; if ($center eq '1'){ print ""; } print "


$bottom_of_page"; } ######################## sub no_comments { print "Content-type: text/html\n\n"; print "No answer(s)r\n"; print "

Please fill in your answer(s).

\n"; print " Please use the back-button to return to the questionary.\n"; print "\n\n"; exit; } sub no_name { print "Content-type: text/html\n\n"; print "No name or any nickname\n"; print "

Please fill in your name or any nickname, then you can send your answers on-line!

\n"; print " Please use the back-button to return to the questionary.\n"; print "\n\n"; exit; } sub no_email { print "Content-type: text/html\n\n"; print "No e-mail address\n"; print "

please fill in your e-mail address, or if you don't want to publish your address make up a combination of signs that ressembles an e-mail address.

\n"; print " Please use the back-button to return to the questionary.\n"; print "\n\n"; exit; } # Subroutine für Fehler in der eMail-Adresse sub no_valid_email { print "Content-type: text/html\n\n"; print "Wrong e-mail address\n"; print "\n"; print "

Falsche eMail-Adresse

\n"; print "please fill in your e-mail address, or if you don't want to publish your address make up a combination of signs that ressembles an e-mail address.\n"; print " Please use the back-button to return to the questionary.\n"; print "\n\n"; exit; } if ($FORM{'new'} && $mail eq '1') { open (MAIL, "|$mailprog $recipient") || die "Can't open $mailprog!\n"; print MAIL "Reply-to: $FORM{'emailadd'} ($FORM{'name'})\n"; print MAIL "From: $FORM{'emailadd'} ($FORM{'name'})\n"; print MAIL "Subject: $subject\n"; print MAIL "$FORM{'comments'}\n"; close (MAIL); } if ($FORM{'new'} && $reciept eq '1') { $emailadd = $FORM{'emailadd'}; open (MAIL, "|$mailprog $emailadd") || die "Can't open $mailprog!\n"; #print MAIL "Reply-to: $recipient\n"; print MAIL "From: $recipient ($title)\n"; print MAIL "Subject: $reply_subject\n"; print MAIL "$mail_body\n"; close (MAIL); } &ReleaseFileLock; ####################################################################### # FileLock # ####################################################################### sub GetFileLock { local ($lock_file) = 'file.lock'; local ($endtime); $endtime = 10; $endtime = time + $endtime; # Wir setzen die Endzeit auf 10 Sekunden wartezeit while (-e $lock_file && time < $endtime) { # Do Nothing } open(LOCK_FILE, ">$lock_file"); # flock(LOCK_FILE, 2); # 2 exclusively locks the file } # ende von FileLock ####################################################################### # ReleaseFileLock # ####################################################################### sub ReleaseFileLock { local ($lock_file) = 'file.lock'; # 8 unlocks the file # flock(LOCK_FILE, 8); close(LOCK_FILE); unlink($lock_file); } # end of ReleaseFileLock exit;