The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

おなまえ

Moxy::Manual::HackingJA - Moxy hacking guide(ニホンゴ)

この文書はなにか

Moxy を Hack しようと考える人のための文書なのであって一般ユーザ向けではなく云々。

モジュール構成

Moxy.pm

コア。コンテキスト。

Moxy::Plugin.pm

プラグインのベースクラス。継承するとちょっと便利な機能が使えるようになるけど 必ず継承しなくちゃいけないってわけでもなかったりする。

Moxy::Plugin::*

いろいろ register_hook 呼ぶの人。load_plugins の段階で register メソッドが呼ばれる あたりは Plagger をまるぱくりしてるといえる。

Moxy::Plugin::*

HTTP::Request または HTTP::Response に対してなんらかの処理をする系のプラグイン。ほとんど のものはこれ。

Moxy::Plugin::Server::*

サーバーとしてうごく部分。HTTP::Proxy のみ現在はサポートされています。他のもののサポートは 誰かつくってくれると嬉しいな。たとえば POE::Component::Server::HTTP とか。

Moxy::Storage.pm

ストレージ系のベースクラス。

Moxy::Storage::*

ストレージ。ストレージってのは、単なるハッシュのことだったりする。Storage の利用用途は 現在の UserAgent 情報を保存することだったりするので別に DBM_File とか使う必要はない。本質的には。 でも、HTTP::Proxy は都度 fork 実装なので、プロセス間での通信手段を適当に実装する手段として DBM_File を使ってるというだけだったり。このへんは今後変化する可能性が高そうだ。

Moxy::Util

ユーティリティ関数が入るところ。が、今のところは文字コードの判別が入ってるだけ。しかも code は Plagger::Util からのまるぱくりだったりするw

フックポイントについて

Moxy は Plagger や qpsmtpd のようなプラガブルな構成になっている。 プラグインを入れない状態では単なるプロキシサーバーとして動作する。

というわけで、フックポイントは Moxy のキモである。

現在 Moxy に設けられているフックポイントは大別すると2種類ある。 Moxy::Plugin::Server::* の中で設定されているフックポイントと Moxy::Plugin::ControlPanel で設定されているフックポイントである。

Moxy::Plugin::Server::* で呼ばれるフックは

  リクエスト
    request_filter_process_agent ユーザーエージェントの設定
    request_filter               リクエストの処理
    request_filter_E             リクエストに対する処理(特定キャリヤ用)
  レスポンス
    response_filter              レスポンスボディに対する処理
    response_filter_E            レスポンスボディに対する処理(特定キャリヤ用)

といったところ。HTTP::Request と HTTP::Response に対して処理を行っている。

Moxy::Plugin::ControlPanel で呼ばれるのは control_panel というフックのみ。 これはコントロールパネルを生成する人なのでちょっと他のとは赴きが違う。

いいわけ

基本的に今日現在の情報を書いただけなので作者の気紛れによってフックポイントやらなんやらは まだまだ変わる可能性があるし、この文書も obsolete になる可能性が多々あることを いいわけしておく。

AUTHOR

Tokuhiro Matsuno.