#!/usr/local/bin/perl ;# 簡易CHAT version 4.0(フリーソフト) ;# ;# Script written by Kazu.Y ;# Created on: 26/FEB/96 ;# Last Modified on: 24/SEP/97 ;# I can be reached at: rescue@ask.or.jp ;# Scripts Found at: http://www.ask.or.jp/~rescue/ # 注意!これ以前のバージョンとのデータ互換はありません. #----------------# # 初期設定 # #----------------# #◆minichat.datのパス設定 # den.cgiと同じ場所に設置する場合はこのままでよい. $chat_file = './den.dat'; #◆名称 $title = '七つの海の伝言板'; #◆設定 $body = ''; #◆チャット表示行 $max = '100'; #◆画面に挿入するリンクURL $modoru = 'http://ww3.tiki.ne.jp/~kyocho/index.htm'; #◆画面に挿入するリンクの名称 $modoru_name = 'トップページでござる'; #◆入力方式 (標準:post その他:get) $method = 'post'; #◆日本語コード変換ライブラリ # den.cgiと同じ場所に設置する場合はこのままでよい. require '../jcodeLE.pl'; #◆メッセージ $msg1 = '何か書いていってくだされ'; $msg2 = 'タグはA,FONT,IMGのみ使えます'; #---------------------------------------------------------------------------- #■時間処理 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $mon++; $date_now = sprintf("%2d/%2d %02d:%02d",$mon,$mday,$hour,$min); #■入力処理 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $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; &jcode'convert(*value,'sjis'); #$value =~ s//>/g; #許可タグをエスケープ $value =~ s/$title\n"; print "$body\n"; print "
\n"; print "$title

\n"; print "$msg1

\n"; print "[$modoru_name]\n"; print "

\n"; print "$msg2
\n"; print "
\n"; if ($FORM{'name'} eq '') { print "おなまえ
\n"; } else { print "\n"; print "$FORM{'name'} > \n"; } print "

\n"; if (!open(IN,"$chat_file")) { &error('システムエラー','チャットファイルが開けません.'); } @DATA = ; close(IN); @DATA = reverse(@DATA); foreach $data (@DATA) { if ($data =~ /(.*)\,(.*)\,(.*)\,(.*)\,(.*)/) { $date = $1; $name = $2; $chat = $3; $email = $4; $host = $5; } else { next; } chop($email) if $email =~ /\n$/; $chat =~ s/\0/\,/g; if ($name eq 'きょちょ') { print "$name > $chat ($date $host)
\n"; } else { print "$name > $chat ($date $host)
\n"; } } # このスクリプトの著作権表示(かならず表示してください) print "

MiniCHAT v4.0 is Free.

\n"; print "

\n"; exit; sub write { if (!open(DB,"$chat_file")) { &error('システムエラー','チャットファイルが開けません.'); } @lines = ; close(DB); #オリジナルここから #$host = $ENV{'REMOTE_HOST'}; #$addr = $ENV{'REMOTE_ADDR'}; #if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; } #ここまで $addr = $ENV{'REMOTE_ADDR'}; $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); $axs = @lines; if ($axs >= $max) { shift(@lines); } push(@lines,"$date_now\,$FORM{'name'}\,$FORM{'chat'}\,$FORM{'email'}\,$host\n"); if (!open(DB,">$chat_file")) { &error('システムエラー','チャットファイルへ記録できません.'); } print DB @lines; close(DB); } sub error { print "$title\n"; print "$body\n"; print "

$_[0]

\n"; print "

$_[1]

\n"; print "ブラウザの[戻る]ボタンを押して前の画面に移動してください.

\n"; print "\n"; exit; }