Last updated on 2010/06/08.
フリーCGI:チャット
Contents
- ダウンロード&設置方法
- しんちゃん
ひみつのしんちゃん
ざ★だんちゃん
↑ このページのTOPへ
由来
あまり無用な機能をつけない、シンプルなチャットを作ろうと思った……んだと思います。一応軽くを心掛けました。
特徴
- ノンフレームでもフレームでも使用できますが、CGIのソースは一つだけです。
- 文字コードはSJISです。
- ログファイルのロック機能はかなり強力です(多分)。
機能
- NonFrame, Frame対応。
- Frame時自動リロード機能有。
- Frame時発言復活機能有(サーバーエラーなどで発言が反映されなかった場合に有効)。
- 参加者表示・ささやかなROMチェック有。
設置の前提条件
- zipの解凍が必要です。
- Webサーバ上にjcode.plを用意して下さい。
jcode.plとは、Perl CGI上で日本語を使う為のライブラリです。
すでにご自分のHPにCGIを置いてらっしゃる方は、
大概用意済みかと思われます。
ない方はどっからか拾ってきてサーバ上にFTPしておいて下さい。
設置方法
- タイトル行の下のSimpleChat Ver〜をクリックして、
sc.zipをダウンロードします。
ブラウザにもよるでしょうが、
クリックして「ディスクに保存する」を選べば、
ダウンロードできると思います。
- sc.zipを解凍します。そうするとsc.cgiとsc.logとuser.scが出来ます。
sc.log及びuser.scは中身は何もないサイズ0のファイルです。
- sc.cgiの初期設定を変更します。
絶対に変更する必要のある箇所はソースの頭の方にあります。
- 一行目の#!/usr/local/bin/perlを、
Webサーバの環境に合わせて変更して下さい。
- jcode.plをCGIと同じディレクトリに置いていない場合は、
パスを変更して下さい。例えば、
cgi-bin/jcode.pl
cgi-bin/sc/sc.cgi
というように置く場合は、sc.cgiから見て、
jcode.plは一つ上のディレクトリにあるので、
require '../jcode.pl';になります。
まあ大概の方はcgiファイルと同じところに、
jcode.plも置かれるようなので
その場合は変更しなくていいです。
- ログファイル等データファイルを置く場所を、
$logdirで指定します。
CGIと同じディレクトリに置く場合は$logdir=".";のまま。
例えばCGIを置いてあるディレクトリに、
dataというディレクトリを作ってそこにファイルを置くぞ
という場合には$logdir="./data"になります。
- 出口のURLをご自分のHPなどに変更して下さい。
元のURLのままだと「出口」をクリックした時
「がらくたタウン」に出てしまいます。
絶対に変更する必要があるところは以上です。
その他の「変更した方がいいところ」については
「修正方法」のところで後述します。
さしあたりは最低限変更が必要なところだけ変更してサーバに置き、
稼動確認をすることをお勧めします。
- sc.cgiとsc.log(ログファイル)、user.sc(参加者ログファイル)を
サーバに置きます。
- ファイルのパーミッションを変更します。
ログファイル、参加者ログファイルのパーミッションは666にしてください。
CGIは勿論、755です。
それで多分動くはずです。
修正方法
変更が望ましいところについてはソース中にコメントがあります。
- チャットのログ行数である$row。
- 参加者の名前の表示色。背景色に映える色だけにしておいてあげたらいいと思います。
- リロードの行数指定。
- 背景色である$bgcolと文字色である$textとリンク色である$linkと既リンク色である$vlink。
- HTML文のTITLEタグ内のタイトル。
拡張方法&FAQ
- 裏ログを取得する
- 通常のログは指定した行数(デフォルト値は30)しか残っていませんが、
そのログファイルとは別に、ログをずっと残しておくファイルを作る
場合の改造方法です。(そのログファイルを「裏ログ」と呼んでいます)
ちなみに、どこまでも延々とログを取り続けますので、
サーバさんのために時々はローカルに保存するなどして、
サーバ側のはサイズ0に戻してやって下さい。
- 裏ログファイルの名前を決めます。
初期設定のところがいいでしょう。
$logfile="$logdir\/sc.log";の次の行あたりに、例えば
$llogfile="$logdir\/sc.sav";
など。そして、そのファイルを$logdirに用意してやって下さい。
サイズは最初は0でOK。パーミッションは666です。
- ログファイルに書き込む時に裏ログにも書くようにします。
ロックファイルは$logfileの方とまあ共同で構わないと思いますが、
open,flock,print,flock,closeを裏ログ用にも追加します。
ログファイルに書き込みをしている部分、
open(LOG, ">$logfile")〜 を探して下さい。
open(LOG, ">$logfile")
|| &end_html("$logfile open error", $lock_log);
eval 'flock(LOG, 2);';
open(LLOG, ">>$llogfile")
|| &end_html("$llogfile open error", $lock_log);
eval 'flock(LLOG, 2);';
print LOG @log; # 配列の中身をファイルに書き出す
print LLOG "$name\t$mes\t$data\t$color\n";
# @logではないので注意。
eval 'flock(LOG, 8);';
close(LOG);
eval 'flock(LLOG, 8);';
close(LLOG);
これでsc.savファイルに裏ログファイルが保存されているはずです。
尚、裏ログの取得形式は変更が可能です。
例えば、「名前> 発言内容」という形式で保存したい場合は、
print LLOG〜の行を、print LLOG "$name> $mes\n";にして下さい。
リリースノート
- 1999/09/27
- Simple Chat Ver1.0設置。
- 2000/01/3
- Y2K対策をし、Ver1.01としました。
- 2002/01/3
- リロード時間不正指定対策をし、Ver1.02としました。
↑ このページのTOPへ
由来
パスワードを知っている人しか使えないチャットが
欲しいという要望があったので作りました。
特徴
しんちゃんと同じで、ただ入室にパスワードを要求されます。
機能
要パスワードチャットなだけで、後の機能はSimple Chatと同様です。
ただ、名前を入れてない人はそもそも入室できないので、ROMチェック機能が無効。
要パスワードといっても別に暗号化もしてないので、
このチャットが「絶対安全です!」などとは口が裂けても言いません(^^;。
とりあえず安全です、位にしておこう。
設置の前提条件
しんちゃんと同じです。
設置方法
- タイトル行の右側のSecretSimpleChat Ver〜をダウンロードします。
- ssc.zipを解凍します。そうするとssc.cgiとssc.logとuser.sscができます。
ssc.log及びuser.sscは中身は何もないサイズ0のファイルです。
- ssc.cgiの初期設定を変更します。
絶対に変更する必要のある箇所はソースの頭の方にあります。
これもしんちゃんと同じです。
ssc固有の修正箇所といえば、$passwordです。これをお好みのものに修正してください。
- ssc.cgi、ssc.log(ログファイル)、user.ssc(参加者ログファイル)をサーバに置きます。
- ファイルのパーミッションを変更します。
ログファイル、参加者ログファイルのパーミッションは666にしてください。
CGIは勿論、755です。
それで多分動くはずです。
修正方法
変更が望ましいところについてはソース中にコメントがあります。
これもしんちゃんと同じです。
拡張方法&FAQ
しんちゃんと同じです。
リリースノート
- 1999/11/04
- Secret Simple Chat Ver1.0設置。
- 2000/01/03
- Y2K対策をし、Ver1.01としました。
- 2002/01/3
- リロード時間不正指定対策をし、Ver1.02としました。
↑ このページのTOPへ
由来
対談を記録に残すにはどうしたらいいかと、しんちゃんの改造方法を
訊かれたので、記録に残すための裏ログを取得し、更に今何行目かを
カウントするようなCGIを作ってみました。
特徴
しんちゃんと同じですが、デフォルトで裏ログが取得されます。
機能
Simple Chatの機能に追加して、以下の機能があります。
- 裏ログの取得。取得内容は発言者と発言内容のみ。
- 対話行数の表示。
- クリアボタンを管理者が押すと、ログ・裏ログともに空になる。
- 裏ログのバックアップ機能有。(バックアップ機能を有効にしていれば、ログクリア時それまでの裏ログは年月日時分秒.logというファイル名(例えば、2002年1月3日10時11分12秒であったら20020103101112.log)で、保存される。
設置の前提条件
- zipの解凍が必要です。
- Webサーバ上にjcode.plを用意して下さい。
jcode.plとは、Perl CGI上で日本語を使う為のライブラリです。
すでにご自分のHPにCGIを置いてらっしゃる方は、
大概用意済みかと思われます。
ない方はどっからか拾ってきてサーバ上にFTPしておいて下さい。
設置方法
- タイトル行の下のzadan.cgi Ver〜をクリックして、
zadan.zipをダウンロードします。
- zadan.zipを解凍します。そうするとzadan.cgiとzadan.logと
zadan.txtとuser.zdとline.cntが出来ます。
zadan.logとzadan.txtとuser.zdは中身が何もない、サイズ0のファイルです。
line.cntは「0」とだけ書かれたファイルです。
- zadan.cgiの初期設定を変更します。
絶対に変更する必要のある箇所はソースの頭の方にあります。
- 一行目の#!/usr/local/bin/perlを、
Webサーバの環境に合わせて変更して下さい。
ちなみにhi-hoと@niftyでは#!usr/local/bin/perlのままです。
- jcode.plをCGIと同じディレクトリに置いていない場合は、
パスを変更して下さい。例えば、
cgi-bin/jcode.pl
cgi-bin/chabot/chabot.cgi
というように置く場合は、chabot.cgiから見て、
jcode.plは一つ上のディレクトリにあるので、
require '../jcode.pl';になります。
まあ大概の方はcgiファイルと同じところに、
jcode.plも置かれるようなので
(hi-hoの場合は同じところにしか置けないですね)、
その場合は変更しなくていいです。
- ログファイル等データファイルを置く場所を、
$logdirで指定します。
CGIと同じディレクトリに置く場合は$logdir=".";のまま。
例えばCGIを置いてあるディレクトリに、
dataというディレクトリを作ってそこにファイルを置くぞ
という場合には$logdir="./data"になります。
- 出口のURLである$urlをご自分のHPなどに変更して下さい。
元のURLのままだと「出口」をクリックした時
「がらくたタウン」に出てしまいます。
- 管理者作業用パスワードである$adminpassを
自分しか知らないものに変更して下さい。
絶対に変更する必要があるところは以上です。
その他の「変更した方がいいところ」については
「修正方法」のところで後述します。
さしあたりは最低限変更が必要なところだけ変更してサーバに置き、
稼動確認をすることをお勧めします。
- zadan.cgiとzadan.log(ログファイル)、zadan.txt(裏ログファイル)、
user.zd(参加者ログファイル)、line.cnt(行数カウントファイル)を
サーバに置きます。
- ファイルのパーミッションを変更します。CGIは755、その他は666にして下さい。
それで多分動くはずです。
修正方法
変更が望ましいところについてはソース中にコメントがあります。
- バックアップをとるかとらないかのフラグである$backup。デフォルトでは「バックアップをとる」である"1"になっています。とらなくていいなら"0"にして下さい。
- チャットのログ行数である$row。
- 参加者の名前の表示色。背景色に映える色だけにしておいてあげたらいいと思います。
- リロードの秒数指定。
- 背景色である$bgcolと文字色である$textとリンク色である$linkと既リンク色である$vlink。
- 紙面で一行を何字にするかを指定する$cols。全角での文字数になります。
- 裏ログで、発言者名と発言内容を何で区切るかの$delimiter。"> "とか" "(全角スペース)とかが妥当でしょう。
- HTML文のTITLEタグ内のタイトル。
拡張方法&FAQ
- 裏ログで、発言者と発言内容以外に、発言時間も取得する
- 「# 発言があった場合追加」のところで、
print LLOG "$name$delimiter$mes\n";
を、例えば、
print LLOG "$name$delimiter$mes($date)\n";
などとします。
リリースノート
- 2002/01/3
- 設置。
↑ このページのTOPへ