CGI スクリプトの利用

【 BBS 】

【 BBS(掲示板)の利用 】
WWWサーバーにCGIを稼動させる設定をしていれば、比較的簡単にBBS(掲示板)は設置できます。
設定は全てクライアントPCで行い、事とします。
まず、フリーで提供されている所から「CGIスクリプト」をダウンロードします。
今回、説明をするに当たって「KENT WEB」さんから「LIGHT BOARD」を使用した設置方法をしていきます。
ダウンロードできるスクリプトは「LHA形式」と、「ZIP形式」の圧縮ファイルが有りますので、自分が解凍できる環境の圧縮形式をダウンロードします。
KENT WEBさんから目的のファイルをダウンロードします。
img130
解凍したフォルダ名を「bbs」に変更します。
解凍したフォルダの中には、下記のようなファイルが出来ます。
この場所に、「lock」「past」フォルダを作成し、「past」フォルダの中には「0001.cgi」を移動します。
img131
「init.cgi」をメモ帳で開きます。
変更が必要な個所は、KENT WEBさんのサイトか、メモ帳で開いた「init.cgi」の中に記載されていますので、必要な個所を自分の環境に合わせて変更します。
ちなみに下記は私がした設定例です。
設定が終了したら「上書き保存」して、メモ帳を閉じます。
$script = './light.cgi';
$admin = './admin.cgi';
$logfile = './data.cgi';
$setfile = './light.dat';
$pass = '任意のパスワード';
$lockkey = 2;
$lockfile = './lock/light.lock';
$sendmail = '';
$pastkey = 1;
$pastdir = './past/';
$pastno = './pastno.dat';
$pastmax = 1000;

「light.cgi」と「admin.cgi」をメモ帳で開きます。
1行目を下記のように書き換えます。
書き換えが終わったら、「上書き保存」してメモ帳を閉じます。
#!/perl/bin/perl
(サーバーのActive Perlインストール先に合わせて変更してください)
これにて設定は終了です。
解凍して出来たフォルダを、フォルダごとApache2のhttpd.confファイルで設定したCGIが作動するサーバーの「cgi-bin」フォルダの中へ転送します。
httpd.conf設定で、どこのディレクトリでもCGIを作動させるように設定している場合は、解凍したフォルダの場所は問いません。
設置したディレクトリのURLで「light.cgi」をブラウザから指定すると、BBSが開きます。
例 : http://saru_monkey.com/cgi-bin/bbs/light.cgi
これにて設置は終了です。
この「LIGHT BOARD」は、ユーザーが書き込みを行った文章は「data.cgi」に記録されます。
この場合、拡張子が「.cgi」なのでブラウザ等で直接ファイルを開く事は出来ません。
BBSのCGIスクリプトによっては、書き込みを行った文章をそのまま「.log」や「.dat」ファイルとして保存するものがあります。
この場合のCGIスクリプトは、ほとんどの場合「.log」や「.dat」ファイルを保存する場所を指定できるようになっています。
WindowsOSには「パーミッション」というものが存在しませんので、URLでファイル名を直接指定されてしまうと、ファイルを読み取られてしまうと言う事があります。
その中には、書き込みを行ったユーザーのIPアドレスなども記録されていて、これをこのままにしておくと、第三者に読み取られてしまう可能性がありますので、このような形式のBBSは「WEBからアクセスできないディレクトリ」に「.log」や「.dat」ファイルを置くようにします。
その際、CGI設定にて、ファイルを置くディレクトリ先が指定できますので変更します。
その他のURL直接閲覧防止方法としては「WWW Server」にて「.dat」・「.log」をブラウザから表示させないように「http.conf」にて設定を行なう事が出来ます。
この設定をしておく事により、今後設置をするCGI全てに対して有効になりますので、各ファイルをディレクトリなどに移動する必要はなくなりますのでこちらの方がお勧めかもしれません。
自分の環境に応じて決めてください。
これらの事により、書き込みを行ってもらった
ユーザーの情報を保護しなければなりません。
今までの説明では「D:\www\public_html」が公開TOPディレクトリになっていますので、この場合は「D:\www」に見られてはいけないもの「.log」や「.dat」ファイル等を置くようにします。
このように設置する事により、WEB上から「.log」や「.dat」ファイル等を直接読み取られる事はなくなります。
ユーザーの情報が入っている「.log」や「.dat」ファイルの移動に伴い、BBS設定ファイルのディレクトリ変更の記載もしなければなりません。
この作業に自信がない場合は、サーバーにある「.log」や「.dat」拡張子のファイルを全て「.cgi」にし、BBS設定ファイルのディレクトリ変更を記載するのではなく、「ファイル名の変更」の記載をしてください。
また、WWWサーバーの設定などで「ディレクトリにindex.htmlファイルが無い場合、ディレクトリ内容を表示する」に設定している場合は、ディレクトリに直接アクセスがあった場合は、中のファイル郡が表示されてしまいますので、その場合はダミーのindex.htmlファイルを置くと良いと思います。
【 CGI スクリプトによる不具合 】
CGIによっては「とある方法」にて投稿された場合、BBSスクリプトそのものが作動しなくなってしまったり、テーブルなどが壊れてしまったり、その後のBBSへの投稿が出来なくなってしまったりしてしまう物があります。
具体的な投稿方法の掲載は「悪戯目的」で利用されるのを防ぐ為、ここでは避けますが、使用されるスクリプトには十分注意を致しましょう。
ちなみに私が確認した所、KENT WEBさんの作成されたスクリプトでは同様の方法で投稿した場合、不具合などが起きませんでした。