sub postmessage { if (not -e "data/online/rooms/$room/$alias" and $tmp ne 'autoaway' and $tmp ne 'autologout') { &post_prv($alias, "Du befindest Dich nicht im Raum $room und kannst dort auch keine Nachrichten posten!"); &reload_html; } elsif (length $msg > 300) { &post_prv($alias, "Deine Nachricht enth\344lt zu viele Zeichen. Maximal sind 300 Zeichen erlaubt."); &reload_html; } if ($tmp eq 'away') { &rm_away($alias, $room); &post($room, '' . ×tring . " $alias hat sich zur\374ck gemeldet ... ", $alias); &private_javascript($alias, $room, q[parent.input.document.inf.tmp.value = 'notaway';]); } $msg =~ s/>data/msgs/$room"; if (not $msg =~ s[/me/][$alias]g || $msg =~ s[/m/][$alias]g) { print MSGFILE '!<;' . time . "<;!<;!<;$alias: $msg
<;$alias<;\n"; } else { $msg =~ s[/me/][$alias]g; $msg =~ s[/m/][$alias]g; print MSGFILE '!<;' . time . "<;!<;!<;$msg
<;$alias<;\n"; } close MSGFILE; opendir PID, "data/online/pids/$room"; my(@pids) = readdir PID; closedir PID; foreach $_ (@pids) { kill 'USR1', $_ if -f "data/online/pids/$room/$_"; } &log("$alias: $msg") if $room eq $standardroom; &reload_html; } else { &command($msg, $tmp); } } sub post { my($room, $msg2post, $alias, $secroom) = @_; my(@rooms) = $room; @rooms = ($room, $secroom) if $room ne $secroom; foreach my $theroom (@rooms) { open MSGFILE, ">>data/msgs/$theroom"; print MSGFILE '!<;' . time . "<;!<;!<;$msg2post
<;$alias<;\n"; close MSGFILE; opendir PID, "data/online/pids/$theroom"; my(@pids) = readdir PID; closedir PID; foreach $_ (@pids) { kill 'USR1', $_ if -f "data/online/pids/$theroom/$_"; } } &log($msg2post) if $room eq $standardroom; } sub post_prv { my($alias2post, $msg2post) = @_; my $roomofalias = &get_room($alias2post); return 'false' if not $roomofalias; open MSGFILE, ">>data/msgs/$roomofalias"; print MSGFILE "$alias2post<;" . time . "<;!<;!<;$msg2post
<;$alias<;\n"; close MSGFILE; opendir PID, "data/online/pids/$roomofalias"; my(@pids) = readdir PID; closedir PID; foreach $_ (@pids) { kill 'USR1', $_ if -f "data/online/pids/$roomofalias/$_"; } return 'true'; } sub post_strmsg { my($alias, $room, $command, $action) = @_; open MSGFILE, ">>data/msgs/$room"; print MSGFILE "$alias<;" . time . "<;$command<;$action<;!<;!<;\n"; close MSGFILE; opendir PID, "data/online/pids/$room"; my(@pids) = readdir PID; closedir PID; foreach $_ (@pids) { kill 'USR1', $_ if -f "data/online/pids/$room/$_"; } } 1;