#!/usr/bin/perl

# Pfad zu /cgi-bin
$path="/srv/www/vhosts/kraehseite.de/cgi-bin/";

# Extra-Werbebloecke, d.h. Seiten ohne L4L-Banner
@Werbung=("blond","mannfrau");

# Titel-Hash vorbereiten
%Titel=("arzt","Die G&ouml;tter in Weiss­",
"berufe","Verschiedene Berufsgruppen",
"blond","Blondinenwitze",
"bund","Bundeswehr-Witze",
"computer","Computer- und Programmierer-Witze",
"ddr","Witze aus der ehemaligen DDR",
"eriwan","Anfragen an den Sender Eriwan",
"fies","Fiese Witze!",
"geschichte","Was fr&uuml;her so passierte",
"juden","J&uuml;dische Witze",
"kellner","Kneipen- und Kellnerwitze",
"kinder","Kindermund",
"kirche","Religion und Kirche",
"kram","Schweinskram",
"mannfrau","M&auml;nner und Frauen",
"manta","Mantawitze",
"musiker","Musiker- und Orchesterwitze",
"ossi","Ossis und Wessis",
"ostfriesen","Ostfriesenwitze",
"piloten","Neulich auf dem Flugplatz",
"polizei","Polizisten und Politessen",
"schotten","Nationalitäten",
"sonstiges","Unzuordenbares",
"sport","Sportler- und Sportwitze",
"studenten","Professoren und Studenten",
"tiere","Fabeln (Tierliches \;\-\)",
"wanderer","Da kam ein Wanderer des Wegs",
"zeit","Das \"letzte\" aus dem Zeitgeschehen");

# Namen-Hash vorbereiten
%Names=("Arzt","arzt","Berufe","berufe","Blondinen","blond",
"Bund","bund","Computer","computer","DDR","ddr",
"Sender Erewan","eriwan","Fies!!!","fies2",
"Geschichte","geschichte","Jüdische Witze","juden",
"Kellner","kellner","Kinder","kinder","Kirche","kirche",
"Männer und Frauen","mannfrau","Manta","manta",
"Musiker","musiker","Nationalitäten","schotten",
"Ossis und Wessis","ossi","Ostfriesen","ostfriesen",
"Piloten","piloten","Polizisten","polizei",
"Schweinskram","kram", "Sportler", "sport",
"Profs und Studenten","studenten","Tiere","tiere",
"Wanderer","wanderer","Zeitgeschehen","zeit",
"Sonstiges","sonstiges","in english","english");

# Einlesen der Formulardaten
if($ENV{'REQUEST_METHOD'} eq 'GET') {
  $Daten = $ENV{'QUERY_STRING'};
  @Formularfelder = split(/&/, $Daten);
  foreach $Feld (@Formularfelder) {
    ($name, $value) = split(/=/, $Feld);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/<!--(.|\n)*-->//g;
    $form[$i] = $name; $i++;
    $form[$i] = $value; $i++;
  }
}
else {
  read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
  @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;
    @form=("nr",0,"sparte",$Names{$FORM{'sparte'}});
  }
}
$ipaddr=$ENV{'REMOTE_ADDR'};

# Ausgabe
  $textfilename=$path."texte/".$form[3].".txt";
  $delimiter = "----------\n";
  open(FILE,"<".$textfilename);
  @FILE = <FILE>;
  close(FILE);
  $wtext = join('',@FILE);
  @witze = split(/$delimiter/,$wtext);
  $numspa = int((@witze-1)/20);
  if ($form[1]<$numspa) {$obergr=($form[1]+1)*20-1;}
  else {$obergr=@witze-1;}
  print "Content-type:text/html\n\n\n";
  print "<html><head>\n<title>",$form[3],"</title>\n";
  print "<meta http-equiv=\"expires\" content=\"0\">\n</head>\n";
  print "<script language=\"JavaScript\">\n<!--\n";
  print "function info(){\nwindow.status=\"Treffen Sie Ihre Auswahl\";";
  print "\nreturn true;\n}\nfunction leer(){\nwindow.status='';}\n";
  print "//-->\n</script>";
  print "<body bgcolor=\"#ffffff\" background=\"../hgg.gif\" ";
  print "link=\"#ff2a2a\" vlink=\"#a040a0\" alink=\"#0000ff\">";
  print "<center>";

# Werbebloecke
# private Werbung
  for (@Werbung) {
    if ($_ eq $form[3]) {
      print "<center><a href=\"/cgi-bin/ads",$_,".pl?advert=NonSSI\"";
      print "target=\"_top\">\n<img src=\"/cgi-bin/ads",$_,".pl\" ";
      print "alt=\"Besuchen Sie unseren Sponsor!\" border=1>\n<br><font";
      print " size=-1>Sponsor der Kr&auml;hseite</font></a></center>";
      $m=1;
    }
  }











  if (($form[3] eq "fies2")||($form[1] == -1)) {
    print "<center><font size=4 color=ff0000><blink>WARNUNG";
    print " !!!</blink></font></center>\n<p>Der Inhalt der folgenden ";
    print "Seite wird von manchen Leuten als geschmacklos, teilweise ";
    print "auch als beleidigend empfunden.\nIch m&ouml;chte dazu ";
    print "bemerken, dass ich keinen der folgenden Witze als ";
    print "Verherrlichung der in ihnen angesprochenen Tatsachen ";
    print "verstanden wissen will - wer freut sich schon \n";
    print "<i>wirklich</i> &uuml;ber Fieses?!\n<br><br>Vielmehr geht es ";
    print "hierbei um den vielger&uuml;hmten <b>schwarzen Humor</b>, ";
    print "ausgeschlossen davon sind nat&uuml;rlich rassistische, ";
    print "gewaltverherrlichende und verbrechensf&ouml;rdernde Witze ";
    print "derartige Sachen werden hier nicht gezeigt.<br><br>\n";
    print "Ich bitte, von \"flame mails\" abzusehen, da ich der Meinung ";
    print "bin, dass das Fehlen dieser Kategorie einen falschen (weil ";
    print "unehrlichen und unvollst&auml;ndigen) Eindruck von der ";
    print "deutschen \"Witzlandschaft\" vermittelt,\n und gerade die ";
    print "Vollst&auml;ndigkeit ist eines der erkl&auml;rten Ziele ";
    print "dieser Sammlung.<br><br>\nBedenken Sie bitte auch, dass ";
    print "Witze eine <i>Ausdrucksform</i> des &quot;einfachen&quot; ";
    print "Menschen sind, um auf <i>Missst&auml;nde in der ";
    print "Gesellschaft</i> hinzuweisen; ich bitte, die Witze in ";
    print "diesem Sinne aufzufassen.<br><br>\n Einige der folgenden ";
    print "Witze sind f&uuml;r Personen unter 18 Jahren ungeeignet! ";
    print "<br><br><center>\n";
    print "<a href=\"http://www.kraehseite.de/cgi-bin/sparte.pl?";
    print "nr=0&sparte=fies\">";
    print "<img src=\"http://www.kraehseite.de/letsgo.gif\" alt=\"Ja, ";
    print "ich m&ouml;chte diese Seite sehen\" border=0></a>\n";
    print "<a href=\"http://www.kraehseite.de/dwitze20.shtml\">";
    print "<img src=\"http://www.kraehseite.de/zurueck.gif\" ";
    print "alt=\"Nein, ich m&ouml;chte diese Seite nicht sehen\" ";
    print "border=0></a>\n</center>";
  }
  elsif ($form[3] eq "english") {
    open(FILE,"/home/kraehseite_de/www/ewitze.html");
    @LINES = <FILE>;
    close(FILE);
    $string = join(' ',@LINES);
    print $string;
  }
  else {
    print "<center>\n";
    print "<h2>",$Titel{$form[3]},"</h2>\n";
    foreach $j (0..$numspa) {
      if ($j==$form[1]) {
        print " <b>",$form[1]+1,"</b> ";
      }
      else {
        print " <a href=\"http://www.kraehseite.de/cgi-bin/sparte.pl";
        print "?nr=",$j,"&sparte=",$form[3],"\">",$j+1,"</a> \n";
      }
    }
    print "<br>\n";
    print "<form method=POST action=\"http://www.kraehseite.de/cgi-bin";
    print "/sparte.pl\">\n";
    print "<select name=\"sparte\">\n";
    print "<option>Arzt\n";
    print "<option>Berufe\n";
    print "<option>Blondinen\n";
    print "<option>Bund\n";
    print "<option>Computer\n";
    print "<option>DDR\n";
    print "<option>Sender Erewan\n";
    print "<option>Fies!!!\n";
    print "<option>Geschichte\n";
    print "<option>J&uuml;dische Witze\n";
    print "<option>Kellner\n";
    print "<option>Kinder\n";
    print "<option>Kirche\n";
    print "<option>M&auml;nner und Frauen\n";
    print "<option>Manta\n";
    print "<option>Musiker\n";
    print "<option>Nationalit&auml;ten\n";
    print "<option>Ossis und Wessis\n";
    print "<option>Ostfriesen\n";
    print "<option>Piloten\n";
    print "<option>Polizisten\n";
    print "<option>Schweinskram\n";
    print "<option>Sportler\n";
    print "<option>Profs und Studenten\n";
    print "<option>Tiere\n";
    print "<option>Wanderer\n";
    print "<option>Zeitgeschehen\n";
    print "<option>Sonstiges\n";
    print "<option>in english\n";
    print "</select>\n&nbsp;\n";
    print "<input type=submit value=\"Ausw&auml;hlen\">\n";
    print "<br><br>\n";

# Abfrage, ob Punktzahl fuer die laufende Sparte schon vergeben wurde
  $fn=$path."daten/".$form[3].".txt";
  $deli1="--\n";
  $deli2="<>";
  open(FILE,"<".$fn || die print $textfilename," nicht gefunden!\n");
  @dat=<FILE>;
  close(FILE);
  $wtext=join('',@dat);
  @votes=split(/$deli1/,$wtext);
  $i=0;
  until (($feld[0] eq $ipaddr) || $i>@votes) {
    @feld = split(/$deli2/,$votes[$i]);
    $i++;
  }
  if ($feld[0] eq $ipaddr) {
    $a=(0,0,0,0);
    if ($feld[1]!=0) {$a[0]=1;}
    if ($feld[2]!=0) {$a[1]=1;}
    if ($feld[3]!=0) {$a[2]=1;}
    if ($feld[4]!=0) {$a[3]=1;}
  }
  else {$a=(0,0,0,0);}

# Splitten in Platzierung, Punkte, etc.
# anz[0] - Vortagsplatz
# anz[1] - 1000er Punkte
# anz[2] - Gesamtpunkte
# anz[3] - Witztext

  foreach $i (20*$form[1]..$obergr) {
    $del2="<>";
    @anz=split(/$del2/,$witze[$i]);
    print "<table width=\"80%\" border=\"0\" cellspacing=\"1\">";
    print "\n<tr>\n<td width=\"35%\" ";
    print "bgcolor=\"#000080\">\n<font color=\"#ffffa0\">&nbsp;";
    print $i+1,". <font color=\"#c0c0c0\">(",$anz[0],".)</font>";
    print "&nbsp;&nbsp;&nbsp;",$anz[1]," Punkte</td>\n";
    print "<td bgcolor=\"#000080\" cellspacing=\"0\" width=\"65%\" ";
    print "cellpadding=\"0\">\n<center><table border=\"0\" ";
    print "cellspacing=\"1\" cellpadding=\"1\"width=\"100%\">";
    print "<tr><td bgcolor=\"#ffffc0\" align=\"right\">";

    if ($a[0]==0) {
      print "<a href=\"vote.pl?file=",$form[3],"&ip=",$ipaddr;
      print "&wnr=",$i+1,"&pkt=3\" OnMouseOver=\"return info()\"\n";
      print "OnMouseOut=\"leer()\";>(+3)</a>&nbsp;&nbsp;";}
    else {print "<font color=\"#808080\">(+3)</font>&nbsp;&nbsp;";}
    if ($a[1]==0) {
      print "<a href=\"vote.pl?file=",$form[3],"&ip=",$ipaddr;
      print "&wnr=",$i+1,"&pkt=2\" OnMouseOver=\"return info()\"\n";
      print "OnMouseOut=\"leer()\";>(+2)</a>&nbsp;&nbsp;";}
    else {print "<font color=\"#808080\">(+2)</font>&nbsp;&nbsp;";}
    if ($a[2]==0) {
      print "<a href=\"vote.pl?file=",$form[3],"&ip=",$ipaddr;
      print "&wnr=",$i+1,"&pkt=1\" OnMouseOver=\"return info()\"\n";
      print "OnMouseOut=\"leer()\";>(+1)</a>&nbsp;&nbsp;";}
    else {print "<font color=\"#808080\">(+1)</font>&nbsp;&nbsp;";}
    if ($a[3]==0) {
      print "<a href=\"vote.pl?file=",$form[3],"&ip=",$ipaddr;
      print "&wnr=",$i+1,"&pkt=-1\" OnMouseOver=\"return info()\"\n";
      print "OnMouseOut=\"leer()\";>(-1)</a>&nbsp;&nbsp;";}
    else {print "<font color=\"#808080\">(-1)</font>&nbsp;&nbsp;";}

    print "</td></tr>\n</table>\n";
    print "</td></tr>\n<tr><td colspan=\"2\" cellspacing=\"0\" ";
    print "cellpadding=\"0\" ";
    print "bgcolor=\"#000080\">\n<center><table border=\"0\" ";
    print "cellspacing=\"1\" cellpadding=\"2\"width=\"100%\">";
    print "<tr><td bgcolor=\"#ffffc0\">",$anz[3],"</td></tr></table>";
    print "</td></tr>\n</table>\n<br>\n";
  }
  foreach $j (0..$numspa) {
    if ($j==$form[1]) {
      print " <b>",$form[1]+1,"</b> ";
    }
    else {
      print " <a href=\"http://www.kraehseite.de/cgi-bin/sparte.pl";
      print "?nr=",$j,"&sparte=",$form[3],"\">",$j+1,"</a> \n";
    }
  }
}
print "</center>\n</body>\n</html>\n";
