diff options
Diffstat (limited to '0.2.1')
| -rw-r--r-- | 0.2.1/HTDOCS.PL | 219 | ||||
| -rw-r--r-- | 0.2.1/INDEX.PL | 339 | ||||
| -rw-r--r-- | 0.2.1/INSTALL.txt | 83 | ||||
| -rw-r--r-- | 0.2.1/LIESMICH.txt | 24 | ||||
| -rw-r--r-- | 0.2.1/bar.gif | bin | 0 -> 231 bytes | |||
| -rw-r--r-- | 0.2.1/config.pm | 296 | ||||
| -rw-r--r-- | 0.2.1/help_html | 616 | ||||
| -rw-r--r-- | 0.2.1/logs_html | 391 | ||||
| -rw-r--r-- | 0.2.1/main.pl | 555 | ||||
| -rw-r--r-- | 0.2.1/main2.pl | 502 | ||||
| -rw-r--r-- | 0.2.1/push.pl | 85 | ||||
| -rw-r--r-- | 0.2.1/unten.gif | bin | 0 -> 662 bytes | |||
| -rw-r--r-- | 0.2.1/yChat.jpg | bin | 0 -> 50407 bytes |
13 files changed, 3110 insertions, 0 deletions
diff --git a/0.2.1/HTDOCS.PL b/0.2.1/HTDOCS.PL new file mode 100644 index 0000000..cc2ae41 --- /dev/null +++ b/0.2.1/HTDOCS.PL @@ -0,0 +1,219 @@ +#!/usr/bin/perl -w + +use CGI; # CGI-Modul laden +$q = new CGI; + +require config; # config.pm in Dokument laden + +print + $q->header(); # HTTP-Header erzeugen + + +##################################### +##WELCHE SUB MUß AUSGEFÜHRT WERDEN?## +##################################### +if ($var eq "help_html") { + &printfile("data/htdocs/help_html","Alle Chatbefehle"); +} elsif ($var eq "menu_html") { + &menu_html; +} elsif ($var eq "werda_html") { + &werda_html; +} elsif ($var eq "logs_html") { + &logs_html; +} elsif ($var eq "view_sulogs_html") { + &hirachie($alias); + if ($hirachie eq "ow") { + &start_html("Oberwächter-Logdateien"); + print "<div><a href=\"push.pl?alias=$alias&tmp=$tmp&var=push_logs_html\">Push</a><hr>"; + &printfile($tmp); + print "</div></body></html>"; + } +} elsif ($var eq "view_logs_html") { + &hirachie($alias); + if ($hirachie eq "ow" || $hirachie eq "wa") { + &printfile($tmp,$tmp,"log"); + } +} elsif ($var eq "superuser_html") { + &superuser_html; +} else { + print + $q->start_html(-bgcolor=>"000000"), + $q->end_html; +} + +sub menu_html { + if ($tmp eq "quit") { + print + $q->script( { -language=>"JavaScript" }, "window.open(\"index.pl?tmp=quit\",\"_top\")" ); + sleep 1; + &remove_online($alias); + &secure_removeip($alias); + unlink("data/msgs/$alias"); + } + &start_html("Menü","menu"); +print <<END; + <center> + <div> + [<a href="htdocs.pl?var=werda_html&alias=$alias&room=$room&col=$col&secol=$secol&&tmp=$tmp" target="werda">Wer ist da?</a>] + [<a href="main2.pl?var=alias_html&alias=$alias&tmp=$alias" target="DeinProfil">Dein Profil</a>] + [<a href="main2.pl?var=edit_profile_html&alias=$alias" target="ProfilAendern">Profil ändern</a>] + [<a href="main2.pl?var=edit_options_html&alias=$alias" target="main">Chat-Optionen</a>] + [<a href="main2.pl?var=list_alias_html&alias=$alias" target="Benutzerliste">Benutzerliste</a>] + [<a href="htdocs.pl?var=help_html" target="Befehle">Chat-Befehle</a>] + [<a href="main2.pl?var=gb_html&alias=$alias" target="Board">Benutzerboard</a>] + [<a href="htdocs.pl?var=superuser_html&alias=$alias" target="Hirachie">Superuser</a>] + [<a href="htdocs.pl?var=logs_html&alias=$alias" target="Logdateien">Logdateien</a>] + [<a href="push.pl?alias=$alias&room=$room&var=clear_screen" target="main">Weiterchatten</a>] + [<a href="htdocs.pl?var=menu_html&tmp=quit&alias=$alias">Chat verlassen</a>] + </div> + </center> +</body> +</html> +END +} + + +sub werda_html { # Anzeige, wer eingelogt ist. + &start_html("Wer ist da?"); + print <<END; +<div> + $alias, schön daß Du hier bist :-) +</div> +<hr> +<div> + Folgende Personen befinden sich im Chat: +</div> +<br> +<div> +END + &list_dir("data/online/rooms"); + foreach(@dir) { + if (-e "data/online/rooms/$_" && $_ ne ".." && $_ ne ".") { + my $room = $_; + &list_dir("data/online/rooms/$room",2); + local $nr = $#dir2-1; + print $q->b( $_ ), + "($nr)", + $q->br; + foreach(@dir2) { + if ($_ ne ".." && $_ ne ".") { + print + $q->a( { -href=>"main2.pl?var=alias_html&alias=$alias&tmp=$_" }, "$_"), " "; + } + } + print $q->br, $q->br; + } + } + print + "</div>", + $q->end_html; +} + +sub logs_html { + &secure_checkip($alias); + &start_html("Logdateien"); + print <<END; +<div> + Hier befinden sich alle Logdateien +</div> +<hr> +END + &hirachie($alias); + if ($hirachie eq "ow" || $hirachie eq "wa") { + if ($hirachie eq "ow") { + print $q->div( "Folgende Logdateien können nur von Oberwächtern (OW) gelesen werden" ); + &printfile("data/htdocs/logs_html"); + &list_dir("data/logs/ow"); + my @sortedir = sort(@dir); + foreach(@sortedir) { + if (-f "data/logs/ow/$_") { + print $q->a( { -href=>"htdocs.pl?var=view_sulogs_html&alias=$alias&tmp=data/logs/ow/$_", + -target=>$_}, + "$_" ). + " ", + } + } + print $q->hr; + } + print $q->div( "Folgende Logdateien können nur von Wächtern und Oberwächtern gelesen werden (Sortiert nach A-Z, a-z):" ), + $q->br; + &list_dir("data/logs"); + my @sortedir = sort(@dir); + foreach(@sortedir) { + if (-f "data/logs/$_") { + print $q->a( { -href=>"htdocs.pl?alias=$alias&var=view_logs_html&tmp=data/logs/$_", + -target=>"_new" }, + "$_" ), + " "; + } + } + if ($hirachie eq "wa") { + print $q->hr, + $q->div( "Oberwächter können zusätzlich die Systemlogdateien lesen. Du bist allerdings ein \"Wächter\" und ", + " bist nicht dazu berechtigt " ), + $q->br; + &printfile("data/htdocs/logs_html"); + } + } else { + print $q->div( "Logdateien können nur von Oberwächtern (OW) und von Wächtern (WÄ) gelesen werden. Du bist jedoch ein ", + "\"Normaler Chatter\". Wächter können alles nachlesen, was öffentlich gechattet wurde. Oberwächter ", + "können folgende Systemlogdateien zusätzlich lesen:" ), + $q->hr; + &printfile("data/htdocs/logs_html"); + } + print + $q->end_html; +} + +sub superuser_html { # Zeigt an, wer Superuser ist + &start_html("Superuser"); + print "<div>Hallo $alias. Du bist als "; + &hirachie($alias); + if ($hirachie eq "ow") { + print + $q->b( "Oberwächter" ), + " (OW) eingetragen.</div>", + $q->hr; + } elsif ( $hirachie eq "wa") { + print + $q->b( "Wächter" ), + " (WÄ) eingetragen.</div>", + $q->hr; + } else { + print + $q->b( "normaler Chatter" ), + " (NC) eingetragen.</div>", + $q->hr; + } + my $nrow = $#ows+1; + print + "<div>", + $q->b( "OW" ), + "s ($nrow Stück)"; + foreach(@ows) { + print + $q->font( { -color=>"FFA500" }, + " ".$_); + } + my $nrwa = $#was+1; + print + "</div>", + $q->hr, + "<div>", + $q->b( "WÄ" ), + "s ($nrwa Stück)"; + foreach(@was) { + print + $q->font( { -color=>"FFA500" }, + " ".$_); + } +print <<END; +<hr> + Die jeweiligen Fähigkeiten der Oberwächter (OW) und der Wächter (WÄ) sind unter + "<a href="htdocs.pl?var=help_html">Chat-Befehle</a>" + dokumentiert. +</div> +</body> +</html> +END +}
\ No newline at end of file diff --git a/0.2.1/INDEX.PL b/0.2.1/INDEX.PL new file mode 100644 index 0000000..1533656 --- /dev/null +++ b/0.2.1/INDEX.PL @@ -0,0 +1,339 @@ +#!/usr/bin/perl -w + +use CGI; # CGI-Modul laden +$q = new CGI; + +require config; # config.pm in Dokument laden + +print + $q->header; # HTTP-Header erzeugen + +##################################### +##WELCHE SUB MUß AUFGERUFEN WERDEN?## +##################################### +if ($var eq "create_alias_html") { + &create_alias_html; +} elsif ($var eq "create_alias") { + &create_alias; +} elsif ($var eq "login_html") { + &login_html; +} elsif ($alias eq "") { + &login_html; +} else { + &checklogin; +} + +sub login_html { # Erste Startseite +local $counter = undef; +&read_file("data/count"); + $counter = <DATEI>; +close DATEI; +$counter++; +&write_file_new("data/count"); + print DATEI $counter; +close DATEI; +&start_html("Created by Paul C. Bütow 2k"); +print <<END; + <center> + <table width=400> + <tr> + <td> + <b> + <div> + $title + <img src="$gfxpath/yChat.jpg"> + </div> + </b> +END + if ($tmp eq "true") { +print <<END; + <div class=b> + ACHTUNG! + </div> + <div> + Wahrscheinlich existiert Dein Alias "$alias" nicht, + <br> + Du hast Dich verschrieben oder das Passwort ist falsch. + <br> + Versuch es erneuert ! + </div> +END + } elsif ($tmp eq "quit") { +print <<END; + <div> + Du hast soeben den Chat verlassen. + <br> + Um den Chat erneuert zu betreten, einfach Daten eingeben und auf "Los Geht's" klicken :-) + </div> +END + } elsif ($tmp eq "banned") { +print <<END; + <div class=b> + ACHTUNG! + </div> + <div> + Dein Alias "$alias" wurde verbannt. + <br> + Z.z. kannst Du Dich leider nicht in den Chat einloggen. + <br> + Sorry! + </div> +END + } elsif ($tmp eq "kick") { +print <<END; + <div class=b> + ACHTUNG! + </div> + <div> + Du wurdest soeben aus dem Chat katapultiert! + <br> + Schlechtes Verhalten mag die Ursache hierfür sein. + <br> + Sorry! + </div> +END + } elsif ($var eq "create_alias") { +print "<div>Du hast sich soeben in die Datenbank eingetragen. Einfach auf \"Los Geht's\" klicken :-)</div>"; + } else { +print <<END; + <div> + Herzlich willkommen! + <br> + Einfach Daten eingeben und auf "Los Geht's" klicken :-) + </div> +END + &log("system","\"first_http_ok\""); + } +print <<END; + <hr> + <form action="index.pl"> + <input type="hidden" name="tmp" value="true"> + <table> + <tr> + <td> + <div> + Dein Alias: + <br> + <input name="alias" value="$alias"> + </div> + </td> + <td> + <div> + Dein Passwort: + <br> + <input type="password" name="id" value="$id"> + </div> + </td> + </tr> + </table> + <br> + <br> + <div> + Solltest Du noch keinen Nick besitzen, dann auf "Registrieren" klicken! + </div> + <br> + <table> + <tr> + <td> + <font color="ffffff"> + <input type="submit" value="Los geht's!"> + </font> + </form> + </td> + <td> + <form action="index.pl"> + <input type="hidden" name="var" value="create_alias_html"> + <font color="ffffff"> + <input type="submit" value="Registrieren"> + </font> + </form> + </td> + </tr> + </table> + <hr> + <div> + yChat befindet sich momentan noch in der Entwicklungsphase ! + <br> + Fragen gehen an Paul Bütow ( + <a href="mailto:paul\@buetow.oxg.de"> + paul\@buetow.oxg.de + </a> + ) :-) + <br> + <br> + Diese Seite wurde schon $counter mal aufgerufen. + </td> + </tr> + </table> + </center> +</body> +</html> +END +} + + +sub create_alias_html { # HTML-Form für Erstellung eines neuen Benutzers. +my $reload = $_[0]; +&start_html("Registration"); +print <<END; + <center> + <table width=400> + <tr> + <td> +END + if ($reload eq "alias_exists") { +print <<END; + <div class=b> + ACHTUNG! + </div> + <div> + Der von Dir gewählte Benutzername "$alias" existiert in unserer Datenbank bereits. Bitte versuch es erneuert mit + einem anderen Benutzernamen ! + </div> + <hr> +END +} elsif ($reload eq "pw_wrong") { +print <<END; + <div class=b> + ACHTUNG! + </div> + <div> + Deine beiden Passworteingaben stimmen nicht überein. Bitte geb das Passwort erneuert an um sicherzugehen, daß + kein falsches Passwort abgespeichert wird ! + </div> + <hr> +END +} else { +print <<END; + <div> + Hier kannst Du Dich registrieren. Bitte beachte, daß die Passworteingabefelder übereinstimmen! + </div> + <hr> +END +} +print <<END; + <form action="index.pl"> + <input type="hidden" name="var" value="create_alias"> + <div> + Dein Alias: + <font color="ffa500"> + (Muß angegeben werden) + </font> + <br> + <input name="alias" VALUE="$alias"> + </div> + <br> + <div> + Dein gewünschtes Passwort: + <br> + <input type="password" name="id" value="$id"> + </div> + <br> + <div> + Geb hier Dein Passwort erneuert ein: + <br> + <input type="password" name="tmp"> + </div> + <br> + <font color=ffffff> + <input type="submit" value="Registrieren"> + </font> + <br> + </form> + <hr> + <div> + Um den Chat zu betreten müssen die Daten nach der Registration auf der Startseite erneuert bestätigt werden ! + </div> + </td> + </tr> + </table> +</center> +</body> +</html> +END +} + +sub checklogin { # Überprüfen, ob die Login-Daten korrekt sind. + my $lognotexists = "true"; + &list_dir("data/user/options"); + for (my $i=0; $i<=$#dir; $i++) { + if ($dir[$i] eq $alias) { + &read_file("data/user/options/$alias"); + @datei = <DATEI>; + close DATEI; + chomp($datei[0]); + if ($datei[0] eq $id) { + &read_file("data/ban"); # Überprüfen, ob Alias verbannt ist + @banned = <DATEI>; + close DATEI; + foreach(@banned) { + if ($_ eq "$alias\n") { + &log("system","\"login_alias_banned\""); + $tmp = "banned"; + &login_html(); + exit; + } + } + $col = $datei[1]; + $secol = $datei[2]; + &secure_setip($alias); + &frameset_html; + exit; + } else { + &log("system","\"login_pw_wrong\""); + $lognotexists = "false"; + } + } + } + if ($lognotexists eq "true") { + &log("system","\"login_alias_notexists\""); + } + &login_html; # Falls Login-Daten inkorrekt sind, zurück zur Startseite. +} + +sub create_alias { # Erstellung eines neuen Benutzers. + if ($alias =~ /[\W]/ || $alias eq "") { + &log("system","\"reg_alias_prohibited\""); + &create_alias_html("alias_prohibited");; + exit; + } elsif ($id ne $tmp) { + &log("system","\"reg_pw_wrong\""); + &create_alias_html("pw_wrong"); + exit; + } + &list_dir("data/user/options"); + for (my $i=0; $i<=$#dir; $i++) { + if ($dir[$i] eq $alias) { + &log("system","\"reg_alias_exists\""); + &create_alias_html("alias_exists"); + exit; + } + } + &write_file_new("data/user/options/$alias"); + print DATEI $id."\n"; + close DATEI; + &zeit; + &list_dir("data/user/options"); + my $number = $#dir-1; + &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias [$number] hat sich soeben als neuer Benutzer registriert :-) ...</font></i>"); + &log("system","\"reg_ok\""); + &login_html; +} + +sub frameset_html { +print <<END; +<html> + <head> + <title> + $title - Created by Paul C. Bütow 2k + </title> + </head> +<frameset border=0 frameborder=0 framespacing=0 rows="50,1,*,55"> + <frame name="menu" src="htdocs.pl?alias=$alias&var=menu_html&room=$room&col=$col&secol=$secol" scrolling="no"> + <frame name="inroom" src="main.pl?var=inroom_html&alias=$alias&room=$room" scrolling="no"> + <frame name="main" src="push.pl?room=$room&alias=$alias&var=clear_screen"> + <frame name="input" src="main.pl?alias=$alias&var=input_html&room=$room&col=$col&secol=$secol&tmp=login" scrolling="no"> +</frameset> +</html> +END +} diff --git a/0.2.1/INSTALL.txt b/0.2.1/INSTALL.txt new file mode 100644 index 0000000..16cfd0a --- /dev/null +++ b/0.2.1/INSTALL.txt @@ -0,0 +1,83 @@ +#############################################################################
+## yChat.de Version 0.2.1 by CXG.de: The chatters of the next generation ##
+## Copyright by Paul C. Bütow aka Snooper 2000 (paul@buetow.oxg.de) ##
+#############################################################################
+yChat findest Du im Internet unter der Adresse www.yChat.de. Bei Kritik,
+Anregungen oder Fragen bitte in das dort vorhandene Board posten oder eine
+E-Mail an die oben stehende Adresse senden. Ich bemühe mich, yChat so gut wie
+möglich zu machen und bin über Ratschläge immer sehr erfreut :-) ...
+
+Folgende Basis-Dateien sind im Chat enthalten und müssen in das cgi-bin
+Verzeichnis kopiert werden. Z.B. nach ./cgi-bin/yChat/:
+
+config.pm => 500 Configurationsdatei ("Shared subs")
+htdocs.pl => 101 HTML-Dokumentdateien (Nicht unbedingt erforderlich)
+index.pl => 101 Startskript (Registrierung, Frameset, Login, Daten edit.)
+main.pl => 101 Hauptskript (Alle Hauptfunktionen des Chats)
+main2.pl => 101 Skript für editieren der Benutzerdaten etc.
+push.pl => 101 Server-Push-Routine
+LIESMICH.txt => Beinhaltet wichtige Informationen
+INSTALL.txt => Dieses Dokument
+
+Folgende Verzeichnisse müssen erstellt werden (chmod 777 sollte
+funktionieren):
+
+- Hier befinden sich alle für den Chat notwenidgen Daten:
+ ./cgi-bin/yChat/data/*
+
+- Hier befinden sich alle für den Chat notwendigen HTML-Dokumente:
+ ./cgi-bin/yChat/data/htdocs/*
+
+ Folgende Dateien müssen in das "data/htdocs" verzeichnis bewegt werden:
+
+ help_html => 101 Hilfedatei
+ logs_html => 101 Logbeschreibung
+
+- Hier befinden sich alle Logdateien, die vom Chat erstellt werden:
+ ./cgi-bin/yChat/data/logs/*
+
+- Hier befinden sich die Message-Dateien der eingelogten Benutzer:
+ ./cgi-bin/yChat/data/msgs/*
+
+- Hier befinden sich alle Daten der registrierten Benutzer:
+ ./cgi-bin/yChat/data/user/*
+
+- Hier befinden sich alle Chat-Optionen und Passwörter der registrierten
+ Benutzer:
+ ./cgi-bin/yChat/data/user/options/*
+
+- Hier befinden sich alle Benutzerprofile der Benutzer:
+ ./cgi-bin/yChat/data/user/profiles/*
+
+- Hier befinden sich alle Gästebucheinträge der Benutzer:
+ ./cgi-bin/yChat/data/user/gbooks/*
+
+- Hier befinden sich alle Daten zu den aktuellen Chaträumen und User die online sind
+ ./cgi-bin/yChat/data/online/*
+
+- Hier befinden sich alle offnenen Räume
+ ./cgi-bin/yChat/data/online/rooms/*
+
+- Hier befinden sich die Chatter, die sich in den jew. Räumen befinden
+ ./cgi-bin/yChat/data/online/rooms/RAUMNAME/*
+
+- Hier befinden sich alle Chatter, die sich z.Z. im System befinden
+ ./cgi-bin/yChat/data/online/users/*
+
+- Hier befinden sich alle IP-Nummern der eingelogten Chatter
+ ./cgi-bin/yChat/data/online/ident/*
+
+Folgende GRafikdateien sollten in ein nicht-CGI-BIN-Verzeichnis kopiert werden. Z.B.
+nach ./yChat/
+
+ bar.gif => Der gelb gestreifte Rand auf den meisten Seiten
+ unten.gif => Der Hintergrund für das Eingabeformular im Chat
+ yChat.gif => Das yChat-Logo auf der Startseite
+
+Zum schluß sollte die config.pm-Datei nach wünschen editiert werden. Allerdings sollten
+die Copyright Hinweise und die Versionsnummern nicht manipuliert werden.
+
+Folgende Dateien werden von yChat automatisch erstellt:
+
+Viel Spaß beim Chatten ...
+ Snooper
\ No newline at end of file diff --git a/0.2.1/LIESMICH.txt b/0.2.1/LIESMICH.txt new file mode 100644 index 0000000..93db3ce --- /dev/null +++ b/0.2.1/LIESMICH.txt @@ -0,0 +1,24 @@ +#############################################################################
+## yChat.de Version 0.2.1 by CXG.de: The chatters of the next generation ##
+## Copyright by Paul C. Bütow aka Snooper 2000 (paul@buetow.oxg.de) ##
+#############################################################################
+Hallo Du,
+vielen Dank, daß Du Dir die Zeit nimmst, dieses Dokument sorgfältig zu
+lesen. Die grundliegende Idee von yChat.de ist die, ein funktionsfähiges,
+einfach zu bedienendes und zu installierendes Chat-System zu bieten. yChat
+ist keineswegs Free- oder Shareware und darf somit NICHT ohne die Erlaubnis
+vom Autor weitergegeben oder kopiert werden.
+Diejenigen, die dazu befugt sind, yChat vom eigenen Server aus zu betreiben,
+dürfen keineswegs die Copyright-Hinweise des Systems so manipulieren, daß
+diese für den Besucher nicht mehr ersichtlich sind.
+Weitergabe des yChat-Systems darf nur durch Einwilligung des Autors
+durchgeführt werden. Dies geschieht nur gegen entsprechende Gegenleistungen
+wie z.B. Bannerwerbung für www.yChat.de auf viel Besuchten Seiten (
+Seitenbesuche müssen nachgewiesen werden ), Werbung in vielgelesenen
+Newslettern o.Ä. . Allerdings sollte dem Autor vorher um Erlaubnis geboten
+werden. Gegen Geld ist das yChat-System noch nicht zu haben. Allerdings
+wird der Preis in etwa DM 500,- betragen. Für Fragen und Antworten bitte an
+die obrige E-Mail Adresse wenden.
+Installationshinweise findest Du in der datei INSTALL.txt
+MfG
+Paul C. Bütow aka Snooper
diff --git a/0.2.1/bar.gif b/0.2.1/bar.gif Binary files differnew file mode 100644 index 0000000..61d02b7 --- /dev/null +++ b/0.2.1/bar.gif diff --git a/0.2.1/config.pm b/0.2.1/config.pm new file mode 100644 index 0000000..3baeb56 --- /dev/null +++ b/0.2.1/config.pm @@ -0,0 +1,296 @@ +########################### Dieser Teil bestimmt die Standart-Variabeln.
+##STANDART-CONFIGURATION:## (CSS, Farben, Version etc.)
+###########################
+
+$alias = $q->param("alias");
+$var = $q->param("var");
+$room = $q->param("room");
+$col = $q->param("col");
+$secol = $q->param("secol");
+$msg = $q->param("msg");
+$tmp = $q->param("tmp");
+$id = $q->param("id");
+$room = "Cyberbar" if ($room eq "");
+$col = "ffffef" if ($col eq "");
+$secol = "ffffef" if ($secol eq "");
+$datum = "20.11.2k";
+$version = "0.2.1";
+$title = "yChat.de ($version)";
+$gfxpath = "http://localhost/yChat/";
+#$gfxpath = "../../gfx/";
+$style = <<ENDCSS;
+<style rel="stylesheet" type="text/css">
+ body { background-image: url("$gfxpath/bar.gif"); background-color: 000000 }
+ body.menu { background-image: none }
+ body.log { background-color: 000000 }
+ div { font-family: arial, verdana, helvetiva; font-size: 10pt; color: ffffff }
+ div.b { font-weight: bold; color: ffa500 }
+ a { color: ffffef }
+ a:hover { color: ffffff; text-decoration: none }
+</style>
+ENDCSS
+
+############### Dieser Teil enthält Programmcode, der an verschiedenen
+##SHARED-SUBS## Stellen ausgeführt werden muß und jedem Skript zur
+############### Verfügung steht.
+
+sub printfile { # Liest eine externe Datei ein und gibt sie mit print aus
+ my ($file2print,$pagetitle,$bodyclass) = @_;
+ if ($pagetitle ne "") {
+ &start_html($pagetitle,$bodyclass);
+ }
+ print "<div><a href=\"push.pl?alias=$alias&tmp=$tmp&var=push_logs_html\">Push</a></div><hr>" if ($bodyclass eq "log");
+ &read_file($file2print);
+ @file2print = <DATEI>;
+ close DATEI;
+ print @file2print;
+}
+
+
+sub start_html { # Der HEADER einer HTML-Datei
+print <<END;
+<html>
+ <head>
+ <title>
+ $title - $_[0]
+ </title>
+ $style
+ </head>
+END
+ if ($_[1] ne "") {
+ print "<body class=$_[1]>";
+ } else {
+ print "<body>";
+ }
+}
+
+sub post { # Öffentliche Nachricht im aktuellen Raum $room posten.
+ my ($msg2post,$secroom) = @_;
+ my @rooms = ($room,$secroom);
+ foreach(@rooms) {
+ my $room2post = $_;
+ &list_dir("data/online/rooms/$room2post");
+ foreach(@dir) {
+ my $alias2post = $_;
+ if (-f "data/online/rooms/$room2post/$alias2post") {
+ &write_file("data/msgs/$alias2post");
+ print DATEI "$msg2post<br>\n";
+ close DATEI;
+ }
+ }
+ }
+ &log("msg","$msg2post");
+}
+
+
+sub post_all { # Öffentliche Nachricht in ALLEN Räumen gleichzeitig posten.
+ my $msg2post = $_[0];
+ &list_dir("data/online/users");
+ foreach(@dir) {
+ my $alias2post = $_;
+ if (-f "data/online/users/$alias2post") {
+ &write_file("data/msgs/$alias2post");
+ print DATEI "$msg2post<br>\n";
+ close DATEI;
+ }
+ }
+ &log("msg","$msg2post");
+}
+
+sub post_prv { # Private Nachricht posten (flüstern).
+ my $alias2post = $_[0];
+ my $msg2post = $_[1];
+ &write_file("data/msgs/$alias2post");
+ print DATEI "$msg2post<br>\n";
+ close DATEI;
+}
+
+sub log { # Protokollieren der Nachrichten etc.
+ my ($method,$msg2log) = @_;
+ &zeit;
+ if ( $method eq "msg") {
+ $log = "data/logs/$room-$day.$month.$year";
+ } elsif ($method eq "logins") {
+ $log = "data/logs/ow/logins-$day.$month.$year";
+ $syslog = "data/logs/ow/system-$day.$month.$year";
+ } elsif ($method eq "system") {
+ $log = "data/logs/ow/system-$day.$month.$year";
+ }
+ &write_file($log);
+ if ($method eq "msg") {
+ print DATEI "<br><font color=ffffef><i>($hours:$min:$sec)</i></font> $msg2log\n";
+ } elsif ($method eq "logins") {
+ print DATEI "($day.$month.-$hours:$min:$sec) User: $alias IP#: $ENV{'REMOTE_ADDR'} Agent: $ENV{'HTTP_USER_AGENT'}\n<br>";
+ close DATEI;
+ &write_file($syslog);
+ print DATEI "($day.$month.-$hours:$min:$sec) $msg2log User: $alias IP#: $ENV{'REMOTE_ADDR'}\n<br>";
+ } elsif ($method eq "system") {
+ print DATEI "($day.$month.-$hours:$min:$sec) $msg2log User: $alias IP#: $ENV{'REMOTE_ADDR'}\n<br>";
+ }
+ close DATEI;
+}
+
+
+sub zeit { # Aktuelles Datum und Uhrzeit bestimmen.
+ ($sec, $min, $hours, $day, $month, $year) = (localtime)[0..5];
+ $month += 1;
+ $hours = "0".$hours if ($hours < 10);
+ $min = "0".$min if ($min < 10);
+ $sec = "0".$sec if ($sec < 10);
+ $day = "0".$day if ($day < 10);
+ $month = "0".$month if ($month < 10);
+ $year = $year - 100;
+ if ($year < 10) {
+ $year = "200".$year;
+ } else {
+ $year = "20".$year;
+ }
+}
+
+sub count { # Zeilen in einer Datei Zählen.
+ my $file2count = $_[0];
+ &read_file($file2count);
+ my @datei = <DATEI>;
+ close DATEI;
+ $number = $#datei+1;
+}
+
+sub read_file { # Datei öffnen.
+ my $file2read = $_[0];
+ if (-e "$file2read") {
+ open (DATEI,"<$file2read") || &error("Konnte $file2read nicht öffnen");
+ }
+}
+
+sub write_file { # Text an eine Datei anhängen.
+ my $file2write = $_[0];
+ if (-e "$file2write") {
+ open (DATEI,">>$file2write") || &error("Konnte $file2write nicht öffnen");
+ } else {
+ &create_file("$file2write");
+ open (DATEI,">>$file2write") || &error("Konnte $file2write nicht öffnen");
+ }
+}
+
+sub write_file_new { # Datei neu schreiben.
+ my $file2write = $_[0];
+ if (-e "$file2write") {
+ open (DATEI,">$file2write") || &error("Konnte $file2write nicht öffnen");
+ } else {
+ &create_file("$file2write");
+ open (DATEI,">$file2write") || &error("Konnte $file2write nicht öffnen");
+ }
+}
+
+sub create_file { # Datei erstellen.
+ my $file2create = $_[0];
+ open (CREATE, ">$file2create") || &error("Konnte $file2create nicht erstellen");
+ print CREATE "";
+ close CREATE;
+}
+
+sub error { # Error-Ausgabe.
+ my $error_msg = $_[0];
+ &start_html( "Error: ($error_msg)" );
+ print $q->div( "Error: ($error_msg)" ),
+ $q->end_html;
+ exit;
+}
+
+
+sub remove_online { # Chatter entfernen
+ my ($alias,$room,$method) = @_;
+ unlink("data/online/users/$alias");
+ unlink("data/online/rooms/$room/$alias") if ($room ne undef);
+ unlink("data/online/ident/$alias");
+ &rm_rooms;
+ &zeit;
+ if ($method eq undef) {
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias verläßt den Chat ...</font></i>");
+ } else {
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500> $_ hat den Chat verlassen ... </font></i>");
+ &log("system","\"logout_$__ok\"");
+ }
+}
+
+sub rm_rooms { # Leere Räume aus dem System entfernen
+ &list_dir("data/online/rooms");
+ foreach(@dir) {
+ if (-d "data/online/rooms/$_") {
+ &rm_alias("data/online/rooms/$_");
+ &list_dir("data/online/rooms/$_",2);
+ rmdir("data/online/rooms/$_") if ($#dir2 = 1);
+ }
+ }
+}
+
+sub secure_setip { # Beim einloggen die IP-Nummer in dat/ip eintragen.
+ my $alias2set = $_[0];
+ &write_file_new("data/online/ident/$alias2set");
+ print DATEI $ENV{'REMOTE_ADDR'};
+ close DATEI;
+}
+
+sub secure_removeip { # Beim ausloggen die IP-Nummer aus dat/ip austragen.
+ my $alias2rm = $_[0];
+ unlink("data/online/ident/$alias2rm");
+}
+
+sub secure_checkip { # data/ip auf die eigene IP-Nummer überprüfen.
+ my $alias2check = $_[0];
+ &read_file("data/online/ident/$alias2check");
+ my $ip2check = <DATEI>;
+ close DATEI;
+ if ($ip2check ne $ENV{'REMOTE_ADDR'}) {
+ &log("system","\"secure_ip\"");
+ &error("Du bist nicht befugt, mit der IP# $ENV{'REMOTE_ADDR'} und dem Alias \"$alias\" zu handeln. Sollte diese Meldung aufgrund eines Fehlers aufgetaucht sein, dann log Dich doch bitte neu in den Chat ein.");
+ exit;
+ }
+}
+
+sub remove_rooms { # Leere Räume entfernen.
+ &list_dir("data/online/rooms");
+ foreach(@dir) {
+ if (-d "data/online/rooms/$_") {
+ &list_dir("data/online/rooms/$_");
+ rmdir("data/online/rooms/$_") if ($#dir = 1);
+ }
+ }
+}
+
+sub list_dir { # Beliebigen Verzeichnisbaum einlesen.
+ my ($dir,$method) = @_;
+ opendir(DIR, $dir);
+ if ($method eq undef) {
+ @dir = readdir(DIR);
+ } elsif ($method = 2) {
+ @dir2 = readdir(DIR);
+ }
+ closedir(DIR);
+}
+
+sub hirachie { # Chatter nach Sonderrechte überprüfen.
+ my $alias2prove = $_[0];
+ $hirachie = "nc";
+ &read_file("data/wa");
+ @was = <DATEI>;
+ close DATEI;
+ foreach(@was) {
+ if ($_ eq $alias2prove || $_ eq "$alias2prove\n") {
+ $hirachie = "wa";
+ }
+ }
+ if ($hirachie ne "wa" || $_ eq "$alias2prove\n") {
+ &read_file("data/ow");
+ @ows = <DATEI>;
+ close DATEI;
+ foreach(@ows) {
+ if ($_ eq $alias2prove || $_ eq "$alias2prove\n") {
+ $hirachie = "ow";
+ }
+ }
+ }
+}
+
+
+
diff --git a/0.2.1/help_html b/0.2.1/help_html new file mode 100644 index 0000000..79b94fa --- /dev/null +++ b/0.2.1/help_html @@ -0,0 +1,616 @@ +<div> + Alle Chat-Befehle: +</div> +<hr> +<table width=100% bgcolor=555555> + <tr> + <th bgcolor=666666> + <div> + SU + </div> + </th> + <th bgcolor=666666> + <div> + Befehl + </div> + </th> + <th bgcolor=666666> + <div> + Beschreibung + </div> + </th> + </tr> + <tr> + <td> + <div> + NC + </div> + </td> + <td> + <div> +/about + </div> + </td> + <td> + <div> + Zeigt aktuelle Version und andere Infos der Community an + </div> + </td> + </tr> + <tr> + <td> + <div> + NC + </div> + </td> + <td> + <div> +/away + <font color=red> + Nachricht + </font> + </div> + </td> + <td> + <div> + Abmelden mit einer + <font color=red> + Abmeldenachricht + </font> + </div> + </td> + </tr> + <tr> + <td> + <div> + NC + </div> + </td> + <td> + <div> +/clear + </div> + </td> + <td> + <div> + Bildschirm wird gelöscht + </div> + </td> + </tr> + <tr> + <td> + <div> + NC + </div> + </td> + <td> + <div> +/col + <font color=red> + XXXXXX + </font> + <font color=ffa500> + XXXXXX + </font> + </div> + </td> + <td |
