======================================================= ゆいちゃっとPro 1.0について 1997年4月5日 ======================================================= ◆必ずお読み下さい。 ご利用になる場合は下記の事項を承諾の上でお願いします。 承諾できない場合スクリプトのご利用は固く禁じます。 ・無断で転載、譲渡してはならない。(最新版をダウンロードしてもらうためです..) ・動作は利用する側の責任としいかなる損害も作者は責任を持たない。 ・チャットをホームページ公開後には作者宛にメールで報告する。 (バグ情報、バージョンアップ等の連絡のため...。) ・ライセンス表記を書き換えてはならない。そして表示しなければならない。 (多くの人がスクリプトを入手できるようにするためです..) ・メール報告時には、チャットへのリンクを希望するか明記してくださいませ。 ======================================================= ゆいちゃっとPro 1.0マニュアル 1997年4月5日 ======================================================= ◆チャットの設置方法(必読) ◆カスタマイズ方法 ◆CGIファイルを別のディレクトリへ ◆仕様およびバグ ◆どうしても動作しない場合 ◆作者からの一言 ======================================================= チャットの設置方法 ======================================================= (1)ファイルの確認 ダウンロードして入手すべきファイルの総数はmanual.txtとオプションCGIなどを含め 8あります。 chat.cgi.txt, enter.cgi.txt, pref.cgi.txt, jcodeLE.pl.txt, index.html.txt, tool.cgi.txt, kill.cgi.txt, manual.txtです。 (2)入手したファイル名の.txtを削除し、ファイル名を変更します。 chat.cgi.txt -> chat.cgi 書き込み&ログ表示 enter.cgi.txt -> enter.cgi クッキー記憶&入室メッセージ処理 pref.cgi.txt -> pref.cgi サブルーチン集 jcodeLE.pl.txt -> jcodeLE.pl 日本語コードコンバータjcode.plの機能限定版 index.html.txt -> index.html フレーム表示&フレーム機能非対応ブラウザの入室画面 tool.cgi.txt -> tool.cgi ロムチェック&発言ランキングの表示 kill.cgi.txt -> kill.cgi アクセス制限設定 (3)XXX.cgiファイルのインタプリタ行(先頭行)の修正 ファイル名末尾が".cgi"のファイル全てのインタプリタ行をサーバ上のPerlのパスに書き換える必要があります。サーバにより違いますのでわからない場合はサーバの管理人にお尋ね下さい。 例: #!/usr/bin/perl #!/usr/local/bin/perl 等 --- メモ --- "pref.cgi"は直接は実行されないので、インタプリタ行は書き換える必要ありません。 (4)データを記録するための空のファイルをエディタ(ワープロ)で作成します。 具体的には、改行を一つくらい入れて保存すれば良いです。 chat_log,sanka_log,rank.dat,killfile の4個です。 chat_log = ログ ( HTML形式) sanka_log = メンバー他 ( TAB(\t)区切り形式 ) rank.dat = 発言ランキング ( TAB(\t)区切り形式 ) killfile = アクセス制限設定(でも、アクセス制限を利用しなければ、必要ありません。) (5)ファイルのアップロードとパーミッションの変更 サーバに任意のディレクトリ(例えば、chatという名前のディレクトリとか...)を作成しファイルをTEXT形式(アスキー形式)でアップロードします。 (転送のやり方が分からない...とか、パーミションが分からない...という方は、いろいろ各自で調べてくださいね。) そして、パーミッション値を変更します。 ファイル名 値 chat_log = 666 sanka_log = 666 killfile = 666 rank.dat = 666 (サーバによっては、606でないとダメかもしれません。) ロックファイル用ディレクトリ(ロックファイルを用いる場合のみ) ディレクトリ名 値 lock = 777 チャットでは、多少ファイルが壊れても構わないと思いますが、 あまりに頻発する場合は、試しましょう。 ファイル名 値 chat.cgi = 755 enter.cgi = 755 tool.cgi = 755 kill.cgi = 755 シェル上からならば"chmod 755 *cgi"とでもして下さい。 pref.cgi = 644 jcodeLE.pl = 644 index.html = 644 通常は上のファイルのパーミッション値を変更する必要はありません。 ----- メモ ----- XXX.cgiファイルは705でもかまいません。サーバの設定によっては755でなければ動作しない場合もあります。 705にしても同じサーバの利用者はCGIを経由されると見る事ができますけど..。 ◆上記の必要最低限の設定を行った後、作動を確認してください。 余計なカスタマイズを先に行いますと、エラーの原因がわかりにくくなります。(涙) =======================================================          カスタマイズ方法 ======================================================= とりあえず、うまく作動することができたら、少しずつ変更しましょう。 ◆変数 pref.cgiファイルのinit関数で設定されている変数を書き換えます。 $title = チャットの名前 $body = 背景色など $endpage = 退室後に表示されるページ $max = 保存するログの最大行数 入室メッセージは、enter.cgi、退室メッセージは、chat.cgiで変更します。 名前の色のデフォルト値(red)、日付の形式は、pref.cgiにあります。 ◆index.htmlファイル index.htmlファイルのゆいちゃっとや、ゆいちゃっとも忘れずに書き換えます。 ◆画面レイアウトなど chat.cgiファイルのwrite関数で定義される$valueを書き換える事により発言表示のされかたをかえる事ができます。ただし、関数をみても理解できない場合は不用意に書き換えないで下さい。 また、の3つの0を適当な値に変えるといいかもしれません。 index.htmlファイルの で、marginwidth=4 marginheight=4 の値もレイアウトに影響します。 ======================================================= CGIファイルを別のディレクトリへ ======================================================= HTMLファイルと CGIファイルを別々のディレクトリに置かなければならない方のみお読み下さい。 ◆index.htmlファイルで記述されている CGIへのリンク部分を、全て書き換えて下さい。 例:(以下のは私の場合...) ◆データファイルとCGIファイルを別々のディレクトリに置く場合 pref.cgiファイルの初期設定の部分を書き換えて下さい。 例: $chat_file = './chat_log'; を下のようにする。 $chat_file = '/home/usr/yui/html/chat/chat_log'; ここで、/home/usr/yui/html/chat/chat_logといった完全なパス(ファイルの位置)は、Telnetで、chat_logのあるディレクトリに移動し、pwdと入力すると分かります。 ◆JavaScirptエラーがでる場合、enter.cgi2というものが配布されてますので、 そちらで試してください。(osk.threeweb.ad.jpの一部の人向け...) ======================================================= 仕様およびバグ ======================================================= ◆コマンド機能 チャット上で、cutと発言すると、張られた画像を削除できます。 clearと発言すると、自分の発言を消去できます。 commandXXXと発言すると、ログファイル中でXXXを含む行を削除します。 rankingclearと発言すると、ランキングファイルをクリアします。 commandや、rankingclearという単語は他の単語にかえましょう。 sankaと発言すると、参加者ファイルを初期化します。1人の参加者が 2人になってしまったときなどに実行してくださいね。 ◆ログファイル ログ内容は、スクリプトを簡潔にするために、HTML形式になってます。 また、多重アクセス時にはファイルが損傷(ログが一部消失)することがあります。 (一応、ロックファイルによる排他処理を考えてますけど、効果がないという話...) ◆JavaScript 自動消去(オートクリア)は、ブラウザによっては作動しません。 ◆GET or POSTメソッド? 一応、GETのみ対応になってます。私はPOSTが嫌いなんです...。あまり知られていないようですけど、 POSTの場合、わたしのMacが一時的にフリーズするんだもん。POSTで用いたい場合は、 sub decode内をすこし書き換えて下さい。 ◆発言ランキング かなり以前にレスキューさんが用いていたアルゴリズムと同じものです。 ちょっと問題があるかもしれません。でも、個人的には、ランキングはいらないと思ってます。 chat.cgi中の、&count;および、sub count{・・・}#count ENDを削除すると良いでしょう。 ◆クッキーの期限 設定しているクッキーは1999/11/9まで有効です。11/9になる前に、 もっと未来の日付に設定しましょう。(これも、ある種の2000年問題かしら。笑) ======================================================= どうしても動作しない場合 ======================================================= まず、下記の項目を参考にして下さい。 ◆CGIが利用可能であるか。 ◆ファイル名が正確であるか(大文字、小文字の違いにも注意)。 ◆パーミッションはあっているか。 ◆CGIスクリプトのインタプリタ行(先頭行)があっているか。 ◆不用意な書き換えを行わなかったか。 4月現在、作動環境のちがいによる原因についてデータの蓄積がありません。 上記5項目について確認したうえで、まだ、うまく設置できない場合は、メールにより相談に応じたいと思います。 (しかし、忙しいので回答はいつになるかわかりません..) 以下の項目すべてについて詳しい状況を連絡くださいませ。 ◆チャット設置URL ◆パソコンの利用環境(マックorウィンor...でも、私はマックしか知りません...) ◆Telnetが利用可能であるか。 ◆Telnetが利用可能である場合、シェル上で、スクリプトを実行した場合どうなるか。 ◆インターネットからアクセスした場合、どのような問題がおきるのか。 ◆CGIを実行した際に、データファイルへの書き込み内容はどうなっているか。 単に”エラーがでます。うまくいきません。”だけでは、対策の立てようがないので.. ご面倒でもよろしくお願いします。 (ついでに、各CGIファイルについて、chat.cgi.txt,enter.cgi.txt,のような名前のファイルもアップロードしておいてくださると助かります。) ======================================================= 作者からの一言 ======================================================= ◆ソースの美しさ チャットに有用な機能の多くを持たせた上で、スクリプトの数および長さを切り詰めてあります。 もし、このほうがスマートな処理だ、こっちのほうが速い等ありましたら是非教えて下さるとうれしいです。 ◆著作権.... 一応、ゆいちゃっと(http://www.cup.com/yui/chat/)の管理人である私がすべての権利を所有する..わけですけど..。ネット上で公開されているさまざまなスクリプトを参考にさせて頂きましたので、それらのHP所有者さまに感謝いたします。また、ゆいちゃっとの機能向上にアイデアを下さった池田さん、マークさん、チャンドラさん、Shutokさん、ほんとにどうもありがとうです〜。(笑) ◆謝辞 なおJavaScriptによる発言欄の自動消去はMihara氏が教えて下さいました。既に、Mihara氏は御自分で完成させていたのですが、それを移植する事を許可して下さいました。この場を借りて厚く御礼を申し上げます。 jcodeLE.plはKazumasa Utashiro氏作のフリーソフトjcode.plを修正して利用しています。 Name Yui Suzuki MailAddres yui@cup.com HomePage http://www.a-web.co.jp/~yui/ ======================================================= ゆいちゃっとProマニュアル補完計画 1997年4月5日(ゆいちゃっと技術部作成) ======================================================= ◆徒然なるままに..... この補完版は、マニュアルでは、書かれなかったことをちょっとだけ、書き足すものである。 ◆ロム抑制チャットへの改造方法 下記の3操作をすべて行う。 (1)index.htmlの下フレーム を、 のように、別のhtmlにリンクさせる。pre.htmlは、自分で適当に作る。 (2)pref.cgiで定義される$chat_file = './chat_log'; のchat_logという名称を変更する。 例えば、c_datとか。変更後、その名前の空ファイルを設置し、パーミションを設定するのを忘れないこと。サーバによっては、chat_logへの直接アクセスが可能なため。 (3)pref.cgiの、sanka関数内で push (@sanka3, "$handle☆") if($handle ne $host2); push (@sanka3, "$name☆") if($name ne $host); の二行を、それぞれ、 push (@sanka3, "$handle☆"); push (@sanka3, "$name☆"); とする。これにより、従来は、名前を入力していた人だけ、参加者表示をしていたのが、アクセスした時点で、ホスト名を表示するようになる。 ◆メールアドレス有りで、タグを許可するチャットへの改造方法 chat.cgi中のwrite関数で.. }elsif ($email) { $value = "$name|>$chat $emoji($date $host)
\n"; }else { $value = "$name > $chat $emoji($date $host)
\n"; } を、 }elsif ($email=~/([\w\-]+)@(.+)\.(.+)/) { $value = "$name|>$chat $emoji($date $host)
\n"; }else { $chat=~s/$name > $chat $emoji($date $host)
\n"; } のように修正する。ただし、この方法によるタグ抑止への実効性は疑問である。 ◆タグ完全禁止チャットへの改造方法 chat.cgi中のwrite関数の2行目で、 &tag if ($chat=~s/\t/ を、 にしてみましょう。 の部分は、 だけにして隠します。 同様に も、 にします。 は、 にするとか...。 ◆POSTメソッドで作動するようにする。 pref.cgi中のsub decodeで、 $buffer = $ENV{'QUERY_STRING'}; を、 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } にする。 ◆外部サイト(他人のホームページ)からの書き込みを禁止する。 pref.cgi中のsub writeで、 sub write{ を、 sub write{ return unless( ($ENV{'HTTP_REFERER'} eq '') || ($ENV{'HTTP_REFERER'} =~m!http://www.test.or.jp/~test/!)); のようにする。http://www.test.or.jp/~test/は、CGI設置ディレクトリのURLにする。 ◆入室メッセージを書き込まない..。 enter.cgiから、 &readlog; $brauza = $ENV{'HTTP_USER_AGENT'}; $brauza =~s/管理人 > $nameさん、おいでやすぅ。 $brauza($date $host)$histry
\n"; &writelog; を削除する。 ◆退室メッセージを書き込まない。 chat.cgiの、sub writeで、 if ($chat eq '退室') { $value = "管理人 > $nameさん、またきておくれやすぅ。($date $host)
\n"; &writelog; print "Location: $endpage\n\n"; &ended; }elsif ($email) { を、 if ($chat eq '退室') { print "Location: $endpage\n\n"; &ended; }elsif ($email) { とする。                    __END__
名前の色:
名前の色:
発言時自動消去(JavaScript使用)
入力データをブラウザに記憶させる
画面モード(フレーム):利用する。