diff options
| author | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:47 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:47 +0200 |
| commit | 630af0ed6c0af69c7df2e45aef7a87722a3c00c0 (patch) | |
| tree | ad76f850278b090f7e5c26561035d19c320400cc /0.7.2 | |
| parent | 2860b03f00e48264ed15c132ad90b240ebe6070b (diff) | |
tagging ychat-perl-legacyychat-perl-legacy
Diffstat (limited to '0.7.2')
| -rw-r--r-- | 0.7.2/config.pm | 42 | ||||
| -rw-r--r-- | 0.7.2/modules/changeroom.pm | 69 | ||||
| -rw-r--r-- | 0.7.2/modules/commands.pm | 784 | ||||
| -rw-r--r-- | 0.7.2/modules/divcom.pm | 260 | ||||
| -rw-r--r-- | 0.7.2/modules/hierachie.pm | 74 | ||||
| -rw-r--r-- | 0.7.2/modules/htdocs.pm | 127 | ||||
| -rw-r--r-- | 0.7.2/modules/input.pm | 14 | ||||
| -rw-r--r-- | 0.7.2/modules/loggedin.pm | 37 | ||||
| -rw-r--r-- | 0.7.2/modules/online.pm | 104 | ||||
| -rw-r--r-- | 0.7.2/modules/postmessage.pm | 90 | ||||
| -rw-r--r-- | 0.7.2/modules/shared.pm | 307 | ||||
| -rw-r--r-- | 0.7.2/modules/start.pm | 254 | ||||
| -rw-r--r-- | 0.7.2/modules/statistic.pm | 148 | ||||
| -rw-r--r-- | 0.7.2/modules/stream.pm | 170 | ||||
| -rw-r--r-- | 0.7.2/setup.sh | 18 | ||||
| -rw-r--r-- | 0.7.2/templates/chatiq.sno | 1 | ||||
| -rw-r--r-- | 0.7.2/templates/colors.sno | 290 | ||||
| -rw-r--r-- | 0.7.2/templates/help.sno | 75 | ||||
| -rw-r--r-- | 0.7.2/ychatd.pl | 59 |
19 files changed, 2923 insertions, 0 deletions
diff --git a/0.7.2/config.pm b/0.7.2/config.pm new file mode 100644 index 0000000..e606f01 --- /dev/null +++ b/0.7.2/config.pm @@ -0,0 +1,42 @@ +# yChat - Copyright by Paul C. Bütow +########################### Dieser Teil bestimmt die Standart-Variabeln. +##STANDART-CONFIGURATION:## (CSS, Farben, Version etc.) +########################### +$limit = 50; # Benutzerlimit +$datum = "27.12.01"; # Datum der letzten Änderung (ändern erwünscht) +$version = "0.7.0.2"; # 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 = "212.202.190.233"; # 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 + +# 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.7.2/modules/changeroom.pm b/0.7.2/modules/changeroom.pm new file mode 100644 index 0000000..35daa00 --- /dev/null +++ b/0.7.2/modules/changeroom.pm @@ -0,0 +1,69 @@ +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'>] . ×tring . " <font color='$col'>$alias</font> verlä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'>] . ×tring . " 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'>] . ×tring . " Du folgst <b>$alias2</b> 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'>] . ×tring . " Du wechselst aus dem Raum <b>$oldroom</b> herein nach <b>$newroom</b> und sperrst ab...</font></i><br><;\n"; + } + elsif ($method eq 'beam') { + print MSGFILE "$alias<;" . time . q[<;!<;!<;<i><font color='ffffff'>] . ×tring . " Du wurdest von <b>$alias2</b> in den Raum <b>$newroom</b> gebeamt...</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'>] . ×tring . " <font color='$col'>$alias</font> wechselt in den Raum <b>$newroom</b> ...</font></i>", $alias); + $room = $newroom; + &post($room, q[<i><font color='ffffff'>] . ×tring . " <font color='$col'>$alias</font> kommt aus dem Raum <b>$oldroom</b> herein nach <b>$newroom</b> ...</font></i>", $alias); + } + elsif ($method eq 'ju') { + &post($room, q[<i><font color='ffffff'>] . ×tring . " <font color='$col'>$alias</font> folgt <b>$alias2</b> in den Raum <b>$newroom</b> ...</font></i>", $alias); + $room = $newroom; + &post($room, q[<i><font color='ffffff'>] . ×tring . " <font color='$col'>$alias</font> kommt aus dem Raum <b>$oldroom</b> und folgt <b>$alias2</b> herein nach <b>$newroom</b> ...</font></i>", $alias); + } + elsif ($method eq 'sep') { + &post($room, q[<i><font color='ffffff'>] . ×tring . " <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'>] . ×tring . " <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'>] . ×tring . " <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'>] . ×tring . " <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.7.2/modules/commands.pm b/0.7.2/modules/commands.pm new file mode 100644 index 0000000..c191f6e --- /dev/null +++ b/0.7.2/modules/commands.pm @@ -0,0 +1,784 @@ +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>' . ×tring . " <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>' . ×tring . " <font color='$col'>$alias</font> sperrt den Raum ab ...</font></i>", $alias) if $method ne 'separee'; + } + else { + &post($room, '<i><font color=ffffff>' . ×tring . " <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 - 2001).</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>' . ×tring . " <font color='ffa500'><b>Das System</b></font> meldet <b>$alias</b> wegen Inaktivität ab ...</i></font>", $alias); + } + else { + &post($room, '<i><font color=ffffff>' . ×tring . " <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; + &post($room, '<i><font color=ffffff>' . ×tring . "</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>' . ×tring . " <font color='ffa500'><b>Das System</b></font> loggt <b>$alias</b> wegen Inaktivität aus ... </font></i>", $alias); + } + else { + &post($room, '<i><font color=ffffff>' . ×tring . " <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 '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") { + &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ö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]; + if (-f "data/user/options/$alias2prove") { + open ONLINE, "<data/user/counts/$alias2prove.online"; + my $online = <ONLINE>; + close ONLINE; + my $totaltime = sprintf('%.2f', $online / 3600); + &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>' . ×tring . " <font color='$col'>$alias</font> verlä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>' . ×tring . " <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'>] . ×tring . " <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 . ' ' . $_; + ++$nr; + } + } + &post_prv($alias, "<font color=ffffff>Der aktuelle <b>Raum:</b> $room $theme $door ($nr): <font color='ffa500'>$persons</font></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 . ' ' . $_ 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: <font color='ffa500'>$persons</font></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 . "$chatter " if -f "data/online/rooms/$_/$chatter"; + } + print '</font></td>'; + } + } + &post_prv($alias, "<font color=ffffff>Folgende Rä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 . ' ' . $_ 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> <font color='ffa500'>$persons</font></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'>] . ×tring . " <font color='$col'>$alias</font> verleiht <b>$alias2su</b> 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>' . ×tring . " <font color='$col'>$alias</font> entzieht <b>$alias2rsu</b> 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'>] . ×tring . 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>' . ×tring . " <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)) { + 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 eq 'wa') { + &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>' . ×tring . " <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>' . ×tring . " <font color='$col'>$alias</font> entbannt <b>$alias2rban</b> ...</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); + &hierachie_rm($alias); + if ($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); + } + &reload_html; + } + elsif ($cmd eq 'ip') { + my $alias2prove = $cmd[1]; + opendir DIR, 'data/online/ident'; + my(@dir) = readdir DIR; + closedir DIR; + foreach $_ (@dir) { + if ($_ eq $alias2prove) { + open DATEI, "<data/online/ident/$alias2prove"; + my $ipnr = <DATEI>; + close DATEI; + chomp $ipnr; + &post_prv($alias, "<font color='ffa500'>$_<font color='ffffff'> hat die IP-Nummer <font color='ff0000'>$ipnr</font> !</font></font>"); + } + } + &reload_html; + } + elsif ($cmd eq 'k' or $cmd eq 'o') { + my $alias2kick = $cmd[1]; + if (-f "data/online/users/$alias2kick") { + opendir DIR, 'data/online/rooms'; + my(@dir) = readdir DIR; + closedir DIR; + foreach my $raum (@dir) { + opendir DIR, "data/online/rooms/$raum"; + my(@dir2) = readdir DIR; + closedir DIR; + foreach my $chatter (@dir2) { + if ($chatter eq $alias2kick) { + my $hierachie2 = &hierachie($alias2kick); + if (&hierachie($alias) <= &hierachie($alias2kick)) { + &post_prv($alias, "<font color='ffa500'>$alias2kick <font color='ffffff'> besitzt einen höheren oder gleichen Rang und kann nicht gekickt/ausgeloggt werden!</font></font>"); + } + else { + if ($cmd eq 'k') { + &post_prv($alias2kick, '<script language="JavaScript">window.open("chat?request=start&tmp=kick","_top");</script>'); + } + else { + &post_prv($alias2kick, '<script language="JavaScript">window.open("chat?request=start&tmp=logout","_top");</script>'); + } + $_ = undef if $room eq $raum; + if ($cmd eq 'k') { + &post($room, '<i><font color=ffffff>' . ×tring . " <font color='$col'>$alias</font> katapultiert <b>$alias2kick</b> aus dem Chat ...</font></i>", $alias, $raum); + } + else { + &post($room, '<i><font color=ffffff>' . ×tring . " <font color='$col'>$alias</font> loggt <b>$alias2kick</b> aus dem Chat aus ...</font></i>", $alias, $alias); + } + &rm_alias($alias2kick, $raum); + &check_online; + } + &reload_html; + } + } + } + } + &post_prv($alias, "<font color='ffa500'>$alias2kick <font color='ffffff'> ist nicht anwesend und kann nicht aus dem System katapultiert werden werden!</font></font>"); + &reload_html; + } + elsif ($cmd eq 'sl') { + my $sl_room = $cmd[1]; + if (-e "data/on |
