2009-04-03 12 views
4

私はHTTP::Proxyモジュールを使ってPerlで簡単なHTTPプロキシを書くつもりです。 私は、プロキシと基本的なフィルタとその作成方法の非常に基本的な作業ではっきりしています。しかし、私が理解できないのは、キャッシュを介して手動でファイルを強制的に処理する方法です。どのようにしてPerlでキャッシュHTTPプロキシを書くことができますか?

基本的に、このシナリオはコンピュータAでこのプロキシを実行しています。コンピュータBのユーザーがWebにアクセスすると、このプロキシが使用されます。今、このプロキシは、特定のURL(ファイル、たとえばhttp://abc.com/file.zip)を要求するまで、すべてのBの要求に対するパススルーとして機能します。私はこの要求を傍受し、実際のfile.zipをダウンロードするのではなく、既にコンピュータAに手作業で保管していたファイルを彼に渡してください。

また、Webサーバーを実行していない可能性がありますコンピュータAでは、URLをリダイレクトできないので、キャッシュから提供する必要があります。

これについての説明はありません。 ありがとう

編集:もう少し情報。 HTTP :: Proxyの代わりにHTTP :: DaemonとLWP :: UserAgentを組み合わせて使用​​し始めました。 これまではすべてのリクエストを正常に傍受してから、URLのヘッダーを検索しました。特定のファイル名が存在しない場合は、LWP:UserAgent(simple_request)を使用して実際の宛先に要求を渡し、send_responseを使用して元の送信者に応答を返します。私がファイル名を見つけたら、私はそれ以上のリクエストを転送せず、代わりに "send_file_response"メソッドを使って特定のファイルを提供しようとしています。問題は、他のすべての要求がうまくいき、Bさんがネットサーフィンをすることができますが、このファイルをダウンロードしようとすると、応答を待っているだけです。 squidの使用について、これらのマシンにsquidをインストールすることはできません。

答えて

1

send_file_responseが動作していない間は、距離から推測できます。あなたが

  • ログプロキシサーバーで何とかアクション(開始、終了)

  • トレースを使用している 私は

    • 読み取りをお勧めしますとモジュールとメソッドのドキュメントを理解したいですクライアントBとプロキシサーバー間の通信。

  • +0

    上記の情報を追加しました。 –

    +0

    Thnx Ingo ..問題は、このモジュールのドキュメント、特にこのメソッドがかなり疎であることです。私は物事を記録し、そのようにチェックしようとしています。すぐにここに詳しい情報を投稿します。 –

    +0

    ドキュメントが不足している場合は、perlソースを参照することもできます。 – Ingo

    3

    Squidをこのような用途に使用する方がよいとは限りませんか?

    +0

    ええ、イカを使う方が簡単ですが、問題のマシンに何かをインストールすることはできないので、できません。 –