#!/usr/bin/perl #入室ページ表示 # 99/06/05 update(v5.0) by 普通 #==================================================================== #ご協力を頂いた方 #oidon"; # $roomdisp2 = ""; $roomdisp = ""; $roomdisp2 = ""; ######################################### } else { $roomdisp = $bhf_roomname; $roomdisp2 = $bhf_roomname; } if (($in{'end'}) || ($room_count eq '1')) { $end = "?roomno=$roomno&end=$in{'end'}"; if ($bhf_bkurl) {$admin_url = $bhf_bkurl;} else {$admin_url = $url1; } } else {$admin_url = $url1; } #リンク元チェック if ($http_ref =~ /chat_top\./i) {;} else {$link_print = <<"__EOF__";

ZooChat Ver:$ver
Support HomePage:ZooChat広場
__EOF__ } #1部屋モード確認or貸し部屋モード if (($room_count eq 1) || ($in{'end'} eq '1')) { if ($ranking) { $disp9 = "

  • 発言ランキング";} if ($func_prof) { $disp8 = "
  • プロフィール一覧・更新/登録";} if ($func_rmenv) { $disp7 = "
  • 部屋動作モード一覧";} if ($func_lglst) { $disp6 = "
  • 参加履歴一覧";} if ($func_bordw) { $disp5 = "
  • 待ち合わせ掲示板";} $oneroom_msg = <<"__EOF__";
    1. 現在のご利用人数等の確認は適宜リロードして下さい。 $disp5 $disp6 $disp9 $disp8 $disp7
    2. 管理者ページへ戻る。

    __EOF__ } print "$title2\n"; print<<"__EOF__"; $bhf_pgbody

    ここは、$title - $roomdispです。


    $oneroom_msg
    お名前
    __EOF__ if ($func_prof) { print "個人キー:\n"; if ($prof_env eq '1') {print "(プロフィール登録されてる方は省略不可です)
    \n";} else {print "
    \n";} } if ($bhf_roompass || $bhf_roomenvi1) { print "入室パスワード :
    \n";} print "発言内容の色を選択してください。
    \n"; $dsw = 0; foreach $ccolor (@ccolor) { if ($dsw eq 0) { if ($c_color) { print "$ccolor_smp\n"; if (($c_color) && ($c_color eq $ccolor)) {;} else {print "$ccolor_smp\n"; } } else { print "$ccolor_smp\n"; } } else { if (($c_color) && ($c_color eq $ccolor)) {;} else { print "$ccolor_smp\n"; } } $dsw = 1; } print<<"__EOF__";
    __EOF__ if ($ds_seq) { print<<"__EOF__"; 『はい』 『いいえ』 ”ささやき”は受けますか?
    __EOF__ } else {print "\n";} ##################################################Option:001 by Add Start # if (!($bhf_roomenvd eq '2')) { # print<<"__EOF__"; #『はい』 #『いいえ』 #”語り掛け”は受けますか?
    #__EOF__ # } ##################################################Option:001 by Add End if ($ds_java) { print<<"__EOF__"; 『はい』 『いいえ』 JavaScriptは利用しますか?
    __EOF__ } else {print "\n";} if ($ds_frame) { print<<"__EOF__"; 『はい』 『いいえ』 フレームは利用しますか?
    __EOF__ } else {print "\n";} if ($ds_cook) { print<<"__EOF__"; 『はい』 『いいえ』 クッキーは利用しますか?
    __EOF__ } else {print "\n";} print<<"__EOF__";
    __EOF__ $rom = 1; if (!$bhf_roomenvi1 && !$bhf_roomenvi2 && !$bhf_roompass && $bhf_imaxcnt eq '') {;} elsif (!$bhf_roomenvi2 && $bhf_roomenvi1 eq '1') { $d_msg1 = "
    ご案内>プライベート設定されています、入室には入室パスワードが必要です。
    "; $d_msg1 .= "ご案内>入室パスワードは管理人までお問い合わせ下さい。
    ";} elsif (!$bhf_roomenvi2 && $bhf_roomenvi1 eq '2') { $d_msg1 = "
    ご案内>参加者パスワード設定されています、入室には入室パスワードが必要です。
    "; if ($memcnt > 0) { $d_msg1 .= "ご案内>入室パスワードは最初に入室された方に問い合わせ願います。
    "; } else { $d_msg1 .= "ご案内>入室パスワードは最初に入室する方が設定出来ます。
    ";} if ($memcnt > 0) { $d_msg .= "ご案内>入室者がいらっしゃますのでROM出来ません。
    \n"; $rom = 0; } else {;} } elsif ($bhf_roomenvi2 && $bhf_roomenvi1 eq '1') { $d_msg1 = "
    ご案内>プライベート設定されています、入室には入室パスワードが必要です。
    "; $d_msg1 .= "ご案内>入室パスワードは管理人までお問い合わせ下さい。
    "; $d_msg1 .= "ご案内>又、プロフィール登録されている方のみ入室が可能\です。
    ";} elsif ($bhf_roomenvi2 && $bhf_roomenvi1 eq '2') { $d_msg1 = "
    ご案内>参加者パスワード設定されています、入室には入室パスワードが必要です。
    "; if ($memcnt > 0) { $d_msg1 .= "ご案内>入室パスワードは最初に入室された方に問い合わせ願います。
    "; } else { $d_msg1 .= "ご案内>入室パスワードは最初に入室する方が設定出来ます。
    ";} $d_msg1 .= "ご案内>又、プロフィール登録されている方のみ入室が可能\です。
    "; if ($memcnt > 0) { $d_msg .= "ご案内>入室者がいらっしゃますのでROM出来ません。
    \n"; $rom = 0; } else {;} } elsif ($bhf_roomenvi2) { $d_msg1 = "
    ご案内>プロフィール登録されている方のみ入室が可能\です。
    ";} elsif ($bhf_roompass) { $d_msg1 = "
    ご案内>入室パスワードが設定されています。
    ";} if ($bhf_roomenvd) { $rom = 0; if ($d_msg1) {$d_msg1 .= "ご案内>ROMは出来ません。
    ";} else {$d_msg1 = "
    ご案内>ROMは出来ません。
    ";} } if ($bhf_imaxcnt || $bhf_imaxcnt eq 0) { if ($d_msg1) { $d_msg1 .= "ご案内>入室は$bhf_imaxcntまで可能\です。(在室者人数:$memcnt人)
    "; if ($bhf_imaxcnt eq $memcnt) { $d_msg1 .= "ご案内>現在は満室で入室出来ません。
    \n";} else {;} } else { $d_msg1 = "
    ご案内>入室は$bhf_imaxcntまで可能\です。(在室者人数:$memcnt人)
    "; if ($bhf_imaxcnt eq $memcnt) { $d_msg1 .= "ご案内>現在は満室で入室出来ません。
    \n";} } } #print "$d_msg1\n"; if ($d_msg1) {print "$d_msg1\n";} if ($rom eq 0) { if ($bhf_roomenvd eq '2') {;} else {&busy_color();} } else {&room_disp();} #------------------------------------------------------------ if ($bhf_roomenvd eq '2') {;} elsif (($bhf_roomenvd eq '1') || ($bhf_roomenvi1 eq '2') && ($memcnt > 0)) { print<<"__EOF__";
    __EOF__ } else { print<<"__EOF__";
    __EOF__ } #----------------------------------------------------------- print<<"__EOF__";
    __EOF__ #1部屋モード確認or貸し部屋モード if ($room_count eq 1) {$setroom = '001';} elsif ($in{'end'} eq '1') {$setroom = $roomno;} if ($setroom) { print<<"__EOF__";
    管理専用
    __EOF__ } print<<"__EOF__"; $link_print __EOF__ exit(0); } #入室者/利用中発言色の表示 sub busy_color { if ($memcnt eq 0) {return;} $dsw = 0; foreach (@busy_color) { next if (!($_)); ($busy_chatname,$busy_color) = split(/|/); if ($memb_list eq 1) { if ($dsw eq 0) { print "
    ご案内>現在の入室者は$busy_chatnameさん\n"; $dsw = 1; } else {print "、$busy_chatnameさん\n";} }else{ if ($dsw eq 0) { print "
    ご案内>現在の利用中発言色は$ccolor_smp\n"; $dsw = 1; } else {print "/$ccolor_smp\n";} } } print "です。
    \n"; } #発言表示 sub room_disp { $lcnt = 0; if ($rom_disp) {&rom_disp();} &ReadComment ($roomno); foreach (@cf_list) { next if /【(.+):(\d+)】/; s///g; s///g; print $bhf_line, $_; last if (++$lcnt > $dmax); } } #ROM表示 sub rom_disp { $rom_dsw = '0'; $rom_count = @rom_list; if ($rom_count eq 0) {return;} if ($rom_nmmd eq '1') { print "ご案内>ROM中!さんが$rom_count人、いらっしゃいます〜。
    \n"; } else { foreach (@rom_list) { if ($rom_dsw eq '0') { print "ご案内>現在のROMさんは『$_』"; $rom_dsw = '1'; } else {print "『$_』";} } print "です。
    \n"; } } #自動強制退出 sub room_clean { &LockReadHeader($roomno); ($thf_roomname,$thf_intime,$thf_outtime,$thf_memcnt,$thf_page,$thf_ccolor,$thf_roomenv,$thf_roompass,$thf_bkurl,$thf_yobi1,$thf_yobi2,$thf_yobi3) = split(/||\n/,$hf_list); ($thf_roomenvi1,$thf_roomenvi2,$thf_roomenvo,$thf_roomenvd,$thf_imaxcnt) = split(/,/,$thf_roomenv); #部屋属性・入室:参加者パスワード設定時はパスワードを消す if ($thf_roomenvi1 eq '2') {$thf_roompass = ''; $hf_list = "$thf_roomname|$thf_intime|$thf_outtime|0|$thf_page|$thf_ccolor|$thf_roomenv|$thf_roompass|$thf_bkurl|$thf_yobi1|$thf_yobi2|$thf_yobi3\n"; } &UnlockWriteHeader($roomno); #部屋属性・退室後=ログ消去は会話ログを消去。 if ($thf_roomenvo) { &DeleteComment ($roomno); &WriteComment ($roomno,"ご案内>発言ログは自動初期化(退室忘れ検出)しました。
    \n"); } } #参加者・ROM精査 sub rom_proc { $memcnt = 0; $fupdate = 0; $rom_reg = '1'; &LockReadMember($roomno); foreach (@mf_list) { ($tmf_roomno,$tmf_roomname,$tmf_chatname,$tmf_inenv,$tmf_inproc,$tmf_yobi) = split(/||\n/); ($tmf_ipaddr,$tmf_intime,$tmf_latime,$tmf_agent,$tmf_profno,$tmf_yobi21) = split(/,/,$tmf_inproc); if ($tmf_ipaddr eq 'ROM') { $timewk = time - $tmf_intime; if ($timewk > $rom_time) {$_ = '';} elsif ($tmf_chatname eq $rom_name) {$_ = '';} else {push (@rom_list,$tmf_chatname);} } else { $timewk = time - $tmf_latime; if ($timewk > $aout_time) { $_ = ''; $fupdate = 1; } elsif ($tmf_ipaddr eq $ipaddr) { ($tmf_ccolor,$tmf_seq,$bmf_java,$tmf_yobi11,$tmf_yobi12) = split(/,/,$tmf_inenv); push (@busy_color,"$tmf_chatname|$tmf_ccolor"); $memcnt++; $rom_reg = '0'; } else { ($tmf_ccolor,$tmf_seq,$bmf_java,$tmf_yobi11,$tmf_yobi12) = split(/,/,$tmf_inenv); push (@busy_color,"$tmf_chatname|$tmf_ccolor"); $memcnt++; } } } if ($rom_reg eq '1') { unshift(@mf_list,"$roomno|$bhf_roomname|$rom_name|,,,,|ROM,$times,,,,|,|\n"); push (@rom_list,$rom_name); } &UnlockWriteMember($roomno); } #部屋属性取得 sub roomset { &ReadHeader($roomno); ($bhf_roomname,$bhf_intime,$bhf_outtime,$bhf_memcnt,$bhf_page,$bhf_ccolor,$bhf_roomenv,$bhf_roompass,$bhf_bkurl,$bhf_yobi1,$bhf_yobi2,$bhf_yobi3) = split(/||\n/,$hf_list); $bhf_page =~ s/body/BODY/gi; @page_set = split(/,/,$bhf_page); if ($bhf_page =~ /.+BODY.+BODY.+/) { if ($bgmode eq '1') {$bhf_pgbody = $page_set[0];} else {$bhf_pgbody = $page_set[1];} $bhf_line = $page_set[2]; } else { $bhf_pgbody = $page_set[0]; $bhf_line = $page_set[1]; } ($bhf_roomenvi1,$bhf_roomenvi2,$bhf_roomenvo,$bhf_roomenvd,$bhf_imaxcnt) = split(/,/,$bhf_roomenv); @ccolor = split(/,/,$bhf_ccolor); } sub get_cookie { # クッキーを取得 $cookies = $ENV{'HTTP_COOKIE'}; @pairs = split(/;/,$cookies); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ s/ //g; $DUMMY{$name} = $value; } @pairs = split(/,/,$DUMMY{'Zoo_Chat'}); foreach $pair (@pairs) { ($name, $value) = split(/:/, $pair); $COOKIE{$name} = $value; } $c_chatname = $COOKIE{'name'}; #お名前 if ($COOKIE{'seq'} eq 'no') {$c_seq_no = 'CHECKED';} #ささやき受け可否 else {$c_seq_yes = 'CHECKED';} # if ($COOKIE{'java'} eq 'no') {$c_java_no = 'CHECKED';} #Java利用する、しない else {$c_java_yes = 'CHECKED';} # if ($COOKIE{'frame'} eq 'no') {$c_frame_no = 'CHECKED';} #フレーム利用する、しない else {$c_frame_yes = 'CHECKED';} # if ($COOKIE{'color'}) {$c_color = $COOKIE{'color'};}#発言文字色 } #アクセス制限チェック sub ng_check { $a_ng = '0'; foreach(@ng_ipa){if($ENV{'REMOTE_ADDR'} =~ /^$_/){$a_ng = '1';}} foreach(@ng_rmh){if($ENV{'REMOTE_HOST'} =~ /^$_/){$a_ng = '1';}} if($a_ng eq '1'){ print "Content-type: text/html\n"; print "Status: 401\n\n"; exit(0);} } sub error { print "$title2\n"; print<<"__EOF__"; $hp_bcolor
    このスクリプトを動作させる為の情報が不足しています。
    __EOF__ exit(0); }