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.7.1/changeroom.pm | 81 ++++ 0.7.1/chatiq.sno | 1 + 0.7.1/colors.sno | 290 +++++++++++++++ 0.7.1/commands | 784 +++++++++++++++++++++++++++++++++++++++ 0.7.1/commands.pm | 1016 +++++++++++++++++++++++++++++++++++++++++++++++++++ 0.7.1/config.pm | 44 +++ 0.7.1/help.sno | 75 ++++ 0.7.1/hierachie.pm | 101 +++++ 0.7.1/htdocs.pm | 220 +++++++++++ 0.7.1/input.pm | 195 ++++++++++ 0.7.1/loggedin.pm | 89 +++++ 0.7.1/main1.pm | 57 +++ 0.7.1/main2.pm | 626 +++++++++++++++++++++++++++++++ 0.7.1/online.pm | 151 ++++++++ 0.7.1/setup.sh | 18 + 0.7.1/shared.pm | 478 ++++++++++++++++++++++++ 0.7.1/start.pm | 506 +++++++++++++++++++++++++ 0.7.1/stat.pm | 206 +++++++++++ 0.7.1/stream.pm | 250 +++++++++++++ 0.7.1/ychatd.pl | 109 ++++++ 20 files changed, 5297 insertions(+) create mode 100644 0.7.1/changeroom.pm create mode 100644 0.7.1/chatiq.sno create mode 100644 0.7.1/colors.sno create mode 100644 0.7.1/commands create mode 100644 0.7.1/commands.pm create mode 100644 0.7.1/config.pm create mode 100644 0.7.1/help.sno create mode 100644 0.7.1/hierachie.pm create mode 100644 0.7.1/htdocs.pm create mode 100644 0.7.1/input.pm create mode 100644 0.7.1/loggedin.pm create mode 100644 0.7.1/main1.pm create mode 100644 0.7.1/main2.pm create mode 100644 0.7.1/online.pm create mode 100644 0.7.1/setup.sh create mode 100644 0.7.1/shared.pm create mode 100644 0.7.1/start.pm create mode 100644 0.7.1/stat.pm create mode 100644 0.7.1/stream.pm create mode 100644 0.7.1/ychatd.pl (limited to '0.7.1') diff --git a/0.7.1/changeroom.pm b/0.7.1/changeroom.pm new file mode 100644 index 0000000..4961e01 --- /dev/null +++ b/0.7.1/changeroom.pm @@ -0,0 +1,81 @@ +sub change_room { # Den Chat-Raum wechseln + my ($method,$newroom,$oldroom,$alias2) = @_; + + if ($newroom eq $oldroom) { + &post_prv($alias,"Du befindest dich bereits im Raum $newroom!"); + &reload_html; + + } elsif ($newroom eq $loginplace) { + &post($room,"".×tring." $alias verlässt den Chat und geht in die $loginplace ... ", $alias); + &post_strmsg($alias,$room,'quit'); + + unlink("data/online/rooms/$room/$alias"); + + &rm_rstat($alias,$room); + &check_online; + &reload_html; + } + + open RSTAT, "; + close RSTAT; + + #Überprüfen, ob Alias Raum betreten darf + if ($rstat[0] eq "1\n") { + if (3 <= &hierachie($alias)) { + &post_prv($alias,"Der Raum $newroom ist leider abgesperrt!"); + &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."<;!<;!<;".×tring." Du wechselst aus dem Raum $oldroom herein nach $newroom ...
<;\n"; + + } elsif ($method eq "ju") { + print MSGFILE "$alias<;".time."<;!<;!<;".×tring." Du folgst $alias2 aus dem Raum $oldroom herein nach $newroom ...
<;\n"; + + } elsif ($method eq "sep") { + print MSGFILE "$alias<;".time."<;!<;!<;".×tring." Du wechselst aus dem Raum $oldroom herein nach $newroom und sperrst ab...
<;\n"; + + } elsif ($method eq "beam") { + print MSGFILE "$alias<;".time."<;!<;!<;".×tring." Du wurdest von $alias2 in den Raum $newroom gebeamt...
<;\n"; + } + close MSGFILE; + + &post_strmsg($alias,$room,'cr',$newroom); + $room = $oldroom; + + my $tmpstamp = time; + if ($method eq "j") { + &post($room,"".×tring." $alias wechselt in den Raum $newroom ...", $alias); + $room = $newroom; + &post($room,"".×tring." $alias kommt aus dem Raum $oldroom herein nach $newroom ...", $alias); + + } elsif ($method eq "ju") { + &post($room,"".×tring." $alias folgt $alias2 in den Raum $newroom ...", $alias); + $room = $newroom; + &post($room,"".×tring." $alias kommt aus dem Raum $oldroom und folgt $alias2 herein nach $newroom ...", $alias); + + } elsif ($method eq "sep") { + &post($room,"".×tring." $alias wechselt in den Raum $newroom und sperrt ab...", $alias); + $room = $newroom; + &post($room,"".×tring." $alias kommt aus dem Raum $oldroom herein nach $newroom und sperrt ab...", $alias); + + } elsif ($method eq "beam") { + &post($room,"".×tring." $alias2 beamt $alias in den Raum $newroom...", $alias2); + $room = $newroom; + &post($room,"".×tring." $alias2 beamt $alias aus dem Raum $oldroom herein nach $room...", $alias2); + } + + unlink("data/online/rooms/$oldroom/$alias"); + &rm_rstat($alias,$oldroom); + &check_online; +} + +1; diff --git a/0.7.1/chatiq.sno b/0.7.1/chatiq.sno new file mode 100644 index 0000000..2a024f5 --- /dev/null +++ b/0.7.1/chatiq.sno @@ -0,0 +1 @@ +

Chatiquette


Hier einige Grundlagen ...
Daraus ergeben sich folgende Regeln:
So - nach den ganzen "lass-es-bessers" noch ein paar Überlebenstips:
Problematisch für die Wächter und Oberwächter ist:

Richtlinien für den gestressten WÄ und OW:

Wer meint, von einem Wächter oder Oberwächter ungerecht behandelt worden zu sein (z.B. weil dieser wegen persönlichen Streitigkeiten rausschmeisst), richte seine Klage an einen Oberwächter oder direkt an den obersten Boss: Snooper (admin@ychat.de).
\ No newline at end of file diff --git a/0.7.1/colors.sno b/0.7.1/colors.sno new file mode 100644 index 0000000..3640b9e --- /dev/null +++ b/0.7.1/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.7.1/commands b/0.7.1/commands new file mode 100644 index 0000000..1d107bc --- /dev/null +++ b/0.7.1/commands @@ -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) = ; + close RSTAT; + my $lock = "0\n"; + if ($room eq $standardroom) { + &post($room, '' . ×tring . " $alias sperrt den Raum ohne Erfolg ab ...", $alias); + } + else { + if ($r_stat[0] == 0) { + $lock = "1\n"; + &post($room, '' . ×tring . " $alias sperrt den Raum ab ...", $alias) if $method ne 'separee'; + } + else { + &post($room, '' . ×tring . " $alias sperrt den Raum auf ...", $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, "Aktuelle Version ist $title und wurde am $datum aktuallisiert. Programmiert von Paul C. B\374tow (2000 - 2001)."); + &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, '' . ×tring . " Das System meldet $alias wegen Inaktivität ab ...", $alias); + } + else { + &post($room, '' . ×tring . " $alias meldet sich ab ($away_msg ) ...", $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, ""); + &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, "; + close OPTIONS; + open OPTIONS, ">data/user/options/$alias"; + print OPTIONS $options[0] . $col . "\n" . $secol; + close OPTIONS; + &post($room, '' . ×tring . " $alias hat die Farbe gewechselt...", $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, "Heute ist der $days.$months. Jahr $years. Es ist genau $hours:$mins Uhr und $secs Sekunden."); + &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, '' . ×tring . " Das System loggt $alias wegen Inaktivität aus ... ", $alias); + } + else { + &post($room, '' . ×tring . " $alias loggt sich ganz aus ... ", $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, "Uptime: $startime " . &calculate_uptime_hours($STARTIME) . "h; $HITS Hits; " . &calculate_hpm($HITS, $STARTIME) . ' Hits pro Minute'); + &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, "$alias2ignore existiert nicht in der Datenbank!"); + } + } + 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, "Der Raum $cmd[1] enth\344lt illegale Zeichen!"); + &reload_html; + } + else { + if ($cmd eq 'j') { + &change_room('j', $cmd[1], $room); + &reload_html; + } + else { + if ($cmd[1] eq $standardroom) { + &post_prv($alias, "Der Raum $cmd[1] ist ein Standardraum und kann nicht als Separee eröffnet werden!"); + } + 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/][$alias]g; + $me_msg =~ s[/m/][$alias]g; + if ($cmd eq 'm') { + &post($room, "$alias $me_msg", $alias); + } + else { + &post($room, "$alias $me_msg", $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, "$alias2memo wurde folgende memo erfolgreich hinterlassen: $memo_msg"); + open MEMO, ">>data/user/memos/$alias2memo"; + print MEMO "($days.$months.$years - $hours:$mins:$secs) $alias hat Dir eine Memo hinterlassen: $memo_msg
\n"; + close MEMO; + &reload_html; + } + &post_prv($alias, "$alias2memo existiert in der Datenbank nicht !"); + &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','menuframe','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, "; + close ONLINE; + my $totaltime = sprintf('%.2f', $online / 3600); + &post_prv("$alias", "$alias2prove war insgesamt schon $totaltime Stunden online!"); + } + else { + &post_prv("$alias", "$alias2prove existiert nicht in der Benutzerdatenbank!"); + } + &reload_html; + } + elsif ($cmd eq 'q') { + &post($room, '' . ×tring . " $alias verlässt den Chat ... ", $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, '' . ×tring . " $alias l\366scht das eigene G\344stebuch ...", $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, "$alias schreit: $msg2scream", $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, "; + close LASTLOGIN; + my $timestamp = sprintf('%.2f', (time - $lastlogin) / 3600); + &post_prv("$alias", "$alias2prove hat sich vor $timestamp Stunden zuletzt in das System eingeloggt!"); + } + else { + &post_prv("$alias", "$alias2prove hat sich seit der Einf\374hrung dieses Befehls noch nie eingeloggt!"); + } + } + else { + &post_prv("$alias", "$alias2prove exsistiert nicht in der Benutzerdatenbank!"); + } + &reload_html; + } + elsif ($cmd eq 'selfkill') { + &post($room, q[] . ×tring . " $alias entfernt sich ganz und gar aus dem System und loggt sich aus ... ", $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 = '[Abgesperrt!]' 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, "Der aktuelle Raum: $room $theme $door ($nr): $persons"); + &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", "$nr Person$nrs $is insgesamt eingeloggt: $persons"); + } + 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, "; + close RSTAT; + chomp $rstat[1]; + my $door = '[Abgesperrt!]' if $rstat[0] eq "1\n"; + my $nr = $#dir2 - 1; + $msg2post = $msg2post . "$_ $door ($nr) [" . $rstat[1] . q(]: ); + foreach $chatter (@dir2) { + $msg2post = $msg2post . "$chatter " if -f "data/online/rooms/$_/$chatter"; + } + print ''; + } + } + &post_prv($alias, "Folgende Räume sind offen:$msg2post
"); + } + 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, " $nr Person$nrs befinde$is sich im Raum $raum $persons"); + } + &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, "$alias2search befindet sich im Raum $roomofalias !"); + } + else { + &change_room('ju', $roomofalias, $room, $alias2search); + } + } + else { + &post_prv($alias, "$alias2search ist nicht eingeloggt!"); + } + &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, "; + close DATEI; + if (1 <= hierachie($alias2su, $room)) { + &post_prv($alias, "$alias2su kann nicht zum Raumbesetzer ernannt werden. (Ist bereits RB, W\304 oder OW)"); + &reload_html; + } + open RSTAT, ">>data/online/rstat/$room"; + print RSTAT "$alias2su<;1\n"; + close RSTAT; + &post($room, q[] . ×tring . " $alias verleiht $alias2su Raumbesetzerrechte ...", $alias); + &reload_html; + } + } + &post_prv($alias, "$alias2su kann nicht zum Raumbesetzer ernannt werden. (Ist nicht anwesend)"); + &reload_html; + } + elsif ($cmd eq 'rsu') { + my $alias2rsu = $cmd[1]; + if (1 == hierachie($alias2rsu, $room)) { + &rm_rstat($alias2rsu, $room); + &post($room, '' . ×tring . " $alias entzieht $alias2rsu die Raumbesetzerrechte ...", $alias); + } + else { + &post_prv($alias, "$alias2rsu ist gar kein Raumbesetzer!"); + } + &reload_html; + } + elsif ($cmd eq 't') { + open RSTAT, "data/online/rstat/$room"; + my(@r_stat) = ; + close RSTAT; + my $theme; + if ($cmd[1] ne undef) { + for ($i = 1; $i <= $#cmd; ++$i) { + $theme = $theme . ' ' . $cmd[$i]; + } + &post($room, q[] . ×tring . qq[ $alias gibt dem Raum das Thema "$theme" ...], $alias); + } + else { + &post($room, '' . ×tring . " $alias l\366scht das Thema des Raums ...", $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, '; + close BAN; + if ($cmd[1] eq undef) { + my $nr = @ban; + my $banned; + foreach $_ (@ban) { + chomp $_; + $banned .= " $_"; + } + &post_prv($alias, "Folgende Benutzer sind verbannt [$nr]: $banned"); + &reload_html; + } + elsif (-f "data/user/options/$alias2ban") { + if (3 <= $hierachie eq 'wa') { + &post_prv($alias, "$alias2ban kann nicht verbannt werden!"); + &reload_html; + } + if ($cmd eq 'ban') { + if (&add_entry($alias2ban, 'ban') == 1) { + &post($room, '' . ×tring . " $alias verbannt $alias2ban aus dem Chat ...", $alias); + } + else { + &post_prv($alias, "$alias2ban ist bereits verbannt!"); + } + } + elsif ($cmd eq 'banip') { + open DATEI, "; + close DATEI; + chomp $ipnr; + if (add_entry("ip://$ipnr", 'ban') == 1) { + &post_prv($alias, "IP-Nummer von $alias2ban ($ipnr) wurde verbannt!"); + } + else { + &post_prv($alias, "Die IP-Nummer $ipnr von $alias2ban ist bereits verbannt!"); + } + &reload_html; + } + &reload_html; + } + &post_prv($alias, "$alias2ban kann nicht verbannt werden, da Benutzername nicht existiert!"); + &reload_html; + } + elsif ($cmd eq 'rban' or $cmd eq 'rbanip') { + my $alias2rban = $cmd[1]; + open BAN, '; + close BAN; + foreach $ban (@ban) { + if (&rm_entry($alias2rban, 'ban') == 1) { + if ($alias2rban =~ /ip:/) { + &post_prv($alias, "Die IP-Nummer $alias2rban wurde aus der Banliste ausgetragen!"); + } + else { + &post($room, '' . ×tring . " $alias entbannt $alias2rban ...", $alias); + } + &reload_html; + } + } + &post_prv($alias, "$alias2rban ist nicht verbannt!"); + &reload_html; + } + elsif ($cmd eq 'img') { + my $hierachie = &hierachie($alias); + &hierachie_rm($alias); + if ($hierachie % 2 > 0) { + &post_prv($alias, q[Dein Superuserlogo wurde versteckt!]); + &hierachie_add($alias, $hierachie + 1); + } + else { + &post_prv("$alias", q[Dein Superuserlogo wurde wieder sichtbar gemacht!]); + &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, "; + close DATEI; + chomp $ipnr; + &post_prv($alias, "$_ hat die IP-Nummer $ipnr !"); + } + } + &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, "$alias2kick besitzt einen höheren oder gleichen Rang und kann nicht gekickt/ausgeloggt werden!"); + } + else { + if ($cmd eq 'k') { + &post_prv($alias2kick, ''); + } + else { + &post_prv($alias2kick, ''); + } + $_ = undef if $room eq $raum; + if ($cmd eq 'k') { + &post($room, '' . ×tring . " $alias katapultiert $alias2kick aus dem Chat ...", $alias, $raum); + } + else { + &post($room, '' . ×tring . " $alias loggt $alias2kick aus dem Chat aus ...", $alias, $alias); + } + rm_alias $alias2kick, $raum; + &check_online; + } + &reload_html; + } + } + } + } + &post_prv($alias, "$alias2kick ist nicht anwesend und kann nicht aus dem System katapultiert werden werden!"); + &reload_html; + } + elsif ($cmd eq 'sl') { + my $sl_room = $cmd[1]; + if (-e "data/online/rooms/$sl_room") { + my $lock = "0\n"; + open RSTAT, "; + close RSTAT; + if ($r_stat[0] == 0) { + $lock = "1\n"; + &post($room, '' . ×tring . " $alias sperrt den Raum $sl_room von aussen ab ...", $alias, $sl_room); + } + else { + &post($room, '' . ×tring . " $alias sperrt den Raum $sl_room von aussen auf ...", $alias, $sl_room); + } + for ($i = 1; $i <= $#r_stat; ++$i) { + $lock = $lock . $r_stat[$i]; + } + open RSTAT, ">data/online/rstat/$sl_room"; + print RSTAT $lock; + close RSTAT; + } + else { + &post_prv($alias, "Der Raum $sl_room existiert nicht!"); + } + &reload_html; + } + elsif ($cmd eq 'ss') { + my $ss_room = $cmd[1]; + if (-e "data/online/rooms/$ss_room") { + my $ss_msg; + for ($i = 2; $i <= $#cmd; ++$i) { + $ss_msg = $ss_msg . ' ' . $cmd[$i]; + } + my $msg2scream = "\U$ss_msg\E"; + &post($room, q[] . ×tring . " $alias ruft in den Raum $ss_room hinein: $msg2scream ...", $alias, $ss_room); + &reload_html; + } + else { + &post_prv($alias, "Der Raum $ss_room existiert nicht!"); + } + &reload_html; + } + elsif ($cmd eq 'st') { + my $st_room = $cmd[1]; + if (-e "data/online/rooms/$st_room") { + my $theme; + if ($cmd[2] ne undef) { + for ($i = 1; $i <= $#cmd; ++$i) { + $theme = $theme . ' ' . $cmd[$i]; + } + &post($room, '' . ×tring . qq[ $alias gibt dem Raum $st_room das Thema "$theme" ...], $alias, $st_room); + } + else { + &post($room, '' . ×tring . " $alias l\366scht das Thema des Raums $st_room ...", $alias, $st_room); + } + open RSTAT, "; + close RSTAT; + $theme = $r_stat[0] . $theme . "\n"; + for ($i = 2; $i <= $#r_stat; ++$i) { + $theme = $theme . $r_stat[$i]; + } + open RSTAT, ">data/online/rstat/$st_room"; + print RSTA