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::Storage.pm

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

Moxy::Storage::*

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

Moxy::Scraper

かなり異色。絵文字をキャリヤのサイトからスクレイピングしてくる人。これ単体でも利用価値があったりする。 しかしこれ、ImageMagick+GhostScript+LHa for Unix が必要だったりして依存が激しい。面倒な存在だ。

Moxy::Util

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

フックポイントについて

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

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

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

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

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

といったところ。基本的には HTTP::Proxy のフックを愚直にラッピングしていると考えれば よろしい。

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

いいわけ

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

AUTHOR

Tokuhiro Matsuno.