From 630af0ed6c0af69c7df2e45aef7a87722a3c00c0 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Apr 2013 13:14:47 +0200 Subject: tagging ychat-perl-legacy --- 0.4.2/CREDITS.txt | 26 ++ 0.4.2/README.txt | 33 +++ 0.4.2/SETUP.txt | 102 +++++++ 0.4.2/TODO.txt | 24 ++ 0.4.2/UPDATES.txt | 119 ++++++++ 0.4.2/colors.sno | 290 ++++++++++++++++++++ 0.4.2/config.pm | 307 +++++++++++++++++++++ 0.4.2/help.sno | 55 ++++ 0.4.2/htdocs.pl | 244 +++++++++++++++++ 0.4.2/index.pl | 392 +++++++++++++++++++++++++++ 0.4.2/main.pl | 798 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 0.4.2/main2.pl | 568 ++++++++++++++++++++++++++++++++++++++ 0.4.2/online.pl | 72 +++++ 0.4.2/push.pl | 97 +++++++ 0.4.2/setup.sh | 42 +++ 0.4.2/y.gif | Bin 0 -> 5408 bytes 0.4.2/y_.gif | Bin 0 -> 1518 bytes 17 files changed, 3169 insertions(+) create mode 100644 0.4.2/CREDITS.txt create mode 100644 0.4.2/README.txt create mode 100644 0.4.2/SETUP.txt create mode 100644 0.4.2/TODO.txt create mode 100644 0.4.2/UPDATES.txt create mode 100644 0.4.2/colors.sno create mode 100644 0.4.2/config.pm create mode 100644 0.4.2/help.sno create mode 100644 0.4.2/htdocs.pl create mode 100644 0.4.2/index.pl create mode 100644 0.4.2/main.pl create mode 100644 0.4.2/main2.pl create mode 100644 0.4.2/online.pl create mode 100644 0.4.2/push.pl create mode 100644 0.4.2/setup.sh create mode 100644 0.4.2/y.gif create mode 100644 0.4.2/y_.gif (limited to '0.4.2') diff --git a/0.4.2/CREDITS.txt b/0.4.2/CREDITS.txt new file mode 100644 index 0000000..b1a6610 --- /dev/null +++ b/0.4.2/CREDITS.txt @@ -0,0 +1,26 @@ +############################## yChat.de SETUP ############################### +## Copyright by Paul C. Bütow aka Snooper 2000 (paul@buetow.oxg.de) ## +############################################################################# + +Vielen Dank an alle Personen, dir mit geholfen haben ( und immernoch helfen ) +yChat besser zu machen: + + - Andreas Buchwald aka Anklepper, für die Programmierung des + "Nach-UntenScroll-JavaScripts", des "Ferlaufform-JavaScripts" im + Texteingabeframe und für die technische Umsetzung, daß sich das + Inputframe bei jedem Textposting nicht wieder reloadet. + ( www.anklepper.de ). + + - Dave aka Truhe, für die Erstellung der Farbtabelle unter Chatoptionen inkl. + Auswähl-JavaScript! + ( maligree.yi.org ) + + - Michi aka Snoopy, für das Testen des Skripts auf seinem Server. + ( www.berlin-singeltreff.de ). + + - Florian B. aka RocketKid für designtechnische Anregungen. + ( www.Rocket-Kid.de und www.proa.de ) + + - Larry Wall, für die Erfindung von Perl ! + + - Stefan Münz, für die Erstellung von SelfHTML ! diff --git a/0.4.2/README.txt b/0.4.2/README.txt new file mode 100644 index 0000000..ce90571 --- /dev/null +++ b/0.4.2/README.txt @@ -0,0 +1,33 @@ +############################## yChat.de README ############################## +## Copyright by Paul C. Bütow aka Snooper 2000 (paul@buetow.oxg.de) ## +############################################################################# +Allgemeine Bedingungen bezgl. yChat: + + - Das yChat-System darf ohne Erleubnis des Autors nicht auf irgendeiner Art + und Weise weitergegeben- oder eingesetzt werden. + + - Wird das yChat-System eingesetzt, so darf es manipuliert werden, soweit + die Copyright-Hinweise des Autors, die Versionsbezeichnung und der Link + auf der Startseite nach servers.yChat.de unverändert bleibt. + Ansonsten darf der gesamte Code manipuliert werden. + + - Wird das yChat-System erlaubter Weise manipuliert, so muß das veränderte + Skript auf Anforderung an den Autor weitergegeben werden. Dieser darf + die Veränderungen in das Standard-yChat-System integrieren. + + - Wird das yChat-System eingesetzt, su muß dem Autor die Location bzw. die + URL bekanntgegeben werden. Diese wird in servers.yChat.de eingetragen. + und mit einer URL wwX.yChat.de verlinkt. Wobei X für die Nummer des jew. + Servers steht. + + - Es ist verboten, Sourcecode aus dem yChat-System zu kopieren und + für andere, nicht von yChat abhängige Perl-Programme einzusetzen. + +Im Flogenden einige yChat-bezügl. Verknüpfungen: + + www.servers.yChat.de => Liste aller laufenden yChat-Systeme + www.setup.yChat.de => Installationsdokumentation + www.readme.yChat.de => Allgemeine Bedingungen usw. + www.todo.yChat.de => Funktionen, die später integriert werden + www.updates.yChat.de => Update-Liste + www.yChat.de => Das Skript im Einsatz diff --git a/0.4.2/SETUP.txt b/0.4.2/SETUP.txt new file mode 100644 index 0000000..e6767e5 --- /dev/null +++ b/0.4.2/SETUP.txt @@ -0,0 +1,102 @@ +############################## yChat.de SETUP ############################### +## 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 :-) ... + +Die Installation kann auf Unix-Systemen voll automatisch duchgeführt werden. +Allerdings ist dafür ein Telnet-Zugang notwendig. Kopiere alle vorhandenen +Dateien in das Verzeichnis cgi-bin/yChat und führe dann das Shellskript +setup.sh mit dem Befehl ./setup.sh aus. Alle Verzeichnisse werden +automatisch erstellt. Dies wurde allerdings nur auf SuSE Linux Systemen +mit root-Zugriff getestet. Solltest Du ein anderes System verwenden oder +den Chat auf einen virtuellen Webserver installieren wollen, dann mußt Du +unter umständen das Verzeichnis "../../htdocs/yChat" nach "../../yChat" +in der setup.sh umbenennen. Ansonsten werden die dazugehörigen Grafikdateien +falsch oder garnicht kopiert. + +Wenn Du keinen Telnet-Zugang hast, kannst Du hier die Verzeichnisse manuell +erstellen: + +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 => Configurationsdatei ("Shared subs") +htdocs.pl => HTML-Dokumentdateien (Nicht unbedingt erforderlich) +index.pl => Startskript (Registrierung, Frameset, Login, Daten edit.) +main.pl => Hauptskript (Alle Hauptfunktionen des Chats) +main2.pl => Skript für editieren der Benutzerdaten etc. +online.pl => Anzeige und Überprüfung der eingelogten Benutzer +push.pl => Server-Push-Routine +setup.sh => Dient zur automatischen Einrichtung des Chats. +README.txt => Beinhaltet wichtige Informationen +UPDATES.txt => Updateliste der verschiedenen Versionen +CREDITS.txt => Personen, die geolfen haben yChat zu proggen. +SETUP.txt => Dieses Dokument +colors.txt => Datei beinhaltet alle Farben in hex. für die Chatoptionen +help.sno => Datei beinhaltet alle Chatbefehle + +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 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 wird abgespeichert, wie oft ein Benutzerprofil insgesant schon + aufgerufen wurde und wie lange die Chatter schon online waren: + ./cgi-bin/yChat/data/user/counts/* + +- Hier werden alle Memos abgespeichert. + ./cgi-bin/yChat/data/user/memos/* + +- 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 wird abgespeichert, wann der der jew. benutzer zum letzten mal das System + betreten hat. + ./cgi-bin/yChat/data/user/lastlogin/* + +- 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. Die + Verzeichnisse der Räume werden automatisch erstellt. + ./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 und TempIDs der eingelogten Chatter + ./cgi-bin/yChat/data/online/ident/* + +Alle Grafikdateien (+.gif und *.jpg) sollten in ein nicht-CGI-BIN-Verzeichnis kopiert +werden. Z.B. nach ./yChat/. + +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 ... \ No newline at end of file diff --git a/0.4.2/TODO.txt b/0.4.2/TODO.txt new file mode 100644 index 0000000..59d9e3e --- /dev/null +++ b/0.4.2/TODO.txt @@ -0,0 +1,24 @@ +Folgende Funktionen werden demnächst in yChat integriert: + + - Die Schlucht (Ein Raum wo Chatter hineingeworfen werden, + die sich nicht benehmen und noch nicht aus dem Chat + katapultiert werden sollen). + + - Löschung aller Chatter, die sich seit 60 Tagen nicht mehr + eingelogt haben. + + - IP-Adressen ver-/entbannen. + + - E-Mail zusendung bei verlorenem Passwort. + + - Eine Top 20 (Onlinezeit) der Chatter + + - Unter "Benutzer" sollen Chatter über eine Eingabemaske nach + dem Anfangsbuchstaben gesucht werden können (vergl. Kilahu). + + - Der Cybarkeeper (künstlich intilligenter Chatroboter, der + sich im Hauptraum Cyberbar aufhält, virtuelle Drinks verteilt + und von Real-Chattern übernommen werden kann. (Zukunftsmusik) + +Für weitere Vorschläge bitte in das yChat-Board unter www.yChat.de +texten oder eine E-Mail an paul@buetow.oxg.de :-) \ No newline at end of file diff --git a/0.4.2/UPDATES.txt b/0.4.2/UPDATES.txt new file mode 100644 index 0000000..9de123d --- /dev/null +++ b/0.4.2/UPDATES.txt @@ -0,0 +1,119 @@ +########################### yChat.de U PDATE LIST ########################### +## Copyright by Paul C. Bütow aka Snooper 2000 (paul@buetow.oxg.de) ## +############################################################################# +Hier sind alle Erneuerungen der Versionen dokumentiert: + +Update von 0.4.1 auf 0.4.2 (25.12.2k) + - Im Texteingabeformular werden nun per JavaScript die letzten 10 + Postings zwischengespeichert und können per Drop-Down-Menü + wieder in das Submittextfeld geladen werden um erneuert getextet + zu werden. + - Neues Design. + - Diverse Dateien wurden umbenannt: + INSTALL.txt -> SETUP.txt + LIESMICH.txt -> README.txt + - Die Datei CREDITS.txt wurde angelegt. + +Update von 0.4.0 auf 0.4.1 (22.12.2k) + - Design wurde geändert. + - Unter "Optionen" ist nun eine komplette Farbtabelle eingebaut. + - Folgende Oberwächterbefehle wurden nun auch für normale Wächter + freigegeben: /ip /ban /rban. + +Update von 0.2.6 auf 0.4.0 (19.12.2k) + - Der berüchtigte "IP-Bug" wurde beseitigt! Und zwar wurden TempIDs + eingeführt => Eine dauerhafte Überprüfung der Benutzer-IP-Nummer + ist also nicht mehr notwendig. + - Die totale Chat-Online-Zeit wird protokolliert und kann jew. mit + "/online Alias" aufgerufen werden. Die Onlinezeit wird alle 20 Sek. + aktualisiert. + - Neue Befehle: "/seen Alias" zeigt an, vor wieviel St. sich Alias + zuletzt in das System eingelogt hat. Der Befehle "/rmgb" entfernt + alle Einträge des eigenen Benutzergästebuchs im Profil. + +Update von 0.2.5 auf 0.2.6 (17.12.2k) + - Das Eingabeframe reloaded sich nicht mehr nach jedem Posting. + Vielen Dank an Truhe aka Dave und Klepper aka Andreas Buchwald! + Bei den Chatbefehlen /col /away /j und /ju muß sich das + Eingabeframe weiterhin reloaden. + - Der Befehl // wurde entfernt. Dieser war nicht mehr erforderlich. + weil Nachrichten werden nur noch sehr selten verschluckt. Dieser + Chatbefehl postete die letzte Nachricht nocheinmal. + - Neuer Befehl: mit "/memo Alias hier der Text" hinterläßt man + Alias eine Memo. Logt sich Alias in den Chat ein, dann erhält + er diese sofort. Dafür wurde das Verzeichnis ".data/user/memos/" + angelegt. + - Programmcode wurde ein wenig optimiert. + - Das Design wurde ein wenig geändert. + - Beseitigung diverser Bugs. + +Update von 0.2.4 auf 0.2.5 (15.12.2k) + - Derjenige, der einen Raum zuerst betritt, hat Raumbesetzerrechte. + - Raumbesetzer, Wächter und Oberwächte können weitere Raumbesetzer + bestimmen. Diese können Raumbeseter auch wieder degradieren. + - Raumbesetzer, Wächter und Oberwächter können dem aktuellen Raum + auf/absperren und Themen geben. Wächter und Oberwächter können + abgesperrte Räume betreten. + - Das Verzeichnis ".data/htdocs" wurde entfernt. Die Datei help_html + heist nun help.sno und befindet sich im yChat-Hauptverzeichnis. + - Das Verzeichnis ".data/user/lastlogin" wurde hinzugefügt. Hier + wird beim erfolgreichen Einloggen ein "Timestamp" gesetzt. Später + sollen Oberwächter "veraltete" Benutzer entfernen können. + - Neuer Oberwächterbefehl: "/kill Alias" entfernt Alias ganz und gar + vom System. Oberwächter und Wächter können nicht entfernt werden. + - Perl-Cache wurde im gesamten System komplett deaktiviert ( Weniger + Ladezeiten der HTML-Dokumente ). + - Nur Nachrichten aus dem Raum "Cyberbar" werden gelogt. + Selbsterstellte Räume werden nichtmehr gelogt. Viele Logfunktionen + wurden entfernt (weniger Serverbalast). + - Beseitigung einiger kleinen Bugs. + - Unter "Optionen" im Chat wir die Farbe nun mit einem Drop-Down-Menü + ausgewählt ( Vielen dank an Michi aka Snoopy ). + - Auf der Startseite wird nun angezeigt wieviele Benutzer eingelogt + sind. Ist keiner eingelogt, dann wird das System "aufgeräumt". D.h. + Dateien die nicht mehr gebraucht werden und noch nicht gelöscht + wurden werden entfernt ( z.B. Nachrichtendateien der einzelnen + Chatter und die Dateien die die IP-Nummern der eingelogten Benutzer + beinhalteten usw.). + - Hunzufügung einer TODO-Liste. Hier sind mehrere Funktionen + vermerkt, die in späteren yChat-Versionen eingebaut werden sollen. + (www.todo.yChat.de oder TODO.txt). + +Update von 0.2.3 auf 0.2.4 (30.11.2k) + - Optimierung bzw. Verbesserung der Push-Routine push.pl. + - Server-Ping wurde von 2-Pings-per-Minute auf 4 erhöht. + - yChat-Banner wurde erstellt und ist unter + documents.yChat.de/yBanner.jpg vorzufinden. + - Unter der URL servers.yChat.de wurde eine Serverliste angelegt, + welche anzeigt wo yChat-Systeme laufen. + - Des weiteren wurden die URLs updates.yChat.de, install.yChat.de + und liesmich.yChat.de eingerichtet. + - Die Menüpunkte wurden zusammengefaßt, damit sie unter einer + Auflösung von 800x600 nur eine Zeile belegen. + - Einige Bugs wurden entfernt. + +Update von 0.2.2 auf 0.2.3 (25.11.2k) + - Smooth scrolling JavaScript ( Vielen Dank an Andreas Buchwald ). + - "IP#-Fehler" wurde so gut wie beseitigt. + - Aufrufe der einzelnen Benutzerprofile wird gezählt und angezeigt. + Diese werden in data/user/counts/* gespeichert. + - Automatische Einrichtung des Chats mit setup.sh und Telnet. + - Menüpunkt "Dein Profil" wurde entfernt da eigenes Profil auch + stets über die Onlineliste aufgerufen werden kann. + +Update von 0.2.1 auf 0.2.2 (23.11.2k) + - Einige Bugs wurden entfernt. + - Geschwindigkeit des Chats wurde optimiert. + - Eine Liste aller eingelogten Benutzer erscheint am Rand. Hierfür + wurde die Datei online.pl eingeführt. Sie aktuallisiert sich alle + 20 Sekunden. + - Die UPDATES.txt wurde eingeführt. + +Update von 0.2.0 auf 0.2.1 + - Einige Bugs wurden entfernt. + - Die IP# der eingelogten Benutzer werden nun anders verwaltet. + +Update von Alpha XVIII auf 0.2.0 + - Die Handhabung der eingelogten Benutzer im System wurde komplett neu + überarbeitet. + - Neue Versionsnumern wurden eingeführt. \ No newline at end of file diff --git a/0.4.2/colors.sno b/0.4.2/colors.sno new file mode 100644 index 0000000..3640b9e --- /dev/null +++ b/0.4.2/colors.sno @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
0000000000330000660000990000CC0000FF
0033000033330033660033990033CC0033FF
0066000066330066660066990066CC0066FF
0099000099330099660099990099CC0099FF
00CC0000CC3300CC6600CC9900CCCC00CCFF
00FF0000FF3300FF6600FF9900FFCC00FFFF
3300003300333300663300993300CC3300FF
3333003333333333663333993333CC3333FF
3366003366333366663366993366CC3366FF
3399003399333399663399993399CC3399FF
33CC0033CC3333CC6633CC9933CCCC33CCFF
33FF0033FF3333FF6633FF9933FFCC33FFFF
6600006600336600666600996600CC6600FF
6633006633336633666633996633CC6633FF
6666006666336666666666996666CC6666FF
6699006699336699666699996699CC6699FF
66CC0066CC3366CC6666CC9966CCCC66CCFF
66FF0066FF3366FF6666FF9966FFCC66FFFF
9900009900339900669900999900CC9900FF
9933009933339933669933999933CC9933FF
9966009966339966669966999966CC9966FF
9999009999339999669999999999CC9999FF
99CC0099CC3399CC6699CC9999CCCC99CCFF
99FF0099FF3399FF6699FF9999FFCC99FFFF
CC0000CC0033CC0066CC0099CC00CCCC00FF
CC3300CC3333CC3366CC3399CC33CCCC33FF
CC6600CC6633CC6666CC6699CC66CCCC66FF
CC9900CC9933CC9966CC9999CC99CCCC99FF
CCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFF
FF0000FF0033FF0066FF0099FF00CCFF00FF
FF3300FF3333FF3366FF3399FF33CCFF33FF
FF6600FF6633FF6666FF6699FF66CCFF66FF
FF9900FF9933FF9966FF9999FF99CCFF99FF
FFCC00FFCC33FFCC66FFCC99FFCCCCFFCCFF
FFFF00FFFF33FFFF66FFFF99FFFFCCFFFFFF
\ No newline at end of file diff --git a/0.4.2/config.pm b/0.4.2/config.pm new file mode 100644 index 0000000..364ff59 --- /dev/null +++ b/0.4.2/config.pm @@ -0,0 +1,307 @@ +# yChat - Copyright by Paul C. Bütow + +########################### 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"); +$tmpid = $q->param("tmpid"); +$tmp = $q->param("tmp"); +$id = $q->param("id"); +$room = "Cyberbar" if ($room eq ""); +$col = "ffffef" if ($col eq ""); +$secol = "ffffef" if ($secol eq ""); +$datum = "25.12.2k"; +$version = "0.4.2"; +$title = "yChat.de ($version)"; +$gfxpath = "../../yChat/"; +$style = < + body { background-color: 005146 } + body.blank { background-color: 000000 } + body.online { background-color: 000000 } + body.log { background-color: 000000 } + div { font-family: arial, verdana, helvetiva; font-size: 9pt; color: ffffff } + div.b { font-weight: bold; color: ffa500 } + a { color: ffffef } + a:hover { color: ffffff; text-decoration: none } + +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); + } + &read_file($file2print); + @file2print = ; + close DATEI; + print @file2print; +} + + +sub start_html { # Der HEADER einer HTML-Datei +print ""; +print "" if ($_[1] eq "online"); +print < + $title - $_[0] + + $_[2] + $style + +END + if ($_[1] ne "") { + print ""; + } else { + print ""; + } +} + +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
\n"; + close DATEI; + } + } + } + &log("$msg2post") if ($room eq "Cyberbar"); +} + + +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
\n"; + close DATEI; + } + } + &log("$msg2post"); +} + +sub post_prv { # Private Nachricht posten (flüstern). + my $alias2post = $_[0]; + my $msg2post = $_[1]; + &write_file("data/msgs/$alias2post"); + print DATEI "$msg2post
\n"; + close DATEI; +} + +sub log { # Protokollieren der Nachrichten etc. + my ($msg2log) = @_; + &zeit; + &write_file("data/logs/$day.$month.$year"); + print DATEI "
($hours:$min:$sec) $msg2log\n"; + 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 = ; + 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"); + unlink("data/msgs/$alias"); + &rm_rooms; + &zeit; + if ($method eq undef) { + &post("($hours:$min:$sec) $alias verläßt den Chat ..."); + } elsif ($method ne "kick") { + &post("($hours:$min:$sec) $_ hat den Chat verlassen ... "); + } + &rm_rstat($room,$alias) if ($room ne undef); +} + +sub rm_alias { # Chatter aus dem System entfernen, dessen Timestamps älter als 60 Sekunden sind + my ($dir2rm,$rstatroom) = @_; + &list_dir($dir2rm,2); + foreach(@dir2) { + if (-f "$dir2rm/$_" && $_ ne undef) { + &read_file("$dir2rm/$_"); + my $timestamp = ; + close DATEI; + if ($timestamp < (time - 60)) { + if ($dir2rm eq "data/online/users") { + &remove_online($_,undef,1); + } else { + unlink("$dir2rm/$_"); + &rm_rstat($rstatroom,$_) if ($rstatroom ne undef); + } + } + } + } +} + +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); + if ($#dir2 = 1) { + rmdir("data/online/rooms/$_"); + } + } + } +} + +sub rm_rstat { # Benutzer als Raumbesetzer austragen + my ($rstatroom,$r_alias) = @_; + &read_file("data/online/rstat/$rstatroom"); + my @rstat = ; + close DATEI; + my $newfile = $rstat[0].$rstat[1]; + for ($i=2;$i<=$#rstat;$i++) { + $newfile = $newfile."\n".$rstat[$i] if ($rstat[$i] ne $r_alias."\n"); + } + write_file_new("data/online/rstat/$rstatroom"); + print DATEI $newfile; + close DATEI; +} + +sub secure_removeid { # Beim ausloggen die IP-Nummer aus dat/ip austragen. + my $alias2rm = $_[0]; + unlink("data/online/ident/$alias2rm"); +} + +sub secure_checkid { # TmpID überprüfen + my ($alias2check) = @_; + &read_file("data/online/ident/$alias2check"); + my @idfile = ; + close DATEI; + if ($idfile[1] ne $tmpid) { + &error("Falsche TempID ! Du bist nicht befugt zu handeln !"); + } +} + +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 = undef; + &read_file("data/wa"); + @was = ; + close DATEI; + foreach(@was) { + if ($_ eq $alias2prove || $_ eq "$alias2prove\n") { + $hirachie = "wa"; + } + } + &read_file("data/ow"); + @ows = ; + close DATEI; + if ($hirachie ne "wa" || $_ eq "$alias2prove\n") { + foreach(@ows) { + if ($_ eq $alias2prove || $_ eq "$alias2prove\n") { + $hirachie = "ow"; + } + } + } +} + +$| = 1; # Cache von Perl ausschalten \ No newline at end of file diff --git a/0.4.2/help.sno b/0.4.2/help.sno new file mode 100644 index 0000000..5779354 --- /dev/null +++ b/0.4.2/help.sno @@ -0,0 +1,55 @@ +
+ Alle Chat-Befehle: +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SU
Befehl
Beschreibung
NC
/about
Zeigt aktuelle Version und andere Infos der Community an
NC
/away Nachricht
Abmelden mit einerAbmeldenachricht
NC
/clear
Bildschirm wird gelöscht
NC
/col XXXXXX XXXXXX
Farbe/n (Namensfarbe / Textfarbe) wechseln. Angabe in Hexadezimal.
NC
/date
Zeigt aktuelles Datum und Urzeit an
NC
/j Raumname
Raum wechseln/erstellen
NC
/ju Alias
In den Raum wechseln/folgen, wo sich Alias befindet.
NC
/m Aktion
Handeln mit 2 Farben
NC
/me Aktion
Handeln mit einer Farbe
NC
/msg Alias Nachricht
Alias eine private Nachricht flüstern.
NC
/ Nachricht
Eine private Nachricht demjenigen flüstern, dem zuletzt eine geflüstert wurde
NC
/q
Cumunnity verlassen
NC
/rmgb
Das eigene Gästebuch komplett weglöschen
NC
/s Nachricht
Nachricht schreien
NC
/seen Alias
Zeigt an, vor wieviel Stunden sich Nachricht zum letzten Mal in das System eingelogt hat
NC
/w
Zeigt an, wer sich im aktuellen Raum befindet
NC
/wc Raum
Zeigt an, wer sich im Raum befindet. Wird kein Raum angegeben, dann wird jedeglich angezeigt, wer sich im System befindet
NC
/wc/
Zeigt alle offenen Räume und deren Chatter an
NC
/wj Alias
Zeigt an, in welchen Raum sich Alias befindet
RB
/l
Der aktuelle Raum wird ab- bzw. aufgesperrt
RB
/rsu Alias
Alias die Raumbesetzerrechte entnehmen
RB
/su Alias
Alias zum Raumbesetzer ernennen
RB
/t Thema
Dem aktuellen Raum wird ein Thema gegeben
/ban
Zeigt alle verbannten Benutzer an
/ban Alias
Alias verbannen
/rban Alias
Alias "entbannen"
/ip Alias
Zeigt die IP-Nummer von Alias an
/k Alias
Alias wird aus dem Chat katapultiert!
OW
/kill Alias
Alias wird ganz und gar aus dem System entfernt
OW
/wa Alias
Alias zum Wächter ernennen
OW
/rwa Alias
Alias vom Wächter zum normalen Chatter degradieren
OW
/sys Nachricht
Systemnachricht schreiben. (Erscheint in allen existierenden Räumen)

+
+ Zur Erklärung: NC steht für "Normale Chatter", RB für "Raumbesetzer", WÄ für "Wächter" und OW für "Oberwächter". + Obrige Befehle können nur von der/den jeweiligen Benutzergruppe/n werden.

+ Allerdings gibt es folgendes zu beachten: Oberwächter verfügen über alle Chatbefehle. Normale Wächter über alle Chatbefehle, außer über die der Oberwächter. + Raumbesetzer können nur Raumbesetzerbefehle und die Befehle der normalen Chatter durchführen. Normale Chatter haben jedeglich die Standardbefehle zu verwenden.

+ Weitere Besonderheiten der Wächter und Oberwächter:

+ Wächter und Oberwächter können ....
+ ... abgesperrte Chaträume problemlos betreten.
+ ... nicht gekickt, verbannt oder gekillt werden.
+ ... Logdateien der Cyberbar lesen.

+ + Des weiteren: Oberwächter ernennt nur der Systemadministrator! +
+ + \ No newline at end of file diff --git a/0.4.2/htdocs.pl b/0.4.2/htdocs.pl new file mode 100644 index 0000000..bb70682 --- /dev/null +++ b/0.4.2/htdocs.pl @@ -0,0 +1,244 @@ +#!/usr/bin/perl -w + +# yChat - Copyright by Paul C. Bütow + +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("help.sno","Alle Chatbefehle"); +} elsif ($var eq "logo_html") { + &start_html("Logo"); + print "
", + "
"; + $q->end_html; +} elsif ($var eq "menu_html") { + &menu_html; +} elsif ($var eq "menu2_html") { + &menu2_html; +} elsif ($var eq "werda_html") { + &werda_html; +} elsif ($var eq "logs_html") { + &secure_checkid($alias); + &logs_html; +} elsif ($var eq "view_logs_html") { + &secure_checkid($alias); + &hirachie($alias); + if ($hirachie eq "ow" || $hirachie eq "wa") { + &printfile($tmp,"blank" ,"log"); + } +} elsif ($var eq "superuser_html") { + &secure_checkid($alias); + &superuser_html; +} else { + print + $q->start_html(-bgcolor=>"000000"), + $q->end_html; +} + +sub menu_html { +if ($tmp eq "quit") { + &start_html("Quit","blank",""); + print $q->end_html; + sleep 2; + &remove_online($alias,$room); + &secure_removeid($alias); + exit; +} +ENDJS + &start_html("Menü","blank"); +print < +function fenster(fenster,target) { + open(fenster,target,"width=500,height=500,screenX=100,screenY=100,scrollbars"); +} + + + Wer ist da? + Profil ändern + Chatoptionen + Benutzerliste + Chatbefehle
+ Benutzerboard + Superuser + Logdateien + Updates + Credits + Verlassen +
+ + +END +} + +sub menu2_html { +$JavaScript = < + Normal1 = new Image(); + Normal1.src = "$gfxpath/_updates.gif"; + Highlight1 = new Image(); + Highlight1.src = "$gfxpath/_updates_.gif"; + Normal2 = new Image(); + Normal2.src = "$gfxpath/_credits.gif"; + Highlight2 = new Image(); + Highlight2.src = "$gfxpath/_credits_.gif"; + Normal3 = new Image(); + Normal3.src = "$gfxpath/_readme.gif"; + Highlight3 = new Image(); + Highlight3.src = "$gfxpath/_readme_.gif"; + Normal4 = new Image(); + Normal4.src = "$gfxpath/_todo.gif"; + Highlight4 = new Image(); + Highlight4.src = "$gfxpath/_todo_.gif"; + +function Bildwechsel(Bildnr,Bildobjekt) { + window.document.images[Bildnr].src = Bildobjekt.src; +} + +ENDJS + &start_html("Menü2","blank"); +print < + + + + + +END +} + + +sub werda_html { # Anzeige, wer eingelogt ist. + &start_html("Wer ist da?"); + print < + $alias, schön daß Du hier bist :-) + +
+
+ Folgende Personen befinden sich im Chat: +
+
+
+END + &list_dir("data/online/rooms"); + foreach(@dir) { + if (-e "data/online/rooms/$_" && $_ ne ".." && $_ ne ".") { + my $room = $_; + &read_file("data/online/rstat/$room"); + my @rstat = ; + close DATEI; + my $door = "[Abgesperrt!]" if ($rstat[0] eq "1\n"); + &list_dir("data/online/rooms/$room",2); + local $nr = $#dir2-1; + print $q->b( $_ ), + " $door ($nr) Raumthema: $rstat[1]", + $q->br; + foreach(@dir2) { + if ($_ ne ".." && $_ ne ".") { + print + $q->a( { -href=>"main2.pl?var=alias_html&alias=$alias&tmp=$_&tmpid=$tmpid" }, "$_"), " "; + } + } + print $q->br, $q->br; + } + } + print + "
", + $q->end_html; +} + +sub logs_html { + &start_html("Logdateien"); + print < + Hier befinden sich alle Logdateien + +
+END + &hirachie($alias); + if ($hirachie eq "ow" || $hirachie eq "wa") { + print $q->div( "Folgende Logdateien des Raumes \"Cyberbar\" 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/$_&tmpid=$tmpid", + -target=>"_new" }, + "$_" ), + " "; + } + } + } 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." ), + $q->hr; + &printfile("data/htdocs/logs_html"); + } + print + $q->end_html; +} + +sub superuser_html { # Zeigt an, wer Superuser ist + &start_html("Superuser"); + print "
Hallo $alias. Du bist als "; + &hirachie($alias); + if ($hirachie eq "ow") { + print + $q->b( "Oberwächter" ), + " (OW) eingetragen.
", + $q->hr; + } elsif ( $hirachie eq "wa") { + print + $q->b( "Wächter" ), + " (WÄ) eingetragen.", + $q->hr; + } else { + print + $q->b( "normaler Chatter" ), + " (NC) eingetragen.", + $q->hr; + } + + my $nrow = $#ows+1; + print + "
", + $q->b( "OW" ), + "s ($nrow Stück)"; + foreach(@ows) { + print + $q->font( { -color=>"FFA500" }, + " ".$_); + } + my $nrwa = $#was+1; + print + "
", + $q->hr, + "
", + $q->b( "WÄ" ), + "s ($nrwa Stück)"; + foreach(@was) { + print + $q->font( { -color=>"FFA500" }, + " ".$_); + } +print < + Die jeweiligen Fähigkeiten der Oberwächter (OW) und der Wächter (WÄ) sind unter + "Chat-Befehle" + dokumentiert. +
+ + +END +} \ No newline at end of file diff --git a/0.4.2/index.pl b/0.4.2/index.pl new file mode 100644 index 0000000..423749c --- /dev/null +++ b/0.4.2/index.pl @@ -0,0 +1,392 @@ +#!/usr/bin/perl -w + +# yChat - Copyright by Paul C. Bütow + +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 = ; +close DATEI; +$counter++; +&write_file_new("data/count"); + print DATEI $