summaryrefslogtreecommitdiff
path: root/0.2.5a2/main.pl
diff options
context:
space:
mode:
Diffstat (limited to '0.2.5a2/main.pl')
-rw-r--r--0.2.5a2/main.pl633
1 files changed, 633 insertions, 0 deletions
diff --git a/0.2.5a2/main.pl b/0.2.5a2/main.pl
new file mode 100644
index 0000000..3934423
--- /dev/null
+++ b/0.2.5a2/main.pl
@@ -0,0 +1,633 @@
+#!/usr/bin/perl -w
+
+# yChat - Copyright by Paul C. Bütow
+
+use CGI; # CGI-Modul laden
+
+$q = new CGI;
+
+require config; # config.pm in Dokument laden
+
+print
+ $q->header(); # HTTP-Header erzeugen
+
+#####################################
+##WELCHE SUB MUß AUSGEFÜHRT WERDEN?##
+#####################################
+if ($var eq "input_html") {
+ &input_html;
+} elsif ($var eq "post_msg") {
+ &post_msg;
+} elsif ($var eq "change_room") {
+ &change_room;
+} else {
+ &error("Parameter fehlt");
+}
+
+sub input_html { # Eingabemaske für den Chat.
+ my ($reload,$action,$whisper,$lastmsg) = @_;
+ $action = $q->param('action') if ($action eq "");
+ if ($tmp eq "away") {
+ &zeit;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias meldet sich zurück ... </font></i>");
+ } elsif ($tmp eq "login") {
+ &remove_rooms;
+ &zeit;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias hat den Chat betreten ...</font></i>");
+ }
+ if ($action ne "" && $action ne "whisper" && $action ne "away") {
+ print "<html><head><script language=\"JavaScript\">";
+ if ($action eq "change_room") {
+ print "open(\"online.pl?alias=$alias&room=$room\",\"online\");";
+ print "open(\"main.pl?var=input_html&alias=$alias&room=$room&col=$col&secol=$secol\",\"input\");";
+ print "open(\"htdocs.pl?alias=$alias&var=menu_html&room=$room&col=$col&secol=$secol\",\"menu\");";
+ } elsif ($action eq "change_colors") {
+ print "open(\"htdocs.pl?alias=$alias&var=menu_html&room=$room&col=$col&secol=$secol\",\"menu\");";
+ }
+ print "</script></head><body background=\"$gfxpath/unten.gif\" bgcolor=ffa500>";
+ } else {
+ print "<html><body background=\"$gfxpath/unten.gif\" bgcolor=ffa500>";
+ }
+ print "<form action=\"main.pl\">";
+ print "<input type=\"hidden\" name=\"tmp\" value=\"away\">" if ($action eq "away");
+ print <<END;
+ <input type="hidden" name="var" value="post_msg">
+ <input type="hidden" name="alias" value="$alias">
+ <input type="hidden" name="room" value="$room">
+ <input type="hidden" name="col" value="$col">
+ <input type="hidden" name="secol" value="$secol">
+ <input type="hidden" name="id" value="$whisper">
+ <input type="hidden" name="lastmsg" value="$lastmsg">
+ <input size="70" name="msg">
+ <input type="submit" value="Texten"></form>
+END
+if ($reload eq "true") {
+print <<END;
+ <script language="JavaScript">
+ <!--
+ document.forms[0].msg.focus();
+ //-->
+ </script>
+END
+}
+print
+ $q->end_html;
+}
+
+sub post_msg { # Wird aufgerufen, wenn aus input_html eine Eingabe gepostet wurde.
+ $msg =~ s#<#&lt\;#g; # HTML-Tags deaktivieren
+ $msg =~ s#kilahu#yChat#g;
+ $msg =~ s#ooperle#ooper!#g;
+ if (substr($msg,0,1) ne "/") { # Überprüfen, ob Befehl oder Nachricht
+ $msg = "<b><font color=$col>$alias: <font color=$secol>".$msg."</font></font></b>";
+ $msg =~ s#"#''#g; # " in '' umtauschen für den Befehl "//"
+ &input_html("true","",$id,$msg); # -> Reload=true, Action=none, Whisper=$id
+ &secure_checkip($alias,1);
+ &post($msg);
+ } else {
+ &secure_checkip($alias,2);
+ &cmd($msg);
+ }
+}
+
+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], " "));
+ my ($reload,$action,$whisper) = ("true","",$id);
+#############>- NORMALE CHATBEFEHLE ( Alphabetisch sortiert ) -<
+#############>- DER LETZTEN ZUGEFLÜSTERTEN PERSON NOCHEINMAL FLÜSTERN -<
+ if ($cmd eq "/") {
+ &post($q->param('lastmsg'));
+#############>- INFORMATIONEN ÜBER DAS SYSTEM AUSGEBEN -<
+ } elsif ($cmd eq "about") {
+ &post_prv("$alias","<font size=2 color=ffffff>Aktuelle Version ist $title und wurde am $datum aktuallisiert. Created by Paul C. Bütow 2k.</font>");
+#############>- ABMELDEN MIT 'AWAY-NACHRICHT' -<
+ } elsif ($cmd eq "away") {
+ if ($tmp eq "away") { # Falls 2 mal hintereinander /away eingegeben wurde
+ $tmp = "";
+ }
+ for ($i=1; $i <= $#cmd; $i++) {
+ $tmp = $tmp." ".$cmd[$i];
+ }
+ &zeit;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias meldet sich ab (<font color=red>$tmp</font> ) ...</i></font>");
+ $action = "away";
+#############>- EIGENEN CHATBILDSCHIRM LÖSCHEN -<
+ } elsif ($cmd eq "clear") {
+ &post_prv("$alias","<script language=\"JavaScript\">window.open(\"push.pl?alias=$alias&room=$room&var=clear_screen\",\"main\");</script>");
+#############>- FARBEN WECHSELN -<
+ } elsif ($cmd eq "col") {
+ $col = $cmd[1];
+ my $tmpsecol = $cmd[2];
+ if ($tmpsecol eq "") {
+ $secol = $col
+ } else {
+ $secol = $tmpsecol;
+ }
+ &read_file("data/user/options/$alias");
+ my @pro = <DATEI>;
+ close DATEI;
+ &write_file_new("data/user/options/$alias");
+ print DATEI $pro[0]."".$col."\n".$secol;
+ close DATEI;
+ &zeit;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=$col>$alias</font> <font color=$secol> hat die Farbe gewechselt ...</font></i>");
+ $action = "change_colors";
+#############>- AKTUELLES DATUM UND URZEIT AUSGEBEN -<
+ } elsif ($cmd eq "date") {
+ &zeit;
+ &post_prv("$alias","<font size=2 color=ffffff>Heute ist der $day.$month. Jahr $year. Es ist genau $hours:$min Uhr und $sec Sekunden.</font>");
+#############>- EINEN NEUEN RAUM ERSTELLEN BZW. IN EINEN BESTEHENDEN RAUM WECHSELN -<
+ } elsif ($cmd eq "j") {
+ &change_room("j",$cmd[1],$room);
+ $action = "change_room";
+#############>- HANDELN -<
+ } elsif ($cmd eq "me" || $cmd eq "m") {
+ for ($i=1; $i <= $#cmd; $i++) {
+ $me_msg = $me_msg." ".$cmd[$i];
+ }
+ if ($cmd eq "m") {
+ &post("<i><font color=$col>$alias <font color=$secol>$me_msg</font></font></i>");
+ } else {
+ &post("<i><font color=$col>$alias $me_msg</font></i>");
+ }
+#############>- FLÜSTERN ( Auch mit '/' ) -<
+ } elsif ($cmd eq "msg" || $cmd eq "") {
+ my ($alias2post,$msg2post) = ($cmd[1],"");
+ if ($cmd eq "msg") {
+ for ($i=2; $i <= $#cmd; $i++) {
+ $msg2post = $msg2post." ".$cmd[$i];
+ }
+ } else {
+ $alias2post = $id;
+ for ($i=1; $i <= $#cmd; $i++) {
+ $msg2post = $msg2post." ".$cmd[$i];
+ }
+ }
+ &list_dir("data/online/users");
+ foreach(@dir) {
+ if ($_ eq $alias2post) {
+ &write_file("data/msgs/$alias2post");
+ print DATEI "<i><font color=$col>$alias flüstert <font color=ffffff>=></font><font color=$secol>$msg2post</font></font></i><br>\n";
+ close DATEI;
+ &write_file("data/msgs/$alias");
+ print DATEI "<i><font color=$col>Zu $alias2post geflüstert <font color=ffffff>=></font><font color=$secol>$msg2post</font></font></i><br>\n";
+ close DATEI;
+ &input_html($reload,"",$alias2post);
+ exit;
+ }
+ }
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2post <font color=ffffff>ist momentan nicht anwesend !</font></font>");
+#############>- DAS SYSTEM VERLASSEN -<
+ } elsif ($cmd eq "q") {
+ &post_prv("$alias","<script language=\"JavaScript\">window.open(\"index.pl?tmp=quit\",\"_top\");</script>");
+ sleep 1;
+ &remove_online($alias,$room);
+ &secure_removeip($alias);
+ unlink("data/msgs/$alias");
+ exit;
+#############>- SCHREIEN -<
+ } elsif ($cmd eq "s") {
+ my ($msg2scream,$msg2post);
+ for ($i=1; $i <= $#cmd; $i++) {
+ $msg2scream = $msg2scream." ".$cmd[$i];
+ }
+ $msg2post = "\U$msg2scream";
+ &post("<font color=$col><i>$alias schreit:</i> <b><font color=$secol>".$msg2post."</font></font></b>");
+#############>- ANZEIGEN WER SICH IM AKTUELLEN RAUM BEFINDET -<
+} elsif ($cmd eq "w") {
+ &list_dir("data/online/rooms/$room");
+ &read_file("data/online/rstat/$room");
+ my @rstat = <DATEI>;
+ close DATEI;
+ my $door = "[<font color=red>Abgesperrt!</font>]" if ($rstat[0] eq "1\n");
+ my ($is,$nr) = ("t",0);
+ foreach(@dir) {
+ if (-f "data/online/rooms/$room/$_") {
+ $personen = $personen." ".$_;
+ $nr++;
+ }
+ }
+ &post_prv("$alias","<font size=2 color=ffffff>$room $door ($nr) [".$rstat[1]."] : <font color=ffa500>$personen</font></font>");
+
+ #############>- ANZEIGEN WER SICH IM SYSTEM BEFINDET -<
+ } elsif ($cmd eq "wc" || $cmd eq "wc/") {
+ $raum = $cmd[1];
+ if ($raum eq "" && $cmd eq "wc") {
+ &list_dir("data/online/users");
+ foreach(@dir) {
+ $personen = $personen." ".$_ if (-f "data/online/users/$_");
+ }
+ my $nr = ($#dir-1);
+ my ($nrs,$is) = ("","ist");
+ if ($nr != 1) {
+ $nrs = "en";
+ $is = "sind";
+ }
+ &post_prv("$alias","<font size=2 color=ffffff>$nr Person$nrs $is insgesamt eingelogt: <font color=ffa500>$personen</font></font>");
+ } elsif ($raum eq "" && $cmd eq "wc/") {
+ my $msg2post;
+ &list_dir("data/online/rooms");
+ foreach(@dir) {
+ if (-e "data/online/rooms/$_" && $_ ne ".." && $_ ne ".") {
+ &list_dir("data/online/rooms/$_",2);
+ &read_file("data/online/rstat/$_");
+ my @rstat = <DATEI>;
+ close DATEI;
+ 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]."] </font></b></td><td><font size=2 color=ffffff>";
+ foreach $chatter (@dir2) {
+ if (-f "data/online/rooms/$_/$chatter") {
+ $msg2post = $msg2post."$chatter ";
+ }
+ }
+ print "</font></td>";
+ }
+ }
+ &post_prv("$alias","<font size=2 color=ffffff>Folgende Räume sind offen:</font><table>$msg2post</table>");
+ } elsif ($raum ne "") {
+ my $personen;
+ &list_dir("data/online/rooms/$raum");
+ 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","<font size=2 color=ffffff> $nr Person$nrs befinde$is sich im Raum \"$raum\": <font color=ffa500>$personen</font></font>");
+ }
+#############>- ANZEIGEN IN WELCHEN RAUM SICH JMD. BEFINDET BZW. JMD IN EINEN RAUM FOLGEN -<
+ } elsif ($cmd eq "wj" || $cmd eq "ju") {
+ my $alias2search = $cmd[1];
+ &list_dir("data/online/rooms");
+ foreach $raum (@dir) {
+ &list_dir("data/online/rooms/$raum",2) if (-d "data/online/rooms/$raum");
+ foreach $user (@dir2) {
+ if (-f "data/online/rooms/$raum/$user") {
+ if ($user eq $alias2search) {
+ if ($cmd eq "wj") {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2search <font color=ffffff>befindet sich im Raum \"$raum\" !</font></font>");
+ } else {
+ $action = "change_room";
+ &change_room("ju",$raum,$room,$alias2search);
+ }
+ &input_html($reload,$action,$whisper);
+ exit;
+ }
+ }
+ }
+ }
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2search <font color=ffffff> ist nicht eingelogt !</font></font>");
+#############>- RAUMNESETZER BEFEHLE ( Alphabetisch sortiert ) -<
+#############>- RAUM ABSCHLIESSEN/AUFSCHLIESSEN -<
+ } elsif ($cmd eq "l") {
+ &prove_besetzer($alias,$room);
+ &hirachie($alias);
+ if ($r_besetzer eq "true" || $hirachie eq "wa" || $hirachie eq "ow") {
+ my $lock = "0\n";
+ &zeit;
+ if ($room eq "Cyberbar") {
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias sperrt den Raum ohne Erfolg ab ...</font></i>");
+ } else {
+ if ($r_stat[0] == 0) {
+ $lock = "1\n";
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias sperrt den Raum ab ...</font></i>");
+ } else {
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias sperrt den Raum auf ...</font></i>");
+ }
+ for ($i=1;$i<=$#r_stat;$i++) {
+ $lock = $lock.$r_stat[$i];
+ }
+ write_file_new("data/online/rstat/$room");
+ print DATEI $lock;
+ close DATEI;
+ }
+ }
+#############>- RAUMBESETZER ERNENNEN -<
+ } elsif ($cmd eq "su") {
+ &prove_besetzer($alias,$room);
+ &hirachie($alias);
+ if ($r_besetzer eq "true" || $hirachie eq "wa" || $hirachie eq "ow") {
+ my $alias2su = $cmd[1];
+ &list_dir("data/online/rooms/$room");
+ foreach(@dir) {
+ if ($_ eq $alias2su) {
+ &read_file("data/online/rstat/$room");
+ my @rstat = <DATEI>;
+ close DATEI;
+ &hirachie($alias2su);
+ &prove_besetzer($alias2su,$room);
+ if ($r_besetzer eq "true" || $hirachie eq "wa" || $hirachie eq "ow") {
+ &input_html($reload,$action,$whisper);
+ &post_prv($alias,"<font color=ffa500>$alias2su</font> <font color=ffffff> kann nicht zum Raumbesetzer ernannt werden. (Ist bereits RB, WÄ oder OW)</font>");
+ exit;
+ }
+ &zeit;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias ernennt \"$alias2su\" zum Raumbesetzer ...</font></i>");
+ &write_file("data/online/rstat/$room");
+ print DATEI $alias2su."\n";
+ close DATEI;
+ &input_html("true",$action,$whisper);
+ exit;
+ }
+ }
+ &post_prv($alias,"<font color=ffa500>$alias2su</font> <font color=ffffff> kann nicht zum Raumbesetzer ernannt werden. (Ist nicht anwesend)</font>");
+ }
+#############>- RAUMBESETZER ENTNENNEN -<
+ } elsif ($cmd eq "rsu") {
+ &prove_besetzer($alias,$room);
+ &hirachie($alias);
+ if ($r_besetzer eq "true" || $hirachie eq "wa" || $hirachie eq "ow") {
+ my $alias2rsu = $cmd[1];
+ &read_file("data/online/rstat/$room");
+ my @rstat = <DATEI>;
+ close DATEI;
+ &prove_besetzer($alias2rsu,$room);
+ if ($r_besetzer eq "true") {
+ &zeit;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias entzieht \"$alias2rsu\" die Raumbesetzerrechte ...</font></i>");
+ 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");
+ }
+ &write_file_new("data/online/rstat/$room");
+ print DATEI $newrstat;
+ close DATEI;
+ } else {
+ &post_prv($alias,"<font size=2 color=ffa500>$alias2rsu <font color=ffffff>ist kein Raumbesetzer und kann dieser Status auch nicht aberkannt werden !</font></font>");
+ }
+ }
+#############>- RAUM EIN THEMA GEBEN -<
+ } elsif ($cmd eq "t") {
+ &prove_besetzer($alias,$room);
+ &hirachie($alias);
+ if ($r_besetzer eq "true" || $hirachie eq "wa" || $hirachie eq "ow") {
+ my $theme;
+ for ($i=1; $i <= $#cmd; $i++) {
+ $theme = $theme." ".$cmd[$i];
+ }
+ &zeit;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias gibt dem Raum das Thema <font color=red>( $theme )</font> ...</font></i>");
+ $theme = $r_stat[0].$theme."\n";
+ for ($i=2;$i<=$#r_stat;$i++) {
+ $theme = $theme.$r_stat[$i];
+ }
+ write_file_new("data/online/rstat/$room");
+ print DATEI $theme;
+ close DATEI;
+ }
+#############>- SUPERUSER BEFEHLE ( Alphabetisch sortiert ) -<
+#############>- ALIAS VERBANNEN BZW. ENTBANNEN -<
+ } elsif ($cmd eq "ban" || $cmd eq "rban") {
+ &hirachie($alias);
+ if ($hirachie eq "ow") {
+ my ($alias2handle,$registriert) = $cmd[1];
+ &list_dir("data/user/options");
+ foreach(@dir) {
+ $registriert = "true" if ($_ eq $alias2handle);
+ }
+ if ($registriert ne "true") {
+ if ($cmd eq "ban") {
+ if ($alias2handle ne "") {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2handle <font color=ffffff> existiert nicht in der Benutzerdatenbank und kann so nich verbannt werden !</font></font>");
+ } else {
+ &read_file("data/ban");
+ my @banned = <DATEI>;
+ my ($benutzer);
+ my $nr = $#banned+1;
+ close DATEI;
+ foreach(@banned) {
+ $benutzer = $benutzer." ".$_;
+ }
+ &post_prv("$alias","<font size=2 color=ffffff>Folgende Benutzer sind verbannt [$nr]: <font color=ffa500>$benutzer</font></font>");
+ }
+ } else {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2handle <font color=ffffff> existiert nicht in der Benutzerdatenbank und kann so nicht \"entbannt\" werden !</font></font>");
+ }
+ &input_html("true");
+ exit;
+ }
+ &read_file("data/ban");
+ my @banlist = <DATEI>;
+ close DATEI;
+ foreach(@banlist) {
+ if ($_ eq "$alias2handle\n") {
+ if ($cmd eq "ban") {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2handle <font color=ffffff> ist bereits verbannt worden !</font></font>");
+ } else {
+ my $banned = "false";
+ foreach(@banlist) {
+ $banned = "true" if ($_ eq "$alias2handle\n");
+ }
+ if ($banned eq "true") {
+ my @newbanlist;
+ foreach(@banlist) {
+ push @newbanlist,$_ if ($_ ne "$alias2handle\n");
+ }
+ &write_file_new("data/ban");
+ print DATEI @newbanlist;
+ close DATEI;
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2handle <font color=ffffff> wurde soeben \"entbannt\" !</font></font>");
+ }
+ }
+ &input_html("true");
+ exit;
+ }
+ }
+ if ($cmd eq "ban") {
+ &hirachie($alias2handle);
+ if ($hirachie ne "ow") {
+ &write_file("data/ban");
+ print DATEI "$alias2handle\n";
+ close DATEI;
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2handle <font color=ffffff> wurde soeben verbannt und kann sich nun nichtmehr in den Chat einloggen !</font>");
+ } else {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2handle <font color=ffffff> ist ein Oberwächter und kann deshalb nicht verbannt werden !</font></font>");
+ }
+ } else {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2handle <font color=ffffff> konnte nicht \"entbannt\" werden, da <font color=ffa500>$alias2handle</font> garnicht verbannt war !</font></font>");
+ }
+ }
+#############>- IP # VON ALIAS ANZEIGEN LASSEN -<
+ } elsif ($cmd eq "ip") {
+ &hirachie($alias);
+ if ($hirachie eq "ow") {
+ my $alias2prove = $cmd[1];
+ &list_dir("data/online/ident");
+ foreach(@dir) {
+ if ($_ eq $alias2prove) {
+ &read_file("data/online/ident/$_");
+ local $ipnr = <DATEI>;
+ close DATEI;
+ &post_prv("$alias","<font size=2 color=ffa500>$_ <font color=ffffff>hat die IP-Nummer $ipnr !</font></font>");
+ }
+ }
+ }
+#############>- ALIAS AUS DEM CHAT KATAPULTIEREN -<
+ } elsif ($cmd eq "k") {
+ &hirachie($alias);
+ if ($hirachie eq "wa" || $hirachie eq "ow") {
+ my $alias2kick = $cmd[1];
+ &list_dir("data/online/rooms");
+ foreach $raum (@dir) {
+ &list_dir("data/online/rooms/$raum",2);
+ foreach $chatter (@dir2) {
+ if ($chatter eq $alias2kick) {
+ &hirachie($alias2kick);
+ if ($hirachie eq "ow") {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2kick <font color=ffffff> ist Oberwächter und kann nicht \"gekickt\" werden !</font></font>");
+ } elsif ($hirachie eq "wa") {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2kick <font color=ffffff> ist Wächter und kann nicht \"gekickt\" werden !</font></font>");
+ } else {
+ &post_prv("$alias2kick","<script language=\"JavaScript\">window.open(\"index.pl?tmp=kick\",\"_top\");</script>");
+ &zeit;
+ $_ = undef if ($room eq $_);
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias katapultiert \"$alias2kick\" aus dem Chat ...</font></i>",$_);
+ &remove_online($alias2kick,$_,"kick");
+ &secure_removeip($alias2kick);
+ }
+ &input_html("true");
+ exit;
+ }
+ }
+ }
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2kick <font color=ffffff> ist nicht anwesend und kann nicht \"gekickt\" werden !</font></font>");
+ }
+#############>- EINEN BENUTZER AUS DEM SYSTEM LÖSCHEN -<
+ } elsif ($cmd eq "kill") {
+ &hirachie($alias);
+ if ($hirachie eq "ow") {
+ my $alias2kill = $cmd[1];
+ &hirachie($alias2kill);
+ if ($hirachie eq "ow") {
+ &post_prv($alias,"<font size color=ffa500>$alias2kill</font> <font color=ffffff>ist Oberwächter und kann nicht aus dem System entfernt werden !</font>");
+ } elsif ($hirachie eq "wa") {
+ &post_prv($alias,"<font size color=ffa500>$alias2kill</font> <font color=ffffff>ist Wächter und kann nicht aus dem System entfernt werden !</font>");
+ } else {
+ unlink("data/user/options/$alias2kill");
+ unlink("data/user/profiles/$alias2kill");
+ unlink("data/user/gbooks/$alias2kill");
+ unlink("data/user/counts/$alias2kill");
+ unlink("data/user/lastlogin/$alias2kill");
+ &zeit;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias killt \"$alias2kill\" ganz und gar aus dem System ...</font></i>");
+ }
+ }
+ #############>- SYSTEMNACHRICHT IN ALLE BESTEHENDEN RÄUME POSTEN -<
+ } elsif ($cmd eq "sys") {
+ &hirachie($alias);
+ if ($hirachie eq "ow") {
+ for ($i=1; $i <= $#cmd; $i++) {
+ $sys_msg = $sys_msg." ".$cmd[$i];
+ }
+ &zeit;
+ &post_all("<i><font color=ffffff>($hours:$min:$sec)</font></i> <b><font size=2 color=red>SYSTEMNACHRICHT</font></b><i><font color=ffffff>: $sys_msg ...</font></i>");
+ }
+#############>- ALIAS ZUM WÄCHTER ERNNENNEN BZW. ZUM NORMALEN CHATTER DEGRADIEREN -<
+ } elsif ($cmd eq "wa" || $cmd eq "rwa") {
+ &hirachie($alias);
+ if ($hirachie eq "ow") {
+ &zeit;
+ my $alias2handle = $cmd[1];
+ if ($cmd eq "wa") {
+ my $anerkennen = "false";
+ &list_dir("data/user/options");
+ foreach(@dir) {
+ if ($_ eq $alias2handle) {
+ $anerkennen = "true";
+ }
+ }
+ if ($anerkennen eq "true") {
+ &hirachie($alias2handle);
+ if ($hirachie eq "wa") {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2handle <font color=ffffff>ist bereits als Wächter eingetragen. Eine erneuerte Eintragung ist nicht möglich!</font></font>");
+ } elsif ($hirachie eq "ow") {
+ &post_prv("$alias","<font size=2 color=ffa500>$alias2handle <font color=ffffff>ist schon als Oberwächter eingetragen. Oberwächter können nicht gleichzeitig Wächter sein!</font></font>");
+ } else {
+ &write_file("data/wa");
+ print DATEI $alias2handle."\n";
+ close DATEI;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font><font color=ffa500> $alias ernennt \"$alias2handle\" zum Wächter ...</font></i>");
+ }
+ } else {
+ &post_prv($alias,"<font size=2 color=ffa500>$alias2handle <font color=ffffff>kann nicht zum Wächter ernannt werden da Benutzername nicht existiert!</font></font>");
+ }
+ } elsif ($cmd eq "rwa") {
+ &read_file("data/wa");
+ my @wafile = <DATEI>;
+ close DATEI;
+ my $aberkennen = "false";
+ foreach(@wafile) {
+ if ($_ ne "$alias2handle\n") {
+ push @newafile,$_;
+ } else {
+ $aberkennen = "true";
+ }
+ }
+ &write_file_new("data/wa");
+ print DATEI @newafile;
+ close DATEI;
+ if ($aberkennen eq "true") {
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias hat \"$alias2handle\" vom Wächter zum normalen Chatter degradiert ...</font></i>");
+ } else {
+ &post("<font size=2 color=ffa500>$alias2handle <font color=ffffff>konnte der Wächterstatus nicht aberkannt werden da Benutzer kein Wächter ist!</font></font>");
+ }
+ }
+ }
+#############>- ENDE DER CHATBEFEHLE -<
+}
+&input_html($reload,$action,$whisper);
+}
+
+sub change_room { # Den Chat-Raum wechseln
+ my ($method,$newroom,$oldroom,$alias2follow) = @_;
+ # Überprüfen, ob Alias Raum betreten darf
+ &read_file("data/online/rstat/$newroom");
+ my @rstat = <DATEI>;
+ close DATEI;
+ if ($rstat[0] eq "1\n") {
+ &hirachie($alias);
+ if ($hirachie eq "wa" || $hirachie eq "ow") {
+ } else {
+ &post_prv("$alias","<font size=2 color=ffffff>Der Raum \"<font color=ffa500>$newroom</font>\" ist leider abgesperrt!</font>");
+ &input_html("true",$action,$id);
+ exit;
+ }
+ }
+ $room = $oldroom;
+ &secure_checkip($alias); # IP Nummer überprüfen
+ &zeit; # Zeit 'erneuern'
+ if ($method eq "j") {
+ unlink("data/online/rooms/$oldroom/$alias");
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias wechselt in den Raum \"$newroom\" ...</font></i>");
+ $room = $newroom;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias kommt aus dem Raum \"$oldroom\" herein nach \"$newroom\" ...</font></i>");
+ &post_prv("$alias","<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>Du wechselst aus dem Raum \"$oldroom\" herein nach \"$newroom\" ...</font></i>");
+ } elsif ($method eq "ju") {
+ unlink("data/online/rooms/$oldroom/$alias");
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias folgt \"$alias2follow\" in den Raum \"$newroom\" ...</font></i>");
+ $room = $newroom;
+ &post("<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>$alias kommt aus dem Raum \"$oldroom\" und folgt \"$alias2follow\" herein nach \"$newroom\" ...</font></i>");
+ &post_prv("$alias","<i><font color=ffffff>($hours:$min:$sec)</font> <font color=ffa500>Du folgst \"$alias2follow\" aus dem Raum \"$oldroom\" herein nach \"$newroom\" ...</font></i>");
+ }
+ # Sicherheitshalber Alias erneuert entf.
+ unlink("data/online/rooms/$oldroom/$alias");
+ &rm_rstat($oldroom,$alias);
+ &rm_rooms;
+}
+
+sub prove_besetzer { # Prüfen, ob Benutzer Raumbesetzerrechte hat
+ my ($r_alias,$r_room) = @_;
+ $r_besetzer = "false";
+ &read_file("data/online/rstat/$r_room");
+ @r_stat = <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");
+ }
+} \ No newline at end of file