1、Apacheの mod_ext_filter でPOSTデータにsidを追加する。
2、POSTデータにsidを追加するApacheモジュールを新規に組む。
の案が出ていて、1についてはどうやらApacheがサポートしていないということが判明した。
というわけで、2の実現に取り掛かる。
結論から言うとこっちもダメでした。
POSTデータにsidを付与するApacheモジュールは組めたのだけれど、Proxy経由で動作しない問題が発生。
どうやら、Proxyを介するときはContent-Lengthヘッダも書き換えねばならないらしい。
Content-Lengthヘッダを消してしまえばよいのかと思い、 RequestHeader unset を試してみるものの効果なし。
このあたりはフィルタの処理順序に由来するものだろう。
さらっと書いてるけど、不慣れなApacheモジュールを作るのに2日、さらにProxy経由で動かない原因特定に1日かかっている。
Content-LengthはHTTPのヘッダ部なので、書き換えはさらに面倒であることが予想された。
というわけで、第3の選択肢の登場。
3、test/bbs.cgiへの書き込みアクセスを、mod_rewriteで書き換えて、ローカルのphpで受け、phpでsidを付与した書き込み要求を行う。
具体的には、以下のディレクティブを書いた。
これで、post.phpは、GET変数に鯖名を、POST変数にユーザーの送信データを得ることが出来る。
後は、このPHPでsidを取ってきてPOST変数に付与してやれば良い。
SIDは別のphpスクリプトでcronをまわして定期更新させるようにしておく。
これで、原理的にはOKとなる。
実際は、SIDの渡し方ではまったり、Cookieの設定を送信する必要があったりして、さらに時間を食うことになるのだけれど、とにかく何とかリリースにこぎつけた。
あぁ、めんどくさかった……
PeerBlock・PeerGuardian用IPリスト
こちら、月一で更新されてますか?
スクリプトが自動起動されるので
中の人が何もしなくても月一で更新されます。
Refererの無いアクセスは弾いてるので、PeerBlockからのURL直アクセスはできないようになってます。