From 9c30e2e86d162e664d4b987479bd59155c712ec7 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Tue, 3 Jul 2012 22:27:16 +1200 Subject: Correct handing of IDNA encoding of internationalized domain names. - Use IDNA encoding for hostnames gleaned by upstream-cert sniffing - Use IDNA decoding for URL display in mitmproxy and mitmdump. --- libmproxy/flow.py | 2 +- libmproxy/proxy.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libmproxy/flow.py b/libmproxy/flow.py index edd10f49..59df04b2 100644 --- a/libmproxy/flow.py +++ b/libmproxy/flow.py @@ -359,7 +359,7 @@ class Request(HTTPMsg): """ Returns a URL string, constructed from the Request's URL compnents. """ - return utils.unparse_url(self.scheme, self.host, self.port, self.path) + return utils.unparse_url(self.scheme, self.host.decode("idna"), self.port, self.path) def set_url(self, url): """ diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py index d96c8df4..2294a894 100644 --- a/libmproxy/proxy.py +++ b/libmproxy/proxy.py @@ -238,7 +238,7 @@ class ProxyHandler(tcp.BaseHandler): if self.config.upstream_cert: cert = certutils.get_remote_cert(host, port, sni) sans = cert.altnames - host = cert.cn + host = cert.cn.decode("utf8").encode("idna") ret = certutils.dummy_cert(self.config.certdir, self.config.cacert, host, sans) time.sleep(self.config.cert_wait_time) if not ret: @@ -255,7 +255,7 @@ class ProxyHandler(tcp.BaseHandler): return line def handle_sni(self, conn): - self.sni = conn.get_servername() + self.sni = conn.get_servername().decode("utf8").encode("idna") def read_request(self, client_conn): if self.config.transparent_proxy: -- cgit v1.2.3