あけましておめでとうございます。
2013年が始まりました。今年は良い年でありますように(ぇ。
さて、昨年から取りかかっているCloudFoundryですが、色々と問題があってプロキシ認証環境ではうまく構築ができていません。
また、CloudFoundryだけでなく、関連するライブラリが通信を行う際にも必ずプロキシ認証で止まってしまうため、そのライブラリがプロキシ認証に対応していないとエラーとなってしまいます。
そこで、一度プロキシ認証を通した後にそのまま接続を使えないかと考えたところ、
シングルサインオン形式のサーバーを立てて、それを介してインターネットへアクセスする方法を試してみることにしました。
まずはPythonを使ってプロキシ認証を行うサーバーを立ててみました。
import SocketServer import base64 import socket import urllib2 class MyTCPHandler(SocketServer.BaseRequestHandler): def handle(self): proxy = urllib2.ProxyHandler({'http': 'http://プロキシユーザーID:プロキシパスワード@プロキシサーバー名:ポート番号'}) auth = urllib2.HTTPBasicAuthHandler() opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler) urllib2.install_opener(opener) conn = urllib2.urlopen('http://サンプルとして開くページのURL') return_str = conn.read() self.data = self.request.recv(1024).strip() print "%s wrote:" % self.client_address[0] print self.data self.request.send(self.data.upper()) if __name__ == "__main__": HOST, PORT = "localhost", 9999 server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) server.serve_forever()
このサーバーを起動してブラウザで「http://localhost:9999」へアクセスすると、プロキシ認証を行ってから特定のページ(コード中のurllib2.urlopen)へアクセスします。
また、「return_str = conn.read()」移行のコードはデータを読み込んでその内容を表示するサンプルコードです。
次はCloudFoundry構築時にこのサーバーへアクセスさせる方法を考えてみます。