summaryrefslogtreecommitdiff
path: root/0.8.1
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:47 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:47 +0200
commit630af0ed6c0af69c7df2e45aef7a87722a3c00c0 (patch)
treead76f850278b090f7e5c26561035d19c320400cc /0.8.1
parent2860b03f00e48264ed15c132ad90b240ebe6070b (diff)
tagging ychat-perl-legacyychat-perl-legacy
Diffstat (limited to '0.8.1')
-rwxr-xr-x0.8.1/config.pm43
-rwxr-xr-x0.8.1/data/hierachie12
-rwxr-xr-x0.8.1/modules/changeroom.pm67
-rwxr-xr-x0.8.1/modules/commands.pm867
-rwxr-xr-x0.8.1/modules/divcom.pm288
-rwxr-xr-x0.8.1/modules/hierachie.pm77
-rwxr-xr-x0.8.1/modules/htdocs.pm127
-rwxr-xr-x0.8.1/modules/input.pm14
-rwxr-xr-x0.8.1/modules/loggedin.pm41
-rw-r--r--0.8.1/modules/nohup.out2
-rwxr-xr-x0.8.1/modules/online.pm167
-rwxr-xr-x0.8.1/modules/postmessage.pm90
-rwxr-xr-x0.8.1/modules/shared.pm353
-rwxr-xr-x0.8.1/modules/start.pm264
-rwxr-xr-x0.8.1/modules/statistic.pm148
-rwxr-xr-x0.8.1/modules/stream.pm170
-rwxr-xr-x0.8.1/modules/webchat.pm22
-rwxr-xr-x0.8.1/modules/ychatd.pl94
-rwxr-xr-x0.8.1/setup.sh19
-rwxr-xr-x0.8.1/templates/chatiq.sno1
-rwxr-xr-x0.8.1/templates/colors.sno290
-rwxr-xr-x0.8.1/templates/help.sno79
-rwxr-xr-x0.8.1/ychatd.pl94
23 files changed, 3329 insertions, 0 deletions
diff --git a/0.8.1/config.pm b/0.8.1/config.pm
new file mode 100755
index 0000000..3b3007f
--- /dev/null
+++ b/0.8.1/config.pm
@@ -0,0 +1,43 @@
+# yChat - Copyright by Paul C. Bütow
+########################### Dieser Teil bestimmt die Standart-Variabeln.
+##STANDART-CONFIGURATION:## (CSS, Farben, Version etc.)
+###########################
+$limit = 50; # Benutzerlimit
+$datum = "19.02.03"; # Datum der letzten Änderung (ändern erwünscht)
+$version = "0.8.1"; # Bitte Hauptversionsnummer nicht ändern
+$title = "yChat [$version]"; # Erscheint in der Browser-Leiste oben
+$standardroom = "Cyberbar"; # Standardchatraum
+$loginplace = "Lounge"; # Bezeichnung der Startseite nach dem Login
+$localhost = "62.75.136.147";# Host oder IP# des Chat-Servers
+$localport = 2000; # Port über den fer Chat-Server läuft
+$gfxpath = "http://$localhost/yChat"; # URL der Binärdaten (Grafiken etc.)
+$bgcolor = "#3E535B"; # Hintergrundfarbe der HTML-Seiten
+$chatbg = "#000000"; # Hintergrundfarbe des Chat-Frames
+$cryptkey = "ka:jASD73jnS"; # Hiermit wetden die PW's verschlüsselt.
+
+# PS: Um einen Chat-Administrator anzulegen, dann die Datei data/hierachie
+# anlegen, in eine Zeile muß folgendes eingetragen werden: "Nickname<;7"
+# (Natürlich ohne Anführungsstriche) Nickname ist somit Chat-Administrator
+# und kann Oberwächter und Wächter bestimmen!
+
+sub style {
+print <<ENDCSS;
+<style type="text/css">
+ body { background-color: $bgcolor }
+ body.blank { background-color: $chatbg }
+ body.online { background-color: $chatbg }
+ div { font-family: arial, geneva, verdana, helvetiva; font-size: 12px; color: #ffffff }
+ div.b { font-weight: bold; color: #ffa500 }
+ a { color: #ffffef; }
+ a:hover { color: #ffffff; }
+ p { font-family:verdana, arial, geneva, helvetica, sans-serif; color:#FFFFFF; font-size:12px; }
+</style>
+<style type="text/css" media="all">
+ a { text-decoration: none; }
+ a:hover { text-decoration:underline; }
+ input { border:2px solid #000000; font-size:12px; color:#000000; background-color: #ffffff; height:23px; padding:2px;}
+ select { border:2px solid #000000; font-family:arial, verdana, helvetica; font-size:11px; color:#000000; height:21px; padding:2px;}
+</style>
+ENDCSS
+}
+1;
diff --git a/0.8.1/data/hierachie b/0.8.1/data/hierachie
new file mode 100755
index 0000000..8f5f747
--- /dev/null
+++ b/0.8.1/data/hierachie
@@ -0,0 +1,12 @@
+red_pepper<;2
+Snoop<;3
+Lantara<;8
+SMX<;5
+bilke<;6
+Stoffel<;6
+Romeo3008<;5
+Chatter<;5
+Cozmo<;7
+Snooper<;9
+Tekkie<;7
+Peacemaker<;7
diff --git a/0.8.1/modules/changeroom.pm b/0.8.1/modules/changeroom.pm
new file mode 100755
index 0000000..4a5e787
--- /dev/null
+++ b/0.8.1/modules/changeroom.pm
@@ -0,0 +1,67 @@
+sub change_room {
+ my($method, $newroom, $oldroom, $alias2) = @_;
+ if ($newroom eq $oldroom) {
+ &post_prv($alias, "<font color='ffffff'>Du befindest dich bereits im Raum <font color='ffa500'>$newroom</font>!</font>");
+ &reload_html;
+ }
+ elsif ($newroom eq $loginplace) {
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias</font> verl&auml;sst den Chat und geht in die <b>$loginplace</b> ... </font></i>", $alias);
+ &post_strmsg($alias, $room, 'quit');
+ unlink "data/online/rooms/$room/$alias";
+ &rm_rstat($alias, $room);
+ &check_online;
+ &reload_html;
+ }
+ open RSTAT, "<data/online/rstat/$newroom";
+ my(@rstat) = <RSTAT>;
+ close RSTAT;
+ if ($rstat[0] eq "1\n") {
+ if (3 <= &hierachie($alias)) {
+ &post_prv($alias, "<font color='ffffff'>Der Raum <font color='ffa500'>$newroom</font> ist leider abgesperrt!</font>");
+ &reload_html;
+ }
+ }
+ &private_javascript($alias, $room, "parent.input.document.inf.room.value = '$newroom';open('chat?request=online&room=$newroom&alias=$alias&tmpid=$tmpid','online');");
+ open MSGFILE, ">>data/msgs/$newroom";
+ print MSGFILE "$alias<;" . time . "<;!<;!<;<;\n";
+ close MSGFILE;
+ open MSGFILE, ">>data/msgs/$room";
+ if ($method eq 'j') {
+ print MSGFILE "$alias<;" . time . q[<;!<;!<;<i><font color='ffffff'>] . &timestring . " Du wechselst aus dem Raum <b>$oldroom</b> herein nach <b>$newroom</b> ...</font></i><br><;\n";
+ }
+ elsif ($method eq 'ju') {
+ print MSGFILE "$alias<;" . time . q[<;!<;!<;<i><font color='ffffff'>] . &timestring . " Du folgst <font color='".&get_ident($alias2,3)."'>$alias2</font> aus dem Raum <b>$oldroom</b> herein nach <b>$newroom</b> ...</font></i><br><;\n";
+ }
+ elsif ($method eq 'sep') {
+ print MSGFILE "$alias<;" . time . q[<;!<;!<;<i><font color='ffffff'>] . &timestring . " Du wechselst aus dem Raum <b>$oldroom</b> herein nach <b>$newroom</b> und sperrst ab...</font></i><br><;\n";
+ }
+ close MSGFILE;
+ &post_strmsg($alias, $room, 'cr', $newroom);
+ $room = $oldroom;
+ my $tmpstamp = time;
+ if ($method eq 'j') {
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias</font> wechselt in den Raum <b>$newroom</b> ...</font></i>", $alias);
+ $room = $newroom;
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias</font> kommt aus dem Raum <b>$oldroom</b> herein nach <b>$newroom</b> ...</font></i>", $alias);
+ }
+ elsif ($method eq 'ju') {
+ my $col2 = &get_ident($alias2,3);
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias</font> folgt <font color='$col2'>$alias2</font> in den Raum <b>$newroom</b> ...</font></i>", $alias);
+ $room = $newroom;
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias</font> kommt aus dem Raum <b>$oldroom</b> und folgt <font color='$col2'>$alias2</font> herein nach <b>$newroom</b> ...</font></i>", $alias);
+ }
+ elsif ($method eq 'sep') {
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias</font> wechselt in den Raum <b>$newroom</b> und sperrt ab...</font></i>", $alias);
+ $room = $newroom;
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias</font> kommt aus dem Raum <b>$oldroom</b> herein nach <b>$newroom</b> und sperrt ab...</font></i>", $alias);
+ }
+ elsif ($method eq 'beam') {
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias2</font> beamt <b>$alias</b> in den Raum <b>$newroom</b>...</font></i>", $alias2);
+ $room = $newroom;
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias2</font> beamt <b>$alias</b> aus dem Raum <b>$oldroom</b> herein nach <b>$room</b>...</font></i>", $alias2);
+ }
+ unlink "data/online/rooms/$oldroom/$alias";
+ &rm_rstat($alias, $oldroom);
+ &check_online;
+}
+1;
diff --git a/0.8.1/modules/commands.pm b/0.8.1/modules/commands.pm
new file mode 100755
index 0000000..8d6211b
--- /dev/null
+++ b/0.8.1/modules/commands.pm
@@ -0,0 +1,867 @@
+sub command {
+ $_[0] = $_[0] . ' ';
+ $_[0] = substr($_[0], 1, length($_[0]) - 1);
+ my(@cmd) = split(/ /, $_[0], 0);
+ my $cmd = substr($_[0], 0, index($_[0], ' '));
+ my $tmp = $_[1];
+ sub lock {
+ my $method = shift @_;
+ open RSTAT, "data/online/rstat/$room";
+ my(@r_stat) = <RSTAT>;
+ close RSTAT;
+ my $lock = "0\n";
+ if ($room eq $standardroom) {
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> sperrt den Raum ohne Erfolg ab ...</font></i>", $alias);
+ }
+ else {
+ if ($r_stat[0] == 0) {
+ $lock = "1\n";
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> sperrt den Raum ab ...</font></i>", $alias) if $method ne 'separee';
+ }
+ else {
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> sperrt den Raum auf ...</font></i>", $alias) if $method ne 'separee';
+ }
+ for ($i = 1; $i <= $#r_stat; ++$i) {
+ $lock = $lock . $r_stat[$i];
+ }
+ open RSTAT, ">data/online/rstat/$room";
+ print RSTAT $lock;
+ close RSTAT;
+ }
+ &reload_html;
+ }
+ if ($cmd eq 'about') {
+ &post_prv($alias, "<font color=ffffff>Aktuelle Version ist $title und wurde am $datum aktuallisiert. Programmiert von Paul C. B\374tow (2000 - 2002).</font>");
+ &reload_html;
+ }
+ elsif ($cmd eq 'away') {
+ for ($i = 1; $i <= $#cmd; ++$i) {
+ $away_msg = $away_msg . ' ' . $cmd[$i];
+ }
+ my $room = &get_room($alias);
+ if ($tmp eq 'autoaway') {
+ $away_msg = "$alias wurde vom System agbemeldet ...";
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='ffa500'><b>Das System</b></font> meldet <font color='".&get_ident($alias,3)."'>$alias</font> wegen Inaktivit&auml;t ab ...</i></font>", $alias);
+ }
+ else {
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> meldet sich ab (<font color='$col'>$away_msg</font> ) ...</i></font>", $alias);
+ }
+ open AWAY, ">>data/online/rstat/$room.away";
+ print AWAY "$alias<;$away_msg\n";
+ close AWAY;
+ &private_javascript($alias, $room, q[parent.input.document.inf.tmp.value = 'away'; parent.online.location.reload();]);
+ &reload_html;
+ }
+ elsif ($cmd eq 'clear') {
+ &post_prv($alias, "<script language='JavaScript'>window.open('chat?request=stream&alias=$alias&room=$room&col=$col&secol=$secol&tmp=login&tmpid=$tmpid&maxVerlauf=$maxVerlauf&verlaufOrder=$verlaufOrder','main');</script>");
+ &reload_html;
+ }
+ elsif ($cmd eq 'col') {
+ my $col, $secol;
+ if ($cmd[1] ne undef) {
+ $col = $cmd[1];
+ &prove_color($alias, $col);
+ my $tmpsecol = $cmd[2];
+ my $length = length $tmpsecol;
+ if ($tmpsecol eq '' or $length < 6 or $length > 6) {
+ $secol = $col;
+ }
+ else {
+ $secol = $tmpsecol;
+ }
+ }
+ else {
+ $col = &random_color;
+ $secol = &random_color;
+ }
+ open OPTIONS, "<data/user/options/$alias";
+ my(@options) = <OPTIONS>;
+ close OPTIONS;
+ open OPTIONS, ">data/user/options/$alias";
+ print OPTIONS $options[0] . $col . "\n" . $secol;
+ close OPTIONS;
+ open IDENT, "<data/online/ident/$alias";
+ my(@ident) = <IDENT>;
+ close IDENT;
+ open IDENT, ">data/online/ident/$alias";
+ print IDENT $ident[0] . $ident[1] . $ident[2] . "$col\n$secol";
+ close IDENT;
+ &post($room, '<i><font color=ffffff>' . &timestring . "</font> <font color=$col>$alias</font> <font color=$secol> hat die Farbe gewechselt...</font></i>", $alias);
+ &private_javascript($alias, $room, "parent.input.document.inf.col.value = '$col'; parent.input.document.inf.secol.value = '$secol';");
+ &post_strmsg($alias, $room, 'col', "$col;$secol");
+ &reload_html;
+ }
+ elsif ($cmd eq 'date') {
+ my($secs, $mins, $hours, $days, $months, $years) = &timearray;
+ &post_prv($alias, "<font color=ffffff>Heute ist der $days.$months. Jahr $years. Es ist genau $hours:$mins Uhr und $secs Sekunden.</font>");
+ &reload_html;
+ }
+ elsif ($cmd eq 'exit') {
+ my $room = &get_room($alias);
+ if ($tmp eq 'autologout') {
+ &private_javascript($alias, $room, q[open('chat?request=start&tmp=autologout','_top');]);
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='ffa500'><b>Das System</b></font> loggt <font color='".&get_ident($alias,3)."'>$alias</font> wegen Inaktivit&auml;t aus ... </font></i>", $alias);
+ }
+ else {
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> loggt sich ganz aus ... </font></i>", $alias);
+ &private_javascript($alias, $room, q[open('chat?request=start&tmp=quit','_top');]);
+ }
+ &rm_alias($alias, $room);
+ &rm_away($alias, $room);
+ &reload_html;
+ }
+ elsif ($cmd eq 'getcol') {
+ my $cols2show = $cmd[1];
+ if (-f "data/user/options/$cols2show") {
+ open FILE, "<data/user/options/$cols2show";
+ my(@file) = <FILE>;
+ close FILE;
+ chomp $file[1];
+ chomp $file[2];
+ &post_prv($alias, "<font color='ffa500'>$cols2show <font color='ffffff'> verwendet als 1. Farbe <font color='$file[1]'>$file[1]</font> und als 2. Farbe <font color='$file[2]'>$file[2]</font> !</font></font>");
+ &reload_html;
+ }
+ &post_prv($alias, "<font color='ffa500'>$cols2show <font color='ffffff'> existiert nicht in der Benutzerdatenbank!</font></font>");
+ &reload_html;
+ }
+ elsif ($cmd eq 'hits' or $cmd eq 'uptime') {
+ &post_prv($alias, "<font color=ffffff>Uptime: $startime " . &calculate_uptime_hours($STARTIME) . "h; $HITS Hits; " . &calculate_hpm($HITS, $STARTIME) . ' Hits pro Minute</font>');
+ &reload_html;
+ }
+ elsif ($cmd eq 'ig') {
+ my $alias2ignore = $cmd[1];
+ if ($alias2ignore) {
+ if (-f "data/user/options/$alias2ignore") {
+ if (3 <= &hierachie($alias2ignore)) {
+ &post_prv($alias, "<font color='ffa500'>$alias2ignore</font> <font color='ffffff'> kann nicht ignoriert werden!</font>");
+ }
+ else {
+ &post_strmsg($alias, $room, 'ig', $alias2ignore);
+ }
+ }
+ else {
+ &post_prv($alias, "<font color='ffa500'>$alias2ignore</font> <font color='ffffff'>existiert nicht in der Datenbank!</font>");
+ }
+ }
+ else {
+ &post_strmsg($alias, $room, 'igl');
+ }
+ &reload_html;
+ }
+ elsif ($cmd eq 'j' or $cmd eq 'sep') {
+ if ($cmd[1] =~ /\W/ or $cmd[1] eq '') {
+ &post_prv($alias, "<font color=ffffff>Der Raum <font color=ffa500>$cmd[1]</font> enth\344lt illegale Zeichen!</font>");
+ &reload_html;
+ }
+ else {
+ if ($cmd eq 'j') {
+ &change_room('j', $cmd[1], $room);
+ &reload_html;
+ }
+ else {
+ if ($cmd[1] eq $standardroom) {
+ &post_prv($alias, "<font color=ffffff>Der Raum <font color=ffa500>$cmd[1]</font> ist ein Standardraum und kann nicht als Separee er&ouml;ffnet werden!</font>");
+ }
+ else {
+ &change_room('sep', $cmd[1], $room);
+ &lock('separee');
+ }
+ &reload_html;
+ }
+ }
+ }
+ elsif ($cmd eq 'me' or $cmd eq 'm') {
+ my $me_msg;
+ for ($i = 1; $i <= $#cmd; ++$i) {
+ $me_msg = $me_msg . ' ' . $cmd[$i];
+ }
+ $me_msg =~ s[/me/][<i>$alias</i>]g;
+ $me_msg =~ s[/m/][<i><font color=$col>$alias</font></i>]g;
+ if ($cmd eq 'm') {
+ &post($room, "<b><font color=$col><i>$alias</i> <font color=$secol>$me_msg</font></font></b>", $alias);
+ }
+ else {
+ &post($room, "<b><font color=$col><i>$alias</i> $me_msg</font></b>", $alias);
+ }
+ &reload_html;
+ }
+ elsif ($cmd eq 'memo') {
+ my $alias2memo = $cmd[1];
+ my($secs, $mins, $hours, $days, $months, $years) = &timearray;
+ if (-f "data/user/options/$alias2memo") {
+ my $memo_msg;
+ for ($i = 2; $i <= $#cmd; ++$i) {
+ $memo_msg = $memo_msg . ' ' . $cmd[$i];
+ }
+ &post_prv($alias, "<font color=ffa500>$alias2memo <font color=ffffff>wurde folgende memo erfolgreich hinterlassen: $memo_msg</font></font>");
+ open MEMO, ">>data/user/memos/$alias2memo";
+ print MEMO "<font color=ffffff>($days.$months.$years - $hours:$mins:$secs) <font color=$col>$alias</font> hat Dir eine Memo hinterlassen: <font color=ffa500>$memo_msg</font></font><br>\n";
+ close MEMO;
+ &reload_html;
+ }
+ &post_prv($alias, "<font color=ffa500>$alias2memo <font color=ffffff>existiert in der Datenbank nicht !</font></font>");
+ &reload_html;
+ }
+ elsif ($cmd eq 'menu') {
+ &private_javascript($alias, $room, "window.open('chat?request=htdocs&alias=$alias&var=menu_html&room=$standardroom&col=$col&secol=$secol&tmpid=$tmpid','_new','width=500,height=500,screenX=100,screenY=100,scrollbars');");
+ &reload_html;
+ }
+ elsif ($cmd eq 'online') {
+ my $alias2prove = $cmd[1];
+ my $totaltime = &get_online_time($alias2prove);
+ if ($totaltime ne false) {
+ &post_prv("$alias", "<font color=ffa500>$alias2prove <font color=ffffff>war insgesamt schon $totaltime Stunden online!</font></font>");
+ }
+ else {
+ &post_prv("$alias", "<font color=ffa500>$alias2prove <font color=ffffff>existiert nicht in der Benutzerdatenbank!</font></font>");
+ }
+ &reload_html;
+ }
+ elsif ($cmd eq 'q') {
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> verl&auml;sst den Chat ... </font></i>", $alias);
+ &post_strmsg($alias, $room, 'quit');
+ unlink "data/online/rooms/$room/$alias";
+ &rm_rstat($alias, $room);
+ &rm_away($alias, $room);
+ &check_online;
+ &reload_html;
+ }
+ elsif ($cmd eq 'rmgb') {
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> l\366scht das eigene G\344stebuch ...</font></i>", $alias);
+ unlink "data/user/gbooks/$alias";
+ &reload_html;
+ }
+ elsif ($cmd eq 's') {
+ my $msg2scream;
+ for ($i = 1; $i <= $#cmd; ++$i) {
+ $msg2scream = $msg2scream . ' ' . $cmd[$i];
+ }
+ $msg2scream =~ s/\344/\304/g;
+ $msg2scream =~ s/\366/\326/g;
+ $msg2scream =~ s/\374/\334/g;
+ $msg2scream = "\U$msg2scream\E";
+ &post($room, "<b><font color=$col><i>$alias schreit:</i> <font color=$secol>$msg2scream</font></font></b>", $alias);
+ &reload_html;
+ }
+ elsif ($cmd eq 'seen') {
+ my $alias2prove = $cmd[1];
+ if (-f "data/user/options/$alias2prove") {
+ if (-f "data/user/lastlogin/$alias2prove") {
+ open LASTLOGIN, "<data/user/lastlogin/$alias2prove";
+ my $lastlogin = <LASTLOGIN>;
+ close LASTLOGIN;
+ my $timestamp = sprintf('%.2f', (time - $lastlogin) / 3600);
+ &post_prv("$alias", "<font color='ffa500'>$alias2prove <font color=ffffff> hat sich vor $timestamp Stunden zuletzt in das System eingeloggt!</font></font>");
+ }
+ else {
+ &post_prv("$alias", "<font color='ffa500'>$alias2prove <font color=ffffff> hat sich seit der Einf\374hrung dieses Befehls noch nie eingeloggt!</font></font>");
+ }
+ }
+ else {
+ &post_prv("$alias", "<font color='ffa500'>$alias2prove <font color=ffffff> exsistiert nicht in der Benutzerdatenbank!</font></font>");
+ }
+ &reload_html;
+ }
+ elsif ($cmd eq 'selfkill') {
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias</font> entfernt sich ganz und gar aus dem System und loggt sich aus ... </font></i>", $alias);
+ &private_javascript($alias, $room, q[open('chat?request=start&tmp=selfkill','_top');]);
+ &kill_alias($alias);
+ &reload_html;
+ }
+ elsif ($cmd eq 'w') {
+ my $theme = &get_theme($room);
+ my $door = '[<font color=red>Abgesperrt!</font>]' if $rstat[0] eq "1\n";
+ my($is, $nr) = ('t', 0);
+ my $persons;
+ opendir DIR, "data/online/rooms/$room";
+ my(@dir) = readdir DIR;
+ closedir DIR;
+ foreach $_ (@dir) {
+ if (-f "data/online/rooms/$room/$_") {
+ $persons = $persons . ' ' . "<font color='".&get_ident($_,3)."'>$_</font>";
+ ++$nr;
+ }
+ }
+ &post_prv($alias, "<font color=ffffff>Der aktuelle <b>Raum:</b> $room $theme $door ($nr): $persons</font>");
+ &reload_html;
+ }
+ elsif ($cmd eq 'wc' or $cmd eq 'wc/') {
+ my $raum = $cmd[1];
+ my $persons;
+ if ($raum eq '' and $cmd eq 'wc') {
+ opendir USERS, 'data/online/users';
+ my(@users) = readdir USERS;
+ close USERS;
+ foreach $_ (@users) {
+ $persons = $persons . ' ' . "<font color='".&get_ident($_,3)."'>$_</font>" if -f "data/online/users/$_";
+ }
+ my $nr = $#users - 1;
+ my($nrs, $is) = ('', 'ist');
+ if ($nr != 1) {
+ $nrs = 'en';
+ $is = 'sind';
+ }
+ &post_prv("$alias", "<font color=ffffff>$nr Person$nrs $is insgesamt eingeloggt: $persons</font>");
+ }
+ elsif ($raum eq '' and $cmd eq 'wc/') {
+ my $msg2post;
+ opendir DIR, 'data/online/rooms';
+ my(@dir) = readdir DIR;
+ closedir DIR;
+ foreach $_ (@dir) {
+ if (-e "data/online/rooms/$_" and $_ ne '..' and $_ ne '.') {
+ opendir DIR, "data/online/rooms/$_";
+ my(@dir2) = readdir DIR;
+ closedir DIR;
+ open RSTAT, "<data/online/rstat/$_";
+ my(@rstat) = <RSTAT>;
+ close RSTAT;
+ chomp $rstat[1];
+ my $door = '[<font color=red>Abgesperrt!</font>]' if $rstat[0] eq "1\n";
+ my $nr = $#dir2 - 1;
+ $msg2post = $msg2post . "<tr><td><b><font size=2 color='ffffff'>$_ $door ($nr) [" . $rstat[1] . q(]: </font></b></td></tr><tr><td><font size=2 color='ffa500'>);
+ foreach $chatter (@dir2) {
+ $msg2post = $msg2post . "<font color='".&get_ident($chatter,3)."'>$chatter</font> " if -f "data/online/rooms/$_/$chatter";
+ }
+ print '</font></td>';
+ }
+ }
+ &post_prv($alias, "<font color=ffffff>Folgende R&auml;ume sind offen:</font><table>$msg2post</table>");
+ }
+ elsif ($raum ne '') {
+ my $persons;
+ opendir DIR, "data/online/rooms/$raum";
+ my(@dir) = readdir DIR;
+ closedir DIR;
+ foreach $_ (@dir) {
+ $persons = $persons . ' ' . "<font color='".&get_ident($chatter,3)."'>$_</font>" if -f "data/online/rooms/$raum/$_";
+ }
+ my($nr, $is) = ($#dir - 1, 't');
+ if ($nr != 1) {
+ $nrs = 'en';
+ $is = 'n';
+ }
+ &post_prv($alias, "<font color=ffffff> $nr Person$nrs befinde$is sich im Raum <b>$raum</b> $persons</font>");
+ }
+ &reload_html;
+ }
+ elsif ($cmd eq 'wj' or $cmd eq 'ju') {
+ my $alias2search = $cmd[1];
+ my $roomofalias = &get_room($alias2search);
+ if ($roomofalias) {
+ if ($cmd eq 'wj') {
+ &post_prv($alias, "<font color='ffa500'>$alias2search <font color=ffffff>befindet sich im Raum <b>$roomofalias</b> !</font></font>");
+ }
+ else {
+ &change_room('ju', $roomofalias, $room, $alias2search);
+ }
+ }
+ else {
+ &post_prv($alias, "<font color='ffa500'>$alias2search <font color=ffffff> ist nicht eingeloggt!</font></font>");
+ }
+ &reload_html;
+ }
+ elsif (1 <= &hierachie($alias, $room)) {
+ if ($cmd eq 'l') {
+ &lock;
+ }
+ elsif ($cmd eq 'su') {
+ my $alias2su = $cmd[1];
+ opendir DIR, "data/online/rooms/$room";
+ my(@dir) = readdir DIR;
+ closedir DIR;
+ foreach $_ (@dir) {
+ if ($_ eq $alias2su) {
+ open DATEI, "<data/online/rstat/$room";
+ my(@rstat) = <DATEI>;
+ close DATEI;
+ if (1 <= hierachie($alias2su, $room)) {
+ &post_prv($alias, "<font color='ffa500'>$alias2su</font> <font color='ffffff'> kann nicht zum Raumbesetzer ernannt werden. (Ist bereits RB, W\304 oder OW)</font>");
+ &reload_html;
+ }
+ open RSTAT, ">>data/online/rstat/$room";
+ print RSTAT "$alias2su<;1\n";
+ close RSTAT;
+ &post($room, q[<i><font color='ffffff'>] . &timestring . " <font color='$col'>$alias</font> verleiht <font color='".&get_ident($alias2su,3)."'>$alias2su</font> Raumbesetzerrechte ...</font></i><script language='JavaScript'>parent.online.location.reload();</script>", $alias);
+ &reload_html;
+ }
+ }
+ &post_prv($alias, "<font color='ffa500'>$alias2su</font> <font color=ffffff> kann nicht zum Raumbesetzer ernannt werden. (Ist nicht anwesend)</font>");
+ &reload_html;
+ }
+ elsif ($cmd eq 'rsu') {
+ my $alias2rsu = $cmd[1];
+ if (1 == hierachie($alias2rsu, $room)) {
+ &rm_rstat($alias2rsu, $room);
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> entzieht <font color='".&get_ident($alias2rsu,3)."'>$alias2rsu</font> die Raumbesetzerrechte ...</font></i><script language='JavaScript'>parent.online.location.reload();</script>", $alias);
+ }
+ else {
+ &post_prv($alias, "<font color='ffa500'>$alias2rsu <font color='ffffff'>ist gar kein Raumbesetzer!</font></font>");
+ }
+ &reload_html;
+ }
+ elsif ($cmd eq 't') {
+ open RSTAT, "data/online/rstat/$room";
+ my(@r_stat) = <RSTAT>;
+ close RSTAT;
+ my $theme;
+ if ($cmd[1] ne undef) {
+ for ($i = 1; $i <= $#cmd; ++$i) {
+ $theme = $theme . ' ' . $cmd[$i];
+ }
+ &post($room, q[<i><font color='ffffff'>] . &timestring . qq[ <font color='$col'>$alias</font> gibt dem Raum das Thema "<font color='$col'>$theme</font>" ...</font></i>], $alias);
+ }
+ else {
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> l\366scht das Thema des Raums ...</font></i>", $alias);
+ }
+ $theme = $r_stat[0] . $theme . "\n";
+ for ($i = 2; $i <= $#r_stat; ++$i) {
+ $theme = $theme . $r_stat[$i] . "\n";
+ }
+ open RSTAT, ">data/online/rstat/$room";
+ print RSTAT $theme;
+ close RSTAT;
+ &reload_html;
+ }
+ elsif (3 <= &hierachie($alias, $room)) {
+ if ($cmd eq 'ban' or $cmd eq 'banip') {
+ my $alias2ban = $cmd[1];
+ my $hierachie = &hierachie($alias2ban);
+ open BAN, '<data/ban';
+ my(@ban) = <BAN>;
+ close BAN;
+ if ($cmd[1] eq undef) {
+ my $nr = @ban;
+ my $banned;
+ foreach $_ (@ban) {
+ chomp $_;
+ $banned .= " $_";
+ }
+ &post_prv($alias, "<font color=ffffff>Folgende Benutzer sind verbannt [$nr]: <font color='ff0000'>$banned</font></font>");
+ &reload_html;
+ }
+ elsif (-f "data/user/options/$alias2ban") {
+ if (3 <= $hierachie) {
+ &post_prv($alias, "<font color='ffa500'>$alias2ban <font color='ffffff'>kann nicht verbannt werden!</font></font>");
+ &reload_html;
+ }
+ if ($cmd eq 'ban') {
+ if (&add_entry($alias2ban, 'ban') == 1) {
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> verbannt <b>$alias2ban</b> aus dem Chat ...</font></i>", $alias);
+ }
+ else {
+ &post_prv($alias, "<font color='ffa500'>$alias2ban <font color=ffffff>ist bereits verbannt!</font></font>");
+ }
+ }
+ elsif ($cmd eq 'banip') {
+ open DATEI, "<data/online/ident/$alias2ban";
+ my $ipnr = <DATEI>;
+ close DATEI;
+ chomp $ipnr;
+ if (add_entry("ip://$ipnr", 'ban') == 1) {
+ &post_prv($alias, "<font color='ffffff'>IP-Nummer von <font color='ffa500'>$alias2ban</font> (<font color='ff0000'>$ipnr</font>) wurde verbannt!</font></i>");
+ }
+ else {
+ &post_prv($alias, "<font color='ffffff'>Die IP-Nummer <font color='ff0000'>$ipnr</font> von <font color='ffa500'>$alias2ban</font> ist bereits verbannt!</font></font>");
+ }
+ &reload_html;
+ }
+ &reload_html;
+ }
+ &post_prv($alias, "<font color='ffa500'>$alias2ban <font color=ffffff> kann nicht verbannt werden, da Benutzername nicht existiert!</font></font>");
+ &reload_html;
+ }
+ elsif ($cmd eq 'rban' or $cmd eq 'rbanip') {
+ my $alias2rban = $cmd[1];
+ open BAN, '<data/ban';
+ @ban = <BAN>;
+ close BAN;
+ foreach $ban (@ban) {
+ if (&rm_entry($alias2rban, 'ban') == 1) {
+ if ($alias2rban =~ /ip:/) {
+ &post_prv($alias, "<font color='ffffff'>Die IP-Nummer <font color='ff0000'>$alias2rban</font> wurde aus der Banliste ausgetragen!</font></font>");
+ }
+ else {
+ &post($room, '<i><font color=ffffff>' . &timestring . " <font color='$col'>$alias</font> entbannt <font color='".&get_ident($alias2rban,3)."'>$alias2rban</font> ...</font></i>", $alias);
+ }
+ &reload_html;
+ }
+ }
+ &post_prv($alias, "<font color='ff0000'>$alias2rban <font color='ffffff'>ist nicht verbannt!</font></font>");
+ &reload_html;
+ }
+ elsif ($cmd eq 'img') {
+ my $hierachie = &hierachie($alias, $room);
+ &hierachie_rm($alias);
+ if ($hierachie == 3) {
+ &post_prv($alias, q[<font color='ffffff'>Als tempor&auml;rer W&auml;chter kannst du dein Superuserlogo nicht verstecken!</font>]);
+ }
+ elsif ($hierachie % 2 > 0) {
+ &post_prv($alias, q[<font color='ffffff'>Dein Superuserlogo wurde versteckt!</font>]);
+ &hierachie_add($alias, $hierachie + 1);
+ }
+ else {
+ &post_prv("$alias", q[<font color='ffffff'>Dein Superuserlogo wurde wieder sichtbar gemacht!</font></font>]);
+ &hierachie_add($alias, $hierachie - 1);
+ }
+