#! /usr/local/bin/perl # #ゆいちゃっとLite(pref.cgi) # #pref.cgiは、chat.cgiとenter.cgiで、共通して使われるサブルーチン集です。 sub init{#初期設定など $chat_file = './chat.dat'; #チャットログ(ファイル名はなるべく変更しておくこと。) $method = 'GET';#やっぱり、GETよねぇ〜 #退室後のページは、他のHPにも変えられます。 $endpage= 'http://www.big.or.jp/~vampire/Lite/chat.cgi?window=50&reload=150&mode=checked'; $title = 'ゆいちゃっとLite'; $body='
'; $max = 50;#ログの最大行数 $host=$ENV{'REMOTE_HOST'} || $ENV{'REMOTE_ADDR'}; $metacode = '';#SJIS認識させる #ロックファイルを使用するなら、#を消す。 #$lockfile = './lock/lock-file.lock'; #$retry = 5; #while (!symlink(".", $lockfile)) { #if (--$retry <= 0) { print "Status: 204\n\n"; unlink($lockfile); exit; } #sleep(1); #} #ロックファイルここまで }#init END sub ended{#exitを行うためだけのもの。 # unlink($lockfile);#ロックファイルを使用するなら、#を消す。 print "Content-type: text/plain\n\n $_[0] \n"if($_[0]);#この行は削除可です。 exit; }#ended END sub decode{#一般的なデコード&変数への代入 $buffer = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/\t/ /g;$value =~ s/</g;$value =~ s/\n//g; $FORM{$name} = $value; } $name = $FORM{'name'}; &jcode'convert(*name,'sjis');$name =~ s/ //g; $name =~ s/ //g; $name=$host if (!$name); $mode = $FORM{'mode'}; $reload = $FORM{'reload'}; $email = $FORM{'email'}; $window =$FORM{'window'}; }#decode END sub jikan{#$dateに時刻を代入します。 $times=time;#18時間時差があるなら、$times=time+18*60*60とする。 ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime($times); $min = "0$min" if ($min < 10); $month++; $youbi = ('日','月','火','水','木','金','土') [$wday]; $date = "$month/$mday($youbi)$hour:$min"; }#jikan END sub readlog{ #配列@linesにログを読み込む open(DB,"$chat_file") || &ended('$chat_file open error'); seek(DB,0,0); @lines =