概要と動作デモ
任意のPerl-CGIスクリプトに、IDとパスワードによる認証機能を極めて手軽に追加することができます。「掲示板を会員制にしたいけど、今使ってるCGIにそんな機能ない。.htaccess等も使えない。」という方におすすめです。
バージョン1.1より、ApacheがBASIC認証に使用するユーザー認証ファイル(.htpasswd)と同じ形式のテキストファイルを、アカウント情報として使用できます。従って、別途この形式のファイルを編集するプログラムを使ったユーザー管理が行えるかもしれません。
動作デモとして、KENT-WEBで配布されているASKA BBSにこれをを組み込んでみましたのでご覧ください。ユーザー名もパスワードも test です。
動作要件
Perlで書かれたCGIスクリプトの、CGIが出力するページをプロテクトします。例えばSUN BOARDのように、表示部がHTMLファイルに分離されているようなものには組み込めません。その他CGIスクリプトの特性によっては、組み込めない場合もあります。
認証にクッキーを利用しています。クッキー非対応のブラウザでは認証できません。
サーバにはPerl5以上がインストールされている必要があります。
利用許諾
いわゆるX11ライセンス(MITライセンス)の下で自由にご利用いただけます。
利用許諾はバージョン1.4からようやく「明記」しました。ほったらかしにしていてすみませんでした。
ダウンロード
ダウンロード後、ファイル名を"gateway.cgi"等に変更してください。漢字コードはShift_JISで書かれています。CSS定義ファイルはサンプルです。必要ならばご自分で書き変えて使ってください。
- gateway.cgi-1.4 - version 1.4 (2007-04-18)
- gateway.css - CSS定義ファイル
"gateway.cgi"の拡張子は、あなたのサーバでCGIの実行権のある拡張子に変更してください。例えば、設置後、"gateway.cgi"にブラウザで直にアクセスした際、サーバエラーになれば問題ありませんが、スクリプトの中身が表示されたり、「ファイルのダウンロード」ダイアログが出る場合は、パスワードが漏れているということです。
設置方法
初期設定
"gateway.cgi"をテキストエディタで開き、「初期設定」の部分を書き換えます。外部のユーザー認証ファイルを使わない場合は、アカウントの設定($USERNAMES)と、ホームページのURI($HOME_PAGE)との2つを書き換えればとりあえずはOKです。
CGIスクリプトへの組み込み
組み込みたい対象のCGIスクリプトをテキストエディタで開き、最初の方に以下の1行を挿入してください。perlのパスの真下、2行目あたりが丁度良いでしょう。
require './gateway.cgi';
サーバへの設置
"gateway.cgi"を組み込みたいCGIスクリプトと同じディレクトリに設置してください。アスキーモード(テキストモード)でFTP転送することに注意してください。パーミッションは604とします。
- cgi-bin
- aska.cgi
- gateway.cgi
- gateway.css
ファイル等 | パーミション | 解説 |
---|---|---|
cgi-bin | 701 | 任意の設置ディレクトリ |
aska.cgi | 705 | 組み込む対象のCGIスクリプト |
gateway.cgi | 604 | スクリプト本体 |
gateway.css | 外部スタイルシート |
もっと安全な設置方法
上記の設置方法に成功したら、できれば以下のような配置を試してください。"gateway.cgi"を外部からアクセスできない場所("public_html"の外)に移動することで、より安全になります。
- user
- public_html
- cgi-bin
- aska.cgi
- gateway.css
- cgi-bin
- gateway.cgi
- public_html
上の例だと、"aska.cgi"に記載すべきパスは以下のようになります。
require '../../gateway.cgi';
更新履歴
更新日と公開日が数日ずれている場合があります。
更新日 | バージョン | 更新内容 |
---|---|---|
2007-04-18 | 1.4 |
|
2006-01-12 | 1.3 |
|
2006-01-11 | 1.2 |
|
2004-05-14 | 1.1 |
|
2003-10-23 | 0.4 |
|
2003-08-26 | 0.3 |
|
2003-08-23 | 0.2 |
|
2003-04-28 | 0.1 |
|