#!/usr/bin/perl -w # yChat - Copyright by Paul C. Bütow use CGI; $q = new CGI; require config; print $q->header(); ##################################### ##WELCHE SUB MUß AUSGEFÜHRT WERDEN?## ##################################### $alias = $q->param("alias"); $tmpid = $q->param("tmpid"); &secure_checkid($alias); $room = $q->param("room"); $col = $q->param("col"); $secol = $q->param("secol"); $tmp = $q->param("tmp"); $rmsg = \$q->param("msg"); $whisper = $q->param("whisper"); &reload_html("","change_colors") if ($q->param('var') eq "change_colors"); if ($tmp eq "away") { &zeit; &post($room,"($hours:$min:$sec) $alias hat sich zurück gemeldet ... "); } $$rmsg =~ s#<#<\;#g; if (substr($$rmsg,0,1) ne "/") { open(MSGFILE,">>data/msgs/$room"); open(PID,"$alias: $$rmsg<;\n"; my @pids = ; close MSGFILE; close PID; kill INT => @pids; &log("$alias: $$rmsg") if ($room eq "Cyberbar"); &reload_html($whisper,$tmp); } else { &cmd($$rmsg); } sub reload_html { # Wird neugeladen, wenn eine Nachricht getextet wird! my ($whisper,$action) = @_; print ""; print $q->end_html; } sub change_room { # Den Chat-Raum wechseln my ($method,$newroom,$oldroom,$alias2follow) = @_; open(RSTAT, "; close RSTAT; if ($rstat[0] eq "1\n") { &hierachie($alias); if ($hierachie eq "wa" || $hierachie eq "ow") { } else { &post_prv($alias,"Der Raum \"$newroom\" ist leider abgesperrt!"); &reload_html($whisper,$action); exit; } } open(MSGFILE,">>data/msgs/$room"); print MSGFILE "$alias<;".time."<;cr<;$newroom<;!<;\n"; close MSGFILE; $room = $oldroom; my $tmpstamp = time+5; &zeit; if ($method eq "j") { &post($room,"($hours:$min:$sec) $alias wechselt in den Raum \"$newroom\" ..."); $room = $newroom; &post($room,"($hours:$min:$sec) $alias kommt aus dem Raum \"$oldroom\" herein nach \"$newroom\" ..."); open(MSGFILE,">>data/msgs/$room"); print MSGFILE "$alias<;$tmpstamp<;!<;!<;($hours:$min:$sec) Du wechselst aus dem Raum \"$oldroom\" herein nach \"$newroom\" ...<;\n"; close MSGFILE; } elsif ($method eq "ju") { &post($room,"($hours:$min:$sec) $alias folgt \"$alias2follow\" in den Raum \"$newroom\" ..."); $room = $newroom; &post($room,"($hours:$min:$sec) $alias kommt aus dem Raum \"$oldroom\" und folgt \"$alias2follow\" herein nach \"$newroom\" ..."); open(MSGFILE,">>data/msgs/$room"); print MSGFILE "$alias<;$tmpstamp<;!<;!<;($hours:$min:$sec) Du folgst \"$alias2follow\" aus dem Raum \"$oldroom\" herein nach \"$newroom\" ...<;\n"; close MSGFILE; } open(PID,"; close PID; kill INT => @pids; unlink("data/online/rooms/$oldroom/$alias"); &rm_rstat($alias,$oldroom); &check_online; } sub prove_besetzer { # Prüfen, ob Benutzer Raumbesetzerrechte hat my ($r_alias,$r_room) = @_; $r_besetzer = "false"; open(DATEI,"; close DATEI; for($i=2;$i<=$#r_stat;$i++) { $r_besetzer = "true" if ($r_stat[$i] eq $r_alias || $r_stat[$i] eq $r_alias."\n"); } } sub cmd { # Alle Chatbefehle, die über input_html eingegeben werden können. $_[0] = $_[0]." "; $_[0] = substr($_[0], 1, length($_[0])-1); my @cmd = split(/ /, $_[0]); my $cmd = substr($_[0],0 , index($_[0], " ")); #############>- NORMALE CHATBEFEHLE ( Alphabetisch sortiert ) -< #############>- INFORMATIONEN ÜBER DAS SYSTEM AUSGEBEN -< if ($cmd eq "about") { &post_prv("$alias","Aktuelle Version ist $title und wurde am $datum aktuallisiert. Erstellt von Paul C. Bütow (2000 - 2001)."); &reload_html; exit; #############>- ABMELDEN MIT 'AWAY-NACHRICHT' -< } elsif ($cmd eq "away") { if ($tmp eq "away") { # Falls 2 mal hintereinander /away eingegeben wurde my $away_msg = undef; } for ($i=1; $i <= $#cmd; $i++) { $away_msg = $away_msg." ".$cmd[$i]; } &zeit; if ($tmp ne "autoaway") { &post($room,"($hours:$min:$sec) $alias meldet sich ab ($away_msg ) ..."); } else { &post($room,"($hours:$min:$sec) $alias wurde vom System abgemeldet ..."); } &reload_html($whisper,"away"); exit; #############>- EIGENEN CHATBILDSCHIRM LÖSCHEN -< } elsif ($cmd eq "clear") { &post_prv($alias,""); &reload_html; exit; #############>- FARBEN WECHSELN -< } elsif ($cmd eq "col") { $col = $cmd[1]; my $tmpsecol = $cmd[2]; if ($tmpsecol eq "") { $secol = $col } else { $secol = $tmpsecol; } open(OPTIONS,"; close OPTIONS; open(OPTIONS,">data/user/options/$alias"); print OPTIONS $options[0]."".$col."\n".$secol; close OPTIONS; &zeit; &post($room,"($hours:$min:$sec) $alias hat die Farbe gewechselt ..."); &reload_html($whisper,"change_colors"); exit; #############>- AKTUELLES DATUM UND URZEIT AUSGEBEN -< } elsif ($cmd eq "date") { &zeit; &post_prv("$alias","Heute ist der $day.$month. Jahr $year. Es ist genau $hours:$min Uhr und $sec Sekunden."); &reload_html; exit; #############>- EINEN NEUEN RAUM ERSTELLEN BZW. IN EINEN BESTEHENDEN RAUM WECHSELN -< } elsif ($cmd eq "j") { &change_room("j",$cmd[1],$room); &reload_html($whisper,"change_room"); exit; #############>- HANDELN -< } elsif ($cmd eq "me" || $cmd eq "m") { my $me_msg; for ($i=1; $i <= $#cmd; $i++) { $me_msg = $me_msg." ".$cmd[$i]; } if ($cmd eq "m") { &post($room,"$alias $me_msg"); } else { &post($room,"$alias $me_msg"); } &reload_html; exit; #############>- MEMO SCHREIBEN -< } elsif ($cmd eq "memo") { my $alias2memo = $cmd[1]; 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"); &zeit; open(MEMO,">>data/user/memos/$alias2memo") || &error("Konnte >>data/user/memos/$alias2memo nicht öffnen"); print MEMO "($day.$month. - $hours:$min:$sec) $alias hat Dir eine Memo hinterlassen: $memo_msg
\n"; close MEMO; &reload_html; exit; } &post_prv("$alias","$alias2memo existiert in der Datenbank nicht !"); &reload_html; exit; #############>- FLÜSTERN ( Auch mit '/' ) -< } elsif ($cmd eq "msg" || $cmd eq "") { my ($alias2post,$msg2post,$action) = ($cmd[1]); if ($cmd eq "msg") { for ($i=2; $i <= $#cmd; $i++) { $msg2post = $msg2post." ".$cmd[$i]; } $action = "whisper"; } else { $alias2post = $whisper; for ($i=1; $i <= $#cmd; $i++) { $msg2post = $msg2post." ".$cmd[$i]; } } if (-f "data/online/users/$alias2post") { &post_prv($alias2post,"$alias flüstert =>$msg2post"); &post_prv($alias,"Zu $alias2post geflüstert =>$msg2post"); &reload_html($alias2post,$action); exit; } &post_prv("$alias","$alias2post ist momentan nicht anwesend !"); &reload_html; exit; #############>- TOTALONLINEZEIT VON ALIAS ANZEIGEN -< } elsif ($cmd eq "online") { my $alias2prove= $cmd[1]; if (-f "data/user/options/$alias2prove") { open(ONLINE,"; close ONLINE; my $totaltime = sprintf("%.2f",($online / 60)); &post_prv("$alias","$alias2prove war insgesamt schon $totaltime Minuten online!"); } else { &post_prv("$alias","$alias2prove existiert nicht in der Benutzerdatenbank!"); } &reload_html; exit; #############>- DAS SYSTEM VERLASSEN -< } elsif ($cmd eq "q") { &reload_html($whisper,"quit"); &zeit; if ($tmp ne "autologout") { &post($room,"($hours:$min:$sec) $alias verläßt den Chat ... "); } else { &post($room,"($hours:$min:$sec) $alias wurde vom System automatisch ausgeloggt ... "); } sleep 1; &rm_alias($alias,$room); exit; #############>- DAS EIGENE GÄSTEBUCH LÖSCHEN -< } elsif ($cmd eq "rmgb") { unlink("data/user/gbooks/$alias"); &zeit; &post($room,"($hours:$min:$sec) $alias löscht sein gesamtes Gästebuch ..."); &reload_html; exit; #############>- SCHREIEN -< } elsif ($cmd eq "s") { my $msg2scream; for ($i=1; $i <= $#cmd; $i++) { $msg2scream = $msg2scream." ".$cmd[$i]; } my $msg2post = "\U$msg2scream"; &post($room,"$alias schreit: ".$msg2post.""); &reload_html; exit; #############>- SEHEN, WANN SICH ALIAS ZUM LETZTEN MAL EINGELOGT HAT -< } elsif ($cmd eq "seen") { my $alias2prove = $cmd[1]; if (-f "data/user/options/$alias2prove") { if (-f "data/user/lastlogin/$alias2prove") { open(LASTLOGIN,"; close LASTLOGIN; local $timestamp = sprintf("%.2f",((time() - $lastlogin) / 3600)); &post_prv("$alias","$alias2prove hat sich vor $timestamp Stunden zuletzt in das System eingelogt!"); } else { &post_prv("$alias","$alias2prove hat sich seit der Einführung dieses Befehls noch nie eingelogt!"); } } else { &post_prv("$alias","$alias2prove exsistiert nicht in der Benutzerdatenbank!"); } &reload_html; exit; #############>- ANZEIGEN WER SICH IM AKTUELLEN RAUM BEFINDET -< } elsif ($cmd eq "w") { open(RSTAT,"data/online/rstat/$room"); my @rstat = ; close RSTAT; chomp($rstat[1]); my $theme = "Raumthema:".$rstat[1] if ($rstat[1] ne undef); my $door = "[Abgesperrt!]" if ($rstat[0] eq "1\n"); my ($is,$nr) = ("t",0); opendir(DIR,"data/online/rooms/$room"); my @dir = readdir(DIR); closedir(DIR); my $personen; foreach(@dir) { if (-f "data/online/rooms/$room/$_") { $personen = $personen." ".$_; $nr++; } } &post_prv($alias,"Der aktuelle Raum: $room $theme $door ($nr) : $personen"); &reload_html; exit; #############>- ANZEIGEN WER SICH IM SYSTEM BEFINDET -< } elsif ($cmd eq "wc" || $cmd eq "wc/") { my $raum = $cmd[1]; my $personen; if ($raum eq "" && $cmd eq "wc") { opendir(USERS,"data/online/users"); my @users = readdir(USERS); close USERS; foreach(@users) { $personen = $personen." ".$_ 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 eingelogt: $personen"); } elsif ($raum eq "" && $cmd eq "wc/") { my $msg2post; opendir(DIR,"data/online/rooms"); my @dir = readdir(DIR); closedir(DIR); foreach(@dir) { if (-e "data/online/rooms/$_" && $_ ne ".." && $_ 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]."]: "; foreach $chatter (@dir2) { if (-f "data/online/rooms/$_/$chatter") { $msg2post = $msg2post."$chatter "; } } print ""; } } &post_prv("$alias","Folgende Räume sind offen:$msg2post
"); } elsif ($raum ne "") { my $personen; opendir(DIR,"data/online/rooms/$raum"); my @dir = readdir(DIR); closedir(DIR); foreach(@dir) { $personen = $personen." ".$_ 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\": $personen"); } &reload_html; exit; #############>- ANZEIGEN IN WELCHEN RAUM SICH JMD. BEFINDET BZW. JMD IN EINEN RAUM FOLGEN -< } elsif ($cmd eq "wj" || $cmd eq "ju") { my $alias2search = $cmd[1]; opendir(ROOMS,"data/online/rooms"); my @dir = readdir(ROOMS); closedir(ROOMS); foreach $raum (@dir) { opendir(DIR2,"data/online/rooms/$raum"); my @dir2 = readdir(DIR2); closedir(DIR2); foreach $user (@dir2) { if (-f "data/online/rooms/$raum/$user") { if ($user eq $alias2search) { if ($cmd eq "wj") { &post_prv("$alias","$alias2search befindet sich im Raum \"$raum\" !"); } else { &change_room("ju",$raum,$room,$alias2search); } &reload_html($whisper,"change_room"); exit; } } } } &post_prv("$alias","$alias2search ist nicht eingelogt !"); &reload_html; exit; #############>- RAUMNESETZER BEFEHLE ( Alphabetisch sortiert ) -< #############>- RAUM ABSCHLIESSEN/AUFSCHLIESSEN -< } elsif ($cmd eq "l") { &prove_besetzer($alias,$room); &hierachie($alias); if ($r_besetzer eq "true" || $hierachie eq "wa" || $hierachie eq "ow") { my $lock = "0\n"; &zeit; if ($room eq "Cyberbar") { &post($room,"($hours:$min:$sec) $alias sperrt den Raum ohne Erfolg ab ..."); } else { if ($r_stat[0] == 0) { $lock = "1\n"; &post($room,"($hours:$min:$sec) $alias sperrt den Raum ab ..."); } else { &post($room,"($hours:$min:$sec) $alias sperrt den Raum auf ..."); } 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; exit; #############>- RAUMBESETZER ERNENNEN -< } elsif ($cmd eq "su") { &prove_besetzer($alias,$room); &hierachie($alias); if ($r_besetzer eq "true" || $hierachie eq "wa" || $hierachie eq "ow") { 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; &hierachie($alias2su); &prove_besetzer($alias2su,$room); if ($r_besetzer eq "true" || $hierachie eq "wa" || $hierachie eq "ow") { &reload_html; &post_prv($alias,"$alias2su kann nicht zum Raumbesetzer ernannt werden. (Ist bereits RB, WÄ oder OW)"); exit; } &zeit; &post($room,"($hours:$min:$sec) $alias ernennt \"$alias2su\" zum Raumbesetzer ..."); open(DATEI,">>data/online/rstat/$room"); print DATEI $alias2su."\n"; close DATEI; &reload_html; exit; } } &post_prv($alias,"$alias2su kann nicht zum Raumbesetzer ernannt werden. (Ist nicht anwesend)"); } &reload_html; exit; #############>- RAUMBESETZER ENTNENNEN -< } elsif ($cmd eq "rsu") { &prove_besetzer($alias,$room); &hierachie($alias); if ($r_besetzer eq "true" || $hierachie eq "wa" || $hierachie eq "ow") { my $alias2rsu = $cmd[1]; open(DATEI,"; close DATEI; &prove_besetzer($alias2rsu,$room); if ($r_besetzer eq "true") { &zeit; &post($room,"($hours:$min:$sec) $alias entzieht \"$alias2rsu\" die Raumbesetzerrechte ..."); my $newrstat = $rstat[0].$rstat[1]; for ($i=2;$i<=$#r_stat;$i++) { $newrstat = $newrstat.$r_stat[$i] if ($r_stat[$i] ne $alias2rsu."\n"); } open(DATEI,">data/online/rstat/$room"); print DATEI $newrstat; close DATEI; } else { &post_prv($alias,"$alias2rsu ist kein Raumbesetzer und kann dieser Status auch nicht aberkannt werden !"); } } &reload_html; exit; #############>- RAUM EIN THEMA GEBEN -< } elsif ($cmd eq "t") { &prove_besetzer($alias,$room); &hierachie($alias); if ($r_besetzer eq "true" || $hierachie eq "wa" || $hierachie eq "ow") { my $theme; &zeit; if ($cmd[1] ne undef) { for ($i=1; $i <= $#cmd; $i++) { $theme = $theme." ".$cmd[$i]; } &post($room,"($hours:$min:$sec) $alias gibt dem Raum das Thema ( $theme ) ..."); } else { &post($room,"($hours:$min:$sec) $alias löscht das Thema des Raums ..."); } $theme = $r_stat[0].$theme."\n"; for ($i=2;$i<=$#r_stat;$i++) { $theme = $theme.$r_stat[$i]; } open(RSTAT,">data/online/rstat/$room"); print RSTAT $theme; close RSTAT; } &reload_html; exit; #############>- SUPERUSER BEFEHLE ( Alphabetisch sortiert ) -< #############>- ALIAS VERBANNEN -< } elsif ($cmd eq "ban") { &hierachie($alias); if ($hierachie eq "ow" || $hierachie eq "wa") { my $alias2ban = $cmd[1]; open(BAN,"; close BAN; if ($cmd[1] eq undef) { my $banned; local $nr = @ban; for ($i=0;$i<=$#ban;$i++) { $banned .= $ban[$i]; } &post_prv("$alias","Folgende Benutzer sind verbannt [$nr]: $banned"); &reload_html; exit; } elsif (-f "data/user/options/$alias2ban") { &hierachie($alias2ban); if ($hierachie eq "wa") { &post_prv("$alias","$alias2ban ist Wächter und kann nicht verbannt werden!"); &reload_html; exit; } elsif ($hierachie eq "ow") { &post_prv("$alias","$alias2ban ist Oberwächter und kann nicht verbannt werden!"); &reload_html; exit; } foreach $ban (@ban) { if ($ban eq $alias2ban."\n") { &post_prv("$alias","$alias2ban ist bereits verbannt!"); &reload_html; exit; } } &zeit; &post($room,"($hours:$min:$sec) $alias verbannt \"$alias2ban\" aus dem Chat ..."); open(BAN,">>data/ban"); print BAN $alias2ban."\n"; close BAN; &reload_html; exit; } &post_prv($alias,"$alias2ban kann nicht verbannt werden da Benutzername nicht existiert!"); &reload_html; exit; } #############>- ALIAS ENTBANNEN -< } elsif ($cmd eq "rban") { &hierachie($alias); if ($hierachie eq "ow" || $hierachie eq "wa") { my $alias2rban = $cmd[1]; open(BAN,"; close BAN; foreach $ban (@ban) { if ($ban eq $alias2rban."\n") { &zeit; &post($room,"($hours:$min:$sec) $alias entbannt \"$alias2rban\" ..."); my @ban2; foreach $ban (@ban) { push(@wa2,$wa) if ($ban ne $alias2rban."\n"); } open(BAN,">data/ban"); print BAN @ban2; close BAN; &reload_html; exit; } } &post_prv($alias,"$alias2rban ist nicht verbannt!"); &reload_html; exit; } #############>- IP # VON ALIAS ANZEIGEN LASSEN -< } elsif ($cmd eq "ip") { &hierachie($alias); if ($hierachie eq "ow" || $hierachie eq "wa") { 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; exit; #############>- ALIAS AUS DEM CHAT KATAPULTIEREN -< } elsif ($cmd eq "k") { &hierachie($alias); if ($hierachie eq "wa" || $hierachie eq "ow") { my $alias2kick = $cmd[1]; opendir(DIR,"data/online/rooms"); my @dir = readdir(DIR); closedir(DIR); foreach $raum (@dir) { opendir(DIR,"data/online/rooms/$raum"); my @dir2 = readdir(DIR); closedir(DIR); foreach $chatter (@dir2) { if ($chatter eq $alias2kick) { &hierachie($alias2kick); if ($hierachie eq "ow") { &post_prv("$alias","$alias2kick ist Oberwächter und kann nicht \"gekickt\" werden !"); } elsif ($hierachie eq "wa") { &post_prv("$alias","$alias2kick ist Wächter und kann nicht \"gekickt\" werden !"); } else { &post_prv("$alias2kick",""); &zeit; $_ = undef if ($room eq $raum); &post($room,"($hours:$min:$sec) $alias katapultiert \"$alias2kick\" aus dem Chat ...",$raum); &rm_alias($alias2kick,$raum); &check_online; } &reload_html; exit; } } } &post_prv("$alias","$alias2kick ist nicht anwesend und kann nicht \"gekickt\" werden !"); } &reload_html; exit; #############>- EINEN BENUTZER AUS DEM SYSTEM LÖSCHEN -< } elsif ($cmd eq "kill") { &hierachie($alias); if ($hierachie eq "ow") { my $alias2kill = $cmd[1]; &hierachie($alias2kill); if ($hierachie eq "ow") { &post_prv($alias,"$alias2kill ist Oberwächter und kann nicht aus dem System entfernt werden !"); } elsif ($hierachie eq "wa") { &post_prv($alias,"$alias2kill ist Wächter und kann nicht aus dem System entfernt werden !"); } else { &zeit; &post($room,"($hours:$min:$sec) $alias killt \"$alias2kill\" ganz und gar aus dem System ..."); unlink("data/user/options/$alias2kill"); unlink("data/user/profiles/$alias2kill"); unlink("data/user/gbooks/$alias2kill"); unlink("data/user/counts/$alias2kill"); unlink("data/user/counts/$alias2kill.online"); unlink("data/user/lastlogin/$alias2kill"); unlink("data/user/memos/$alias2kill"); } } &reload_html; exit; #############>- EINEN ANDEREN RAUM AUF-/ABSPERREN -< } elsif ($cmd eq "sl") { &hierachie($alias); if ($hierachie eq "ow" || $hierachie eq "wa") { my $sl_room = $cmd[1]; if (-e "data/online/rooms/$sl_room") { my $lock = "0\n"; &zeit; open(RSTAT,"; close RSTAT; if ($r_stat[0] == 0) { $lock = "1\n"; &post($room,"($hours:$min:$sec) $alias sperrt den Raum \"$sl_room\" von aussen ab ...",$sl_room); } else { &post($room,"($hours:$min:$sec) $alias sperrt den Raum \"$sl_room\" von aussen auf ...",$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; exit; } #############>- IN EINEN ANDEREN RAUM HINEINRUFEN -< } elsif ($cmd eq "ss") { &hierachie($alias); if ($hierachie eq "ow" || $hierachie eq "wa") { 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"; &zeit; &post($room,"($hours:$min:$sec) $alias ruft aus dem Raum \"$room\" hinein in den Raum \"$ss_room\": $msg2scream ...",$ss_room); &reload_html; exit; } else { &post_prv($alias,"Der Raum $ss_room existiert nicht!"); } &reload_html; exit; } #############>- EINEN ANDEREN RAUM EIN THEMA GEBEN -< } elsif ($cmd eq "st") { &hierachie($alias); if ($hierachie eq "wa" || $hierachie eq "ow") { my $st_room = $cmd[1]; if (-e "data/online/rooms/$st_room") { my $theme; &zeit; if ($cmd[2] ne undef) { for ($i=2; $i <= $#cmd; $i++) { $theme = $theme." ".$cmd[$i]; } &post($room,"($hours:$min:$sec) $alias gibt dem Raum \"$st_room\" das Thema ( $theme ) ...",$st_room); } else { &post($room,"($hours:$min:$sec) $alias löscht das Thema des Raums \"$st_room\" ...",$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; exit; #############>- SYSTEMNACHRICHT IN ALLE BESTEHENDEN RÄUME POSTEN -< } elsif ($cmd eq "sys") { &hierachie($alias); if ($hierachie eq "ow") { my $sys_msg; for ($i=1; $i <= $#cmd; $i++) { $sys_msg = $sys_msg." ".$cmd[$i]; } &zeit; $sys_msg = "($hours:$min:$sec) SYSTEMNACHRICHT: $sys_msg ..."; opendir(ROOMS,"data/msgs"); my @rooms = readdir(ROOMS); close(ROOMS); foreach(@rooms) { &post($_,$sys_msg); } &log($sys_msg); } &reload_html; exit; #############>- ALIAS ZUM WÄCHTER ERNNENNEN -< } elsif ($cmd eq "wa") { &hierachie($alias); if ($hierachie eq "ow") { my $alias2wa = $cmd[1]; &hierachie($alias2wa); if ($hierachie eq "wa") { &post_prv("$alias","$alias2wa ist bereits als Wächter eingetragen. Eine erneuerte Eintragung ist nicht möglich!"); &reload_html; exit; } elsif ($hierachie eq "ow") { &post_prv("$alias","$alias2wa ist bereits als Oberwächter eingetragen. Oberwächter können nicht gleichzeitig Wächter sein!"); &reload_html; exit; } if (-f "data/user/options/$alias2wa") { &zeit; &post($room,"($hours:$min:$sec) $alias ernennt \"$alias2wa\" zum Wächter ..."); open(WA,">>data/wa"); print WA $alias2wa."\n"; close WA; &reload_html; exit; } &post_prv($alias,"$alias2wa kann nicht zum Wächter ernannt werden da Benutzername nicht existiert!"); &reload_html; exit; } #############>- ALIAS DIE WÄCHTERRECHTE ENTZIEHEN -< } elsif ($cmd eq "rwa") { &hierachie($alias); if ($hierachie eq "ow") { my $alias2rwa = $cmd[1]; &hierachie($alias2rwa); if ($hierachie eq "wa") { &zeit; &post($room,"($hours:$min:$sec) $alias hat \"$alias2rwa\" vom Wächter zum normalen Chatter degradiert ..."); open(WA,"; close WA; my @wa2; foreach $wa (@wa) { push(@wa2,$wa) if ($wa ne $alias2rwa."\n"); } open(WA,">data/wa"); print WA @wa2; close WA; } else { &post_prv($alias,"$alias2rwa ist kein Wächter und können die Wächterrechte nicht entzogen werden!"); } &reload_html; exit; } #############>- ADMINISTRATORBEFEHLE -< #############>- ALIAS ZUM OBERWÄCHTER ERNENNEN -< } elsif ($cmd eq "ow" && $alias eq "Snooper") { my $alias2ow = $cmd[1]; &hierachie($alias2ow); if ($hierachie eq "wa") { &post_prv("$alias","$alias2ow ist bereits als Wächter eingetragen. Wächter können nicht gleichzeitig Oberwächter sein!"); &reload_html; exit; } elsif ($hierachie eq "ow") { &post_prv("$alias","$alias2ow ist bereits als Oberwächter eingetragen!"); &reload_html; exit; } if (-f "data/user/options/$alias2ow") { &zeit; &post($room,"($hours:$min:$sec) $alias ernennt \"$alias2ow\" zum Oberwächter ..."); open(OW,">>data/ow"); print OW $alias2ow."\n"; close OW; &reload_html; exit; } &post_prv($alias,"$alias2ow kann nicht zum Oberwächter ernannt werden da Benutzername nicht existiert!"); &reload_html; exit; #############>- ALIAS DIE OBERWÄCHTERRECHTE ENTZIEHEN -< } elsif ($cmd eq "row" && $alias eq "Snooper") { &hierachie($alias); if ($hierachie eq "ow") { my $alias2row = $cmd[1]; &hierachie($alias2row); if ($hierachie eq "ow") { &zeit; &post($room,"($hours:$min:$sec) $alias hat \"$alias2row\" vom Oberwächter zum normalen Chatter degradiert ..."); open(OW,"; close OW; my @ow2; foreach $ow (@ow) { push(@ow2,$ow) if ($ow ne $alias2row."\n"); } open(OW,">data/ow"); print OW @ow2; close OW; } else { &post_prv($alias,"$alias2row ist kein Oberwächter und können die Wächterrechte nicht entzogen werden!"); } &reload_html; exit; } #############>- PASSWORD EINES BENUTZERS ANZEIGEN LASSEN -< } elsif ($cmd eq "pw" && $alias eq "Snooper") { my $pw2show = $cmd[1]; if (-f "data/user/options/$pw2show") { open(PW,"; close PW; &post_prv($alias,"$pw2show hat das Passwort \"".$pw[0]."\" !"); &reload_html; exit; } &post_prv($alias,"$pw2show existiert nicht in der Benutzerdatenbank !"); &reload_html; exit; #############>- SYSTEMMELDUNG POSTEN -< } elsif ($cmd eq "cool" && $alias eq "Snooper" || $alias eq "Peacemaker") { for ($i=1; $i <= $#cmd; $i++) { $msg2post = $msg2post." ".$cmd[$i]; } &zeit; &post($room,"($hours:$min:$sec) $msg2post"); &reload_html; exit; #############>- ENDE DER CHATBEFEHLE -< } &post_prv($alias,"Der Chatbefehl /$cmd existiert nicht oder Du hast keine Berechtigung diesen Befehl auszuführen!"); &reload_html; }