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.2/modules/commands.pm | 784 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 784 insertions(+) create mode 100644 0.7.2/modules/commands.pm (limited to '0.7.2/modules/commands.pm') 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) = ; + 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','_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, "; + 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 RSTAT $theme; + close RSTAT; + } + else { + &post_prv($alias, "Der Raum $st_room existiert nicht!"); + } + &reload_html; + } + elsif (5 <= &hierachie($alias)) { + if ($cmd eq 'kill') { + my $alias2kill = $cmd[1]; + if (-f "data/user/options/$alias2kill") { + if (5 <= &hierachie($alias2kill)) { + &post_prv($alias, "$alias2kill hat einen höheren Rang und kann nicht aus dem System entfernt werden !"); + } + else { + &post($room, '' . ×tring . " $alias2kill existiert nicht in der Datenbank!"); + } + &reload_html; + } + elsif ($cmd eq 'sys') { + my $sys_msg; + for ($i = 1; $i <= $#cmd; ++$i) { + $sys_msg = $sys_msg . ' ' . $cmd[$i]; + } + $sys_msg = q[] . ×tring . " SYSTEMNACHRICHT: $sys_msg ..."; + opendir ROOMS, 'data/msgs'; + my(@rooms) = readdir ROOMS; + close ROOMS; + foreach $_ (@rooms) { + &post($_, $sys_msg, $alias) unless /\./; + } + &log($sys_msg); + &reload_html; + } + elsif ($cmd eq 'wa') { + my $alias2wa = $cmd[1]; + if (-f "data/user/options/$alias2wa") { + if (3 <= &hierachie($alias2wa)) { + &post_prv($alias, "$alias2wa kann nicht zum Wächter ernannt werden!"); + } + else { + &hierachie_add($alias2wa, 3); + &post($room, '' . ×tring . " $alias ernennt $alias2wa zum W\344chter ...", $alias); + } + &reload_html; + } + else { + &post_prv($alias, "$alias2wa existiert nicht in der Datenbank!"); + } + &reload_html; + } + elsif ($cmd eq 'rwa') { + my $alias2rwa = $cmd[1]; + my $hierachie = &hierachie($alias2rwa); + if (3 == $hierachie or 4 == $hierachie) { + &hierachie_rm($alias2rwa); + &post($room, q[] . ×tring . " $alias hat $alias2rwa vom W\344chter zum normalen Chatter degradiert ...", $alias); + } + else { + &post_prv($alias, "$alias2rwa ist kein W\344chter und k\366nnen diese Rechte nicht entzogen werden!"); + } + &reload_html; + } + elsif (7 <= &hierachie($alias)) { + if ($cmd eq 'ow') { + my $alias2ow = $cmd[1]; + if (-f "data/user/options/$alias2ow") { + if (5 <= &hierachie($alias2ow)) { + &post_prv($alias, "$alias2ow kann nicht zum Oberwächter ernannt werden!"); + } + else { + &hierachie_add($alias2ow, 5); + &post($room, '' . ×tring . " $alias ernennt $alias2ow zum Oberwächter ...", $alias); + } + &reload_html; + } + else { + &post_prv($alias, "$alias2wa existiert nicht in der Datenbank!"); + } + &reload_html; + } + elsif ($cmd eq 'row') { + my $alias2row = $cmd[1]; + my $hierachie = &hierachie($alias2row); + if (5 == $hierachie or 6 == $hierachie) { + &hierachie_rm($alias2row); + &post($room, q[] . ×tring . " $alias hat $alias2row vom Oberw\344chter zum normalen Chatter degradiert ...", $alias); + } + else { + &post_prv($alias, "$alias2row ist kein Oberw\344chter und k\366nnen diese Rechte nicht entzogen werden!"); + } + &reload_html; + } + elsif ($cmd eq 'pw') { + my $pw2show = $cmd[1]; + if (-f "data/user/options/$pw2show") { + open PW, "; + close PW; + chomp $pw[0]; + &post_prv($alias, "$pw2show hat das Passwort $pw[0] !"); + &reload_html; + } + &post_prv($alias, "$pw2show existiert nicht in der Benutzerdatenbank!"); + &reload_html; + } + elsif ($cmd eq 'id' or $cmd eq 'agent') { + my $id2show = $cmd[1]; + if (-f "data/online/ident/$id2show") { + open ID, "; + close ID; + if ($cmd eq 'id') { + chomp $id[1]; + &post_prv($alias, "$id2show hat die Temp-ID $id[1] !"); + } + else { + chomp $id[2]; + &post_prv($alias, "$id2show verwendet $id[2] !"); + } + &reload_html; + } + &post_prv($alias, "$id2show ist nicht eingeloggt !"); + &reload_html; + } + elsif ($cmd eq 'cool') { + for ($i = 1; $i <= $#cmd; ++$i) { + $msg2post = $msg2post . ' ' . $cmd[$i]; + } + &post($room, '' . ×tring . " $msg2post", $alias); + &reload_html; + } + elsif ($cmd eq 'rev') { + for ($i = 1; $i <= $#cmd; ++$i) { + $msg2post = $msg2post . ' ' . $cmd[$i]; + } + $msg2post = reverse($msg2post); + &post($room, "$alias: $msg2post", $alias); + &reload_html; + } + } + } + } + } + my($alias2post, $msg2post, $action); + if ($cmd eq 'msg') { + $alias2post = $cmd[1]; + for ($i = 2; $i <= $#cmd; ++$i) { + $msg2post = $msg2post . ' ' . $cmd[$i]; + } + } + elsif ($cmd eq '') { + $alias2post = $whisper; + for ($i = 1; $i <= $#cmd; ++$i) { + $msg2post = $msg2post . ' ' . $cmd[$i]; + } + } + else { + $alias2post = $cmd; + for ($i = 1; $i <= $#cmd; ++$i) { + $msg2post = $msg2post . ' ' . $cmd[$i]; + } + } + $msg2post =~ s[/me/][$alias]g; + $msg2post =~ s[/m/][$alias]g; + if (-f "data/online/users/$alias2post" and not -f "data/online/rooms/$loginplace/$alias2post") { + &post_prv($alias, "Zu $alias2post gefl\374stert: $msg2post"); + &post_prv($alias2post, "$alias fl\374stert: $msg2post"); + &private_javascript($alias, $room, "parent.input.document.inf.whisper.value = '$alias2post';"); + &reload_html; + } + &post_prv($alias, qq[ Benutzer oder Befehl $alias2post ist nicht anwesend/verf\374gbar! Bitte den Befehl "/menu" eingeben, um das Chat-Menü zu öffnen.]); + &reload_html; +} +1; -- cgit v1.2.3