diff options
| author | Shadab Zafar <dufferzafar0@gmail.com> | 2016-06-15 10:33:56 +0530 | 
|---|---|---|
| committer | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2016-06-15 09:49:38 +0200 | 
| commit | f83433e67466397a78a37fde3607edf2dac42d5b (patch) | |
| tree | 710d688185f53bcc2414a8a4635b87ff7cd20c7c | |
| parent | fa40531a80bbe5e0011383fe81f7e4785b2b0a7d (diff) | |
| download | mitmproxy-f83433e67466397a78a37fde3607edf2dac42d5b.tar.gz mitmproxy-f83433e67466397a78a37fde3607edf2dac42d5b.tar.bz2 mitmproxy-f83433e67466397a78a37fde3607edf2dac42d5b.zip | |
Py3: pathoc
| -rw-r--r-- | pathod/pathoc.py | 27 | ||||
| -rw-r--r-- | test/pathod/test_pathoc.py | 31 | ||||
| -rw-r--r-- | test/pathod/tutils.py | 2 | 
3 files changed, 34 insertions, 26 deletions
| diff --git a/pathod/pathoc.py b/pathod/pathoc.py index 21fc9845..9194dd07 100644 --- a/pathod/pathoc.py +++ b/pathod/pathoc.py @@ -42,7 +42,7 @@ class SSLInfo(object):      def __str__(self):          parts = [ -            "Application Layer Protocol: %s" % self.alp, +            "Application Layer Protocol: %s" % strutils.native(self.alp, "utf8"),              "Cipher: %s, %s bit, %s" % self.cipher,              "SSL certificate chain:"          ] @@ -50,18 +50,25 @@ class SSLInfo(object):              parts.append("  Certificate [%s]" % n)              parts.append("\tSubject: ")              for cn in i.get_subject().get_components(): -                parts.append("\t\t%s=%s" % cn) +                parts.append("\t\t%s=%s" % ( +                    strutils.native(cn[0], "utf8"), +                    strutils.native(cn[1], "utf8")) +                )              parts.append("\tIssuer: ")              for cn in i.get_issuer().get_components(): -                parts.append("\t\t%s=%s" % cn) +                parts.append("\t\t%s=%s" % ( +                    strutils.native(cn[0], "utf8"), +                    strutils.native(cn[1], "utf8")) +                )              parts.extend(                  [                      "\tVersion: %s" % i.get_version(),                      "\tValidity: %s - %s" % ( -                        i.get_notBefore(), i.get_notAfter() +                        strutils.native(i.get_notBefore(), "utf8"), +                        strutils.native(i.get_notAfter(), "utf8")                      ),                      "\tSerial: %s" % i.get_serial_number(), -                    "\tAlgorithm: %s" % i.get_signature_algorithm() +                    "\tAlgorithm: %s" % strutils.native(i.get_signature_algorithm(), "utf8")                  ]              )              pk = i.get_pubkey() @@ -73,7 +80,7 @@ class SSLInfo(object):              parts.append("\tPubkey: %s bit %s" % (pk.bits(), t))              s = certutils.SSLCert(i)              if s.altnames: -                parts.append("\tSANs: %s" % " ".join(s.altnames)) +                parts.append("\tSANs: %s" % " ".join(strutils.native(n, "utf8") for n in s.altnames))          return "\n".join(parts) @@ -239,7 +246,7 @@ class Pathoc(tcp.TCPClient):          )          self.wfile.flush()          try: -            resp = self.protocol.read_response(self.rfile, treq(method="CONNECT")) +            resp = self.protocol.read_response(self.rfile, treq(method=b"CONNECT"))              if resp.status_code != 200:                  raise exceptions.HttpException("Unexpected status code: %s" % resp.status_code)          except exceptions.HttpException as e: @@ -437,7 +444,7 @@ class Pathoc(tcp.TCPClient):              finally:                  if resp:                      lg("<< %s %s: %s bytes" % ( -                        resp.status_code, strutils.bytes_to_escaped_str(resp.reason), len(resp.content) +                        resp.status_code, strutils.bytes_to_escaped_str(resp.reason.encode()), len(resp.content)                      ))                      if resp.status_code in self.ignorecodes:                          lg.suppress() @@ -454,8 +461,8 @@ class Pathoc(tcp.TCPClient):              May raise a exceptions.NetlibException          """ -        if isinstance(r, basestring): -            r = language.parse_pathoc(r, self.use_http2).next() +        if isinstance(r, six.string_types): +            r = next(language.parse_pathoc(r, self.use_http2))          if isinstance(r, language.http.Request):              if r.ws: diff --git a/test/pathod/test_pathoc.py b/test/pathod/test_pathoc.py index 77d4721c..8515fc22 100644 --- a/test/pathod/test_pathoc.py +++ b/test/pathod/test_pathoc.py @@ -1,4 +1,5 @@  from six.moves import cStringIO as StringIO +from six import BytesIO  from mock import Mock  from netlib import http @@ -12,7 +13,7 @@ import tutils  def test_response(): -    r = http.Response("HTTP/1.1", 200, "Message", {}, None, None) +    r = http.Response(b"HTTP/1.1", 200, b"Message", {}, None, None)      assert repr(r) @@ -29,7 +30,7 @@ class PathocTestDaemon(tutils.DaemonTests):              if timeout:                  c.settimeout(timeout)              for i in requests: -                r = language.parse_pathoc(i).next() +                r = next(language.parse_pathoc(i))                  if kwargs.get("explain"):                      r = r.freeze(language.Settings())                  try: @@ -44,17 +45,17 @@ class TestDaemonSSL(PathocTestDaemon):      ssl = True      ssloptions = dict(          request_client_cert=True, -        sans=["test1.com", "test2.com"], +        sans=[b"test1.com", b"test2.com"],          alpn_select=b'h2',      )      def test_sni(self):          self.tval(              ["get:/p/200"], -            sni="foobar.com" +            sni=b"foobar.com"          )          log = self.d.log() -        assert log[0]["request"]["sni"] == "foobar.com" +        assert log[0]["request"]["sni"] == b"foobar.com"      def test_showssl(self):          assert "certificate chain" in self.tval(["get:/p/200"], showssl=True) @@ -171,36 +172,36 @@ class TestDaemon(PathocTestDaemon):          c.rfile, c.wfile = StringIO(), StringIO()          with raises("connect failed"):              c.http_connect(to) -        c.rfile = StringIO( -            "HTTP/1.1 500 OK\r\n" +        c.rfile = BytesIO( +            b"HTTP/1.1 500 OK\r\n"          )          with raises("connect failed"):              c.http_connect(to) -        c.rfile = StringIO( -            "HTTP/1.1 200 OK\r\n" +        c.rfile = BytesIO( +            b"HTTP/1.1 200 OK\r\n"          )          c.http_connect(to)      def test_socks_connect(self):          to = ("foobar", 80)          c = pathoc.Pathoc(("127.0.0.1", self.d.port), fp=None) -        c.rfile, c.wfile = tutils.treader(""), StringIO() +        c.rfile, c.wfile = tutils.treader(b""), BytesIO()          tutils.raises(pathoc.PathocError, c.socks_connect, to)          c.rfile = tutils.treader( -            "\x05\xEE" +            b"\x05\xEE"          )          tutils.raises("SOCKS without authentication", c.socks_connect, ("example.com", 0xDEAD))          c.rfile = tutils.treader( -            "\x05\x00" + -            "\x05\xEE\x00\x03\x0bexample.com\xDE\xAD" +            b"\x05\x00" + +            b"\x05\xEE\x00\x03\x0bexample.com\xDE\xAD"          )          tutils.raises("SOCKS server error", c.socks_connect, ("example.com", 0xDEAD))          c.rfile = tutils.treader( -            "\x05\x00" + -            "\x05\x00\x00\x03\x0bexample.com\xDE\xAD" +            b"\x05\x00" + +            b"\x05\x00\x00\x03\x0bexample.com\xDE\xAD"          )          c.socks_connect(("example.com", 0xDEAD)) diff --git a/test/pathod/tutils.py b/test/pathod/tutils.py index ccdd725b..daaa8628 100644 --- a/test/pathod/tutils.py +++ b/test/pathod/tutils.py @@ -20,7 +20,7 @@ def treader(bytes):      """          Construct a tcp.Read object from bytes.      """ -    fp = StringIO(bytes) +    fp = BytesIO(bytes)      return tcp.Reader(fp) | 
