Takeshi SAKURAI: May 2009 Archives

HDEラボの桜井です。
昨日のプログラムに、ちょっとだけ機能を追加してみましょう。

追加する機能は、プロキシサーバよりさらに先にあるプロキシサーバ(上位プロキシ)を
経由してインターネットにつなげるものです。

 
# -*- coding: utf-8 -*-
from twisted.web import http, proxy
from twisted.internet import reactor, ssl
from twisted.python import log
import sys
import urlparse
 
# とりあえずログを標準出力へ
log.startLogging(sys.stdout)

# 上位プロキシ設定
proxyHost = "192.168.0.1"
proxyPort = 8080

# プロキシリクエストのクラス
class MyProxyRequest(proxy.ProxyRequest):

  # processメソッドを継承
  def process(self):
    parsed = urlparse.urlparse(self.uri)
    protocol = parsed[0]
    host = parsed[1]
    print self.method

    port = self.ports[protocol]
    if ':' in host:
      host, port = host.split(':')
      port = int(port)
    rest = urlparse.urlunparse(('', '') + parsed[2:])
    if not rest:
      rest = rest + '/'
    class_ = self.protocols[protocol]
    headers = self.getAllHeaders().copy()
    if 'host' not in headers:
      headers['host'] = host
    self.content.seek(0, 0)
    s = self.content.read()

    # 上位プロキシの設定がある場合はこちら
    if proxyHost != "" and proxyPort != 0:
      clientFactory = class_(self.method, self.uri, self.clientproto, headers, s, self)
      self.reactor.connectTCP(proxyHost, proxyPort, clientFactory)
    # プロキシが必要ない場合はこちら
    else:
      clientFactory = class_(self.method, rest, self.clientproto, headers, s, self)
      self.reactor.connectTCP(host, port, clientFactory)

# プロキシクラスを継承
class MyProxy(proxy.Proxy):
  requestFactory = MyProxyRequest

# HTTPプロキシサーバのクラス
class MyProxyFactory(http.HTTPFactory):
  protocol = MyProxy
 
# 実行
reactor.listenTCP(8080, MyProxyFactory())
reactor.run


本当はhttpsのプロキシもやりたいんだけどなぁ...。
HDEラボの桜井です。
いろいろと調査の多い昨今の仕事状況ですが、久しぶりにTwistedでも。

試験用にどうしてもHTTPプロキシサーバが必要だったので、なぜかTwistedで自作。
とりあえず機能は単純。
・HTTPプロキシしかできない(CONNECTメソッドはまだできない)
・上位プロキシに転送できない
・ログは標準出力に出す

# -*- coding: utf-8 -*-
from twisted.web import http, proxy
from twisted.internet import reactor, ssl
from twisted.python import log
import sys

# とりあえずログを標準出力へ
log.startLogging(sys.stdout)

# HTTPプロキシサーバのクラス
class MyProxyFactory(http.HTTPFactory):
  protocol = proxy.Proxy

# 実行
reactor.listenTCP(8080, MyProxyFactory())
reactor.run

WEBブラウザのプロキシ設定をして、アクセスすればログが見れます。
CONNECTメソッド対応、上位プロキシ対応ができたらまた公開します。

HDEラボの桜井です。

今日確認したら、Fedora11のリリースが5/26から6/2に延期になってますね。
Pythonのバージョンが2.6になってたり、いろいろあるからでしょうか?
http://fedoraproject.org/wiki/Releases/11/Schedule

リリースされたら簡単にチェックしてみたいと思います。
HDEラボの桜井です。

Postfix-2.6.0 stableが5/12にリリースされています。
主なトピックは、次の通りです。(超要約)
・Postfixのインスタンスを複数起動することが可能
・TSLがデフォルトでSSLv2を使用しなくなった
・MilterがSendmail-8.14相当に対応
・stress-adaptiveがデフォルトで有効に

機能要件は変わってないとのことですが、RELEASE_NOTESを確認しましょう。

Postfix公式サイト
Postfix stable release 2.6.0
HDEラボの桜井です。
今日も小ネタで。

先ほど、CentOS5(i386、x86_64)をyumでアップデートしようとしたところ、下記のエラーが。
httpd-2.2.3-22.el5.centos.x86_64 from installed has depsolving problems
  --> Missing Dependency: /usr/share/magic.mime is needed by package httpd-2.2.3-22.el5.centos.x86_64 (installed)
Error: Missing Dependency: /usr/share/magic.mime is needed by package httpd-2.2.3-22.el5.centos.x86_64 (installed)

"/usr/share/magic.mime"は、fileパッケージに含まれるもの。
httpdが勝手?に依存しているようです。
httpdのSRPMを入手して、SPECファイルを見たら書いてありました。
Requires: /etc/mime.types, gawk, /usr/share/magic.mime, /usr/bin/find

しょうがないので、fileのrpmパッケージをダウンロードして強制インストールしてみました。
ちなみに、何が変わったのかというと...
- fix #497163 -  Incorrect command name from the core file

About this Archive

This page is a archive of recent entries written by Takeshi SAKURAI in May 2009.

Takeshi SAKURAI: April 2009 is the previous archive.

Takeshi SAKURAI: June 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.