LightRelay

LightRelayとは何か

 イントラネットの一部に極端に帯域の低い(アナログモデム並)部分があって、イントラネットのリッチなコンテンツに邪魔されて、実質的にイントラネットのコンテンツが見られないという環境があることがあります。
 そこで、イントラネットのコンテンツを中継して

  1. Content-Type が text/* のものだけ取得
  2. PDF ファイルの文字情報部分だけ抽出して表示(pdftotextをインストールした場合)
  3. gzip 圧縮してブラウザに返す

という HTTP プロキシサーバーを pythonで書いてみました。

 純粋な意味でのプロキシサーバーではなくて、URI の書き換えをして中継するちょっと変な代理サーバーです。

 Python がインストールしてあれば Windows でも UN*X でも動かせると思います・・・が、私は、Windows 2000 でしか試してません。(ブラウザは IEしか試してません)

 有効性実証のためのお試し実装なので、かなり致命的な制限があります。どなたかが、コンセプトを受け継いで、すばらしい実装をしてくれることを期待します。

使い方

 lightrelay-0.1.tar.gz のアーカイブを解いて、lightrelay.py を実行します。

 lightrelay.py を実行するホストが relay.example.com で、http://intra.example.com/foo/bar.html を見たい場合は、ブラウザから

http://relay.example.com:8000/intra.example.com/foo/bar.html

にアクセスします。

ポートが 8000 じゃいやだという方は、ソースを直して下さい。(また、何かおかしかったらソースを見てください)

pdf から 文字情報だけを抽出して表示したい場合には pdftotext をインストールする必要があります。
 pdftotext のインストールについては、こちらを参考にして下さい。

制限

 かなり致命的な欠点が多々あります。

  1. 反復サーバーなので、一度に複数のリクエストが処理できない
  2. HTTP GET しか反応しない(POSTが処理できない)
  3. クッキーを中継しない(そのため、セッション機能も使えない)
  4. Keep Alive できない
  5. Basic 認証ができない

これを解決するには、HTTP Server 部分を根本的に書き直さないといけないのですが、今のところその予定はありませんので悪しからず。


Zope メモ