「どこでも掲示板」
Hirotaka JOE Ohkubo 2005/3/9
Apache2 の mod_ext_filter を使って遊んでみた例。
動くだけで全く実用性はない。
設置の仕方:
DB_File モジュールを入れる。無ければ AnyDBM_File でも使っとけ。
httpd.conf に
----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----
LoadModule ext_filter_module modules/mod_ext_filter.so
# ext_filter based bbs'ing
ExtFilterDefine bbs cmd="c:/perl/bin/perl.exe C:/joe/htdocs/anno/anno.pl" mode=output intype=text/html outtype=text/html
SetOutputFilter bbs
ExtFilterOptions DebugLevel=1
----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----
みたいに書いて apachectl restart する。
anno.pl と submit.cgi の tie の行を、
データベースファイルを置く場所に直す。
C:/joe/htdocs/anno に anno.pl と submit.cgi を置く。
submit.pl は cgi として実行可能に、
anno/ は httpd が書き込み可能にする。
完了。
anno/ の下の全てのページに、一行掲示板が付く。
上の をルートにすれば、全てのページに付く。
autoindex で作られるファイルリストにさえ付く。
404 not found なメッセージにはさすがに付かないので、
任意のページを新たに立てる、という使い方はできなかった。
今後の展開:
text/plain 用の別バージョンはあっと言う間に作れる。
ざっと挙げて、
文字コードの問題、サニタイズの問題、ファイルロックの問題、
管理者権限による書き込み内容の整理機能、
ファイルの Last-Modified が古いために強制リロードしないと
書き込みが反映されない問題、
少なくともこれだけの問題が簡単に出てくるので、
このままやるにしても真面目に作り直す必要がある。
また、簡単に mod_ext_filter が重い問題が浮上するはずだから、
step 1. 実装を C に移す (mod_ext_filter ベースのまま)
step 2. apache native module API を使う形に書き直す
(make のオプションで、どちらにでもなるようにしてあると
かっちょいいかも)
という障害はいずれ避けられない。
方針として、このまま YukiWiki の一行コメント風に拡張するなら、
新規書き込みのリストアップ、書き込み内容の検索、
といった普通の掲示板的機能を強化していけば使えるようになるかも。
ファイル末尾にコメントをダラダラ表示する代わりに、
沢田式アノテーションをまともに張り込む方式に大改造する方向もある。
proxy による実装の private〜group 的な使い方ではなく、
server-side での提供による public 専用のシステム。