以前も少し書きましたが、「DeleGateでGIF→BMP変換機能付きプロキシーを立ち上 げて、Browser Returnsで利用する」のを試しました。 その設定方法をまとめました。 =========================================================================== ● プロキシーサーバの構成 プロキシーサーバとして、DeleGateを使用しました。DeleGateはHTTP, FTP, NNTPな ど様々なプロトコルのプロキシーとして機能します。UNIX, Windowsで動作します。今 回はFreeBSD上で使用しました。 DeleGateの機能で今回特に重要なのは、クライアントとDeleGateの間にフィルタを はさんで、簡単にデータの変換を実現できる点です。フィルタとしてGIF→BMP変換ツー ルを使用することにより、今回の目的が達成できます。 GIF→BMP変換ツールとしては、ImageMagickを使用しました。非常に多種のフォーマッ トをサポートした、フォーマット変換、画像変換、画像加工ツールです。Windows, UNIXで動作します。今回は、ImageMagickを使用して、GIFから16色モノクロBMPへ変換 します。 ● DeleGateの設定と起動 ImageMagicをDeleGateのフィルタとして使用するわけですが、Browser Returnsと Webサーバとの通信すべてをフィルタで変換するわけではなく、以下の場合に限定する 必要があります。 1. DeleGateからクライアント(Browser Returns)に 2. GIFを送信する場合 DeleGateは、どこを流れるデータにフィルタを適用するのかを指定できます。 DeleGateからクライアントへのデータへフィルタを適用するには、DeleGateのFTOCLパ ラメータ(Fileter TO CLientの意味だと思われます)でフィルタを設定します。 GIFに限定してフィルタを適用するには、DeleGateのCFIを使用します。CFIを使用す ると、HTTPのレスポンスヘッダを参照し、特定の文字列にマッチするヘッダがある場 合にのみフィルタを適用できます。WebサーバがGIFを返す時には、HTTPレスポンスに 以下のヘッダが含まれるため、 Content-Type: image/gif これがある場合のみフィルタが有効になるよう設定します。 DeleGateを起動するシェルスクリプトは以下のようになります。 ------------------------------------------------------------- #!/bin/sh imagemagick=/user/local/bin /usr/local/sbin/delegated -P8080 SERVER=http ADMIN=shinra@pc88.gr.jp FTOCL="tocl.cfi" LIBPATH=".:$imagemagick" PERMIT="http:*:*" RELAY="proxy,delegate" CACHE=no ------------------------------------------------------------- この設定では、プロキシーのポートは8080です。imagemagickにはImageMagickのイ ンストール先を指定します。フィルタの設定はファイルtocl.cfiに記述します。 tocl.cfiの内容は以下の通りです。 ------------------------------------------------------------- #!cfi Content-Type: image/gif Filter: convert -scale +100% -colors 16 -colorspace gray +compress +matte - bmp:- Output/Content-Type: image/bmp ------------------------------------------------------------- Filter: の行はフィルタとして実行するプログラムを指定します。convertは ImageMagickの実行ファイルです。+100%の部分を+50%などにすると画像の縮小も可能 です。指定によってあるサイズ以上の場合のみ縮小というのも可能なようです。 Content-Type: image/gif は、HTTPレスポンスにこのヘッダがあった場合にフィル タを適用することを意味します。 Output/Content-Type: image/bmp は、クライアントに送るHTTPレスポンスヘッダに Content-Type: フィールドを出力することを指定します。元あったContent-Type:ヘッ ダは置き換えられます。画像フォーマットがGIFからBMPに変換されたので、このよう に設定してContent-Typeを書き換えるのが適切です。 ● Browser Returns の設定 BR98.INIに「GIF→BMP変換ソフトを呼び出すバッチ」を指定します。Browser Returns は URL の拡張子部分(.gif)でファイル形式を判断しています。プロキシー サーバによって画像フォーマットは変換されますが、URLは元の.gifのままなので、 Browser Returns はGIFだと判断しバッチを呼び出します。 ------------------------------------------------------------- ;↓GIF→BMP変換ソフトをお持ちの方は変換ソフトを呼び出すバッチファイルを ;指定してください。 gifbmp=~gifbmp2.bat ------------------------------------------------------------- ここで指定したgifbmp2.batの中身は ------------------------------------------------------------- copy %1 %2.bmp ------------------------------------------------------------- 1行です。拡張子をBMPに変えてコピーするだけです。 ● Browser Returns の起動 一般には、プロキシーを利用するにはそのサーバ名をブラウザに設定する必要があ りますが、DeleGateの場合、以下のような特別な形式のURLを使用することにより、ブ ラウザの設定なしで使用できます。 http://DeleGateのサーバ名:ポート番号/-_-WebページのURL DeleGateをproxy.foo.jpのポート8080で起動しており、http://www.yahoo.co.jp/ を閲覧したい場合は、次のように実行します。 ------------------------------------------------------------- BR98 http://proxy.foo.jp:8080/-_-http://www.yahoo.co.jp/ ------------------------------------------------------------- Yahoo! のロゴとともに、トップページが表示されるはずです。 ● 使用したソフト Browser Returns: http://www.proc.org.tohoku.ac.jp/~asaka/soft/br98.shtml DeleGate: http://www.delegate.org ImageMagick: http://www.imagemagick.org ===========================================================================