diff options
-rw-r--r-- | examples/har_extractor.py | 3 | ||||
-rw-r--r-- | examples/upsidedownternet.py | 6 | ||||
-rw-r--r-- | mitmproxy/filt.py | 20 | ||||
-rw-r--r-- | mitmproxy/protocol/http2.py | 3 | ||||
-rw-r--r-- | mitmproxy/stateobject.py | 7 | ||||
-rw-r--r-- | mitmproxy/tnetstring.py | 5 | ||||
-rw-r--r-- | mitmproxy/web/app.py | 10 | ||||
-rw-r--r-- | pathod/app.py | 4 | ||||
-rw-r--r-- | pathod/test.py | 4 | ||||
-rw-r--r-- | test/mitmproxy/test_dump.py | 2 | ||||
-rw-r--r-- | test/mitmproxy/test_filt.py | 4 | ||||
-rw-r--r-- | test/mitmproxy/test_flow.py | 2 | ||||
-rw-r--r-- | test/pathod/test_language_actions.py | 4 | ||||
-rw-r--r-- | test/pathod/test_language_http.py | 17 | ||||
-rw-r--r-- | test/pathod/test_language_http2.py | 16 | ||||
-rw-r--r-- | test/pathod/test_language_writer.py | 31 | ||||
-rw-r--r-- | test/pathod/test_pathoc.py | 14 | ||||
-rw-r--r-- | test/pathod/test_pathoc_cmdline.py | 4 | ||||
-rw-r--r-- | test/pathod/test_pathod.py | 6 | ||||
-rw-r--r-- | test/pathod/test_pathod_cmdline.py | 1 | ||||
-rw-r--r-- | test/pathod/tutils.py | 10 |
21 files changed, 87 insertions, 86 deletions
diff --git a/examples/har_extractor.py b/examples/har_extractor.py index 25661f7c..15e1ef30 100644 --- a/examples/har_extractor.py +++ b/examples/har_extractor.py @@ -2,6 +2,7 @@ This inline script utilizes harparser.HAR from https://github.com/JustusW/harparser to generate a HAR log object. """ +import six from harparser import HAR from datetime import datetime @@ -111,7 +112,7 @@ def response(context, flow): # HAR timings are integers in ms, so we have to re-encode the raw timings to # that format. - timings = dict([(k, int(1000 * v)) for k, v in timings_raw.iteritems()]) + timings = dict([(k, int(1000 * v)) for k, v in six.iteritems(timings_raw)]) # The full_time is the sum of all timings. # Timings set to -1 will be ignored as per spec. diff --git a/examples/upsidedownternet.py b/examples/upsidedownternet.py index b7489cb6..9aac9f05 100644 --- a/examples/upsidedownternet.py +++ b/examples/upsidedownternet.py @@ -1,4 +1,4 @@ -import cStringIO +from six.moves import cStringIO as StringIO from PIL import Image from mitmproxy.models import decoded @@ -7,9 +7,9 @@ def response(context, flow): if flow.response.headers.get("content-type", "").startswith("image"): with decoded(flow.response): # automatically decode gzipped responses. try: - s = cStringIO.StringIO(flow.response.content) + s = StringIO(flow.response.content) img = Image.open(s).rotate(180) - s2 = cStringIO.StringIO() + s2 = StringIO() img.save(s2, "png") flow.response.content = s2.getvalue() flow.response.headers["content-type"] = "image/png" diff --git a/mitmproxy/filt.py b/mitmproxy/filt.py index aa62b717..5e0e13cc 100644 --- a/mitmproxy/filt.py +++ b/mitmproxy/filt.py @@ -31,19 +31,19 @@ ~c CODE Response code. rex Equivalent to ~u rex """ -from __future__ import absolute_import +from __future__ import absolute_import, print_function import re import sys import pyparsing as pp -class _Token: - +class _Token(object): def dump(self, indent=0, fp=sys.stdout): - print >> fp, "\t" * indent, self.__class__.__name__, - if hasattr(self, "expr"): - print >> fp, "(%s)" % self.expr, - print >> fp + print("{spacing}{name}{expr}".format( + spacing="\t" * indent, + name=self.__class__.__name__, + expr=getattr(self, "expr", "") + ), file=fp) class _Action(_Token): @@ -283,7 +283,7 @@ class FAnd(_Token): self.lst = lst def dump(self, indent=0, fp=sys.stdout): - print >> fp, "\t" * indent, self.__class__.__name__ + super(FAnd, self).dump(indent, fp) for i in self.lst: i.dump(indent + 1, fp) @@ -297,7 +297,7 @@ class FOr(_Token): self.lst = lst def dump(self, indent=0, fp=sys.stdout): - print >> fp, "\t" * indent, self.__class__.__name__ + super(FOr, self).dump(indent, fp) for i in self.lst: i.dump(indent + 1, fp) @@ -311,7 +311,7 @@ class FNot(_Token): self.itm = itm[0] def dump(self, indent=0, fp=sys.stdout): - print >> fp, "\t" * indent, self.__class__.__name__ + super(FNot, self).dump(indent, fp) self.itm.dump(indent + 1, fp) def __call__(self, f): diff --git a/mitmproxy/protocol/http2.py b/mitmproxy/protocol/http2.py index aa0d7825..1773729d 100644 --- a/mitmproxy/protocol/http2.py +++ b/mitmproxy/protocol/http2.py @@ -5,6 +5,7 @@ import time import Queue import h2 +import six from h2.connection import H2Connection from netlib.tcp import ssl_read_select @@ -172,7 +173,7 @@ class Http2Layer(Layer): if other_stream_id is not None: other_conn.h2.safe_reset_stream(other_stream_id, event.error_code) elif isinstance(event, h2.events.RemoteSettingsChanged): - new_settings = dict([(id, cs.new_value) for (id, cs) in event.changed_settings.iteritems()]) + new_settings = dict([(id, cs.new_value) for (id, cs) in six.iteritems(event.changed_settings)]) other_conn.h2.safe_update_settings(new_settings) elif isinstance(event, h2.events.ConnectionTerminated): # Do not immediately terminate the other connection. diff --git a/mitmproxy/stateobject.py b/mitmproxy/stateobject.py index a4a1ffda..fff6e116 100644 --- a/mitmproxy/stateobject.py +++ b/mitmproxy/stateobject.py @@ -1,4 +1,7 @@ from __future__ import absolute_import + +import six + from netlib.utils import Serializable @@ -23,7 +26,7 @@ class StateObject(Serializable): Retrieve object state. """ state = {} - for attr, cls in self._stateobject_attributes.iteritems(): + for attr, cls in six.iteritems(self._stateobject_attributes): val = getattr(self, attr) if hasattr(val, "get_state"): state[attr] = val.get_state() @@ -36,7 +39,7 @@ class StateObject(Serializable): Load object state from data returned by a get_state call. """ state = state.copy() - for attr, cls in self._stateobject_attributes.iteritems(): + for attr, cls in six.iteritems(self._stateobject_attributes): if state.get(attr) is None: setattr(self, attr, state.pop(attr)) else: diff --git a/mitmproxy/tnetstring.py b/mitmproxy/tnetstring.py index c5c185c6..d9d61258 100644 --- a/mitmproxy/tnetstring.py +++ b/mitmproxy/tnetstring.py @@ -67,6 +67,7 @@ like so:: u'\u03b1' """ +import six __ver_major__ = 0 __ver_minor__ = 2 @@ -172,7 +173,7 @@ def _rdumpq(q, size, value, encoding=None): if isinstance(value, dict): write("}") init_size = size = size + 1 - for (k, v) in value.iteritems(): + for (k, v) in six.iteritems(value): size = _rdumpq(q, size, v, encoding) size = _rdumpq(q, size, k, encoding) span = str(size - init_size) @@ -236,7 +237,7 @@ def _gdumps(value, encoding): yield "]" elif isinstance(value, (dict,)): sub = [] - for (k, v) in value.iteritems(): + for (k, v) in six.iteritems(value): sub.extend(_gdumps(k)) sub.extend(_gdumps(v)) sub = "".join(sub) diff --git a/mitmproxy/web/app.py b/mitmproxy/web/app.py index 63b7bf1a..2cac2ab9 100644 --- a/mitmproxy/web/app.py +++ b/mitmproxy/web/app.py @@ -1,5 +1,7 @@ import os.path import re + +import six import tornado.web import tornado.websocket import logging @@ -185,11 +187,11 @@ class FlowHandler(RequestHandler): def put(self, flow_id): flow = self.flow flow.backup() - for a, b in self.json.iteritems(): + for a, b in six.iteritems(self.json): if a == "request": request = flow.request - for k, v in b.iteritems(): + for k, v in six.iteritems(b): if k in ["method", "scheme", "host", "path", "http_version"]: setattr(request, k, str(v)) elif k == "port": @@ -201,7 +203,7 @@ class FlowHandler(RequestHandler): elif a == "response": response = flow.response - for k, v in b.iteritems(): + for k, v in six.iteritems(b): if k == "msg": response.msg = str(v) elif k == "code": @@ -293,7 +295,7 @@ class Settings(RequestHandler): def put(self): update = {} - for k, v in self.json.iteritems(): + for k, v in six.iteritems(self.json): if k == "intercept": self.state.set_intercept(v) update[k] = v diff --git a/pathod/app.py b/pathod/app.py index c6b7eabc..aa00ed69 100644 --- a/pathod/app.py +++ b/pathod/app.py @@ -1,6 +1,6 @@ import logging import pprint -import cStringIO +from six.moves import cStringIO as StringIO import copy from flask import Flask, jsonify, render_template, request, abort, make_response from . import version, language, utils @@ -145,7 +145,7 @@ def make_app(noapi, debug): args["marked"] = v.marked() return render(template, False, **args) - s = cStringIO.StringIO() + s = StringIO() settings = copy.copy(app.config["pathod"].settings) settings.request_host = EXAMPLE_HOST diff --git a/pathod/test.py b/pathod/test.py index 33a6b763..a2552376 100644 --- a/pathod/test.py +++ b/pathod/test.py @@ -1,4 +1,4 @@ -import cStringIO +from six.moves import cStringIO as StringIO import threading import Queue @@ -14,7 +14,7 @@ class Daemon: def __init__(self, ssl=None, **daemonargs): self.q = Queue.Queue() - self.logfp = cStringIO.StringIO() + self.logfp = StringIO() daemonargs["logfp"] = self.logfp self.thread = _PaThread(self.IFACE, self.q, ssl, daemonargs) self.thread.start() diff --git a/test/mitmproxy/test_dump.py b/test/mitmproxy/test_dump.py index 3588a73f..2228a732 100644 --- a/test/mitmproxy/test_dump.py +++ b/test/mitmproxy/test_dump.py @@ -1,5 +1,5 @@ import os -from cStringIO import StringIO +from six.moves import cStringIO as StringIO from mitmproxy.exceptions import ContentViewException from mitmproxy.models import HTTPResponse diff --git a/test/mitmproxy/test_filt.py b/test/mitmproxy/test_filt.py index 0ea635e7..842cbd44 100644 --- a/test/mitmproxy/test_filt.py +++ b/test/mitmproxy/test_filt.py @@ -1,4 +1,4 @@ -import cStringIO +from six.moves import cStringIO as StringIO from mitmproxy import filt from mitmproxy.models import Error from mitmproxy.models import http @@ -9,7 +9,7 @@ from . import tutils class TestParsing: def _dump(self, x): - c = cStringIO.StringIO() + c = StringIO() x.dump(fp=c) assert c.getvalue() diff --git a/test/mitmproxy/test_flow.py b/test/mitmproxy/test_flow.py index 13ced265..0d9a2e8d 100644 --- a/test/mitmproxy/test_flow.py +++ b/test/mitmproxy/test_flow.py @@ -1,7 +1,7 @@ import Queue import time import os.path -from cStringIO import StringIO +from six.moves import cStringIO as StringIO import email.utils import mock diff --git a/test/pathod/test_language_actions.py b/test/pathod/test_language_actions.py index 1c404714..c2e15189 100644 --- a/test/pathod/test_language_actions.py +++ b/test/pathod/test_language_actions.py @@ -1,4 +1,4 @@ -import cStringIO +from six.moves import cStringIO as StringIO from pathod.language import actions from pathod import language @@ -61,7 +61,7 @@ class TestInject: assert v.offset == "r" def test_serve(self): - s = cStringIO.StringIO() + s = StringIO() r = language.parse_pathod("400:i0,'foo'").next() assert language.serve(r, s, {}) diff --git a/test/pathod/test_language_http.py b/test/pathod/test_language_http.py index fd60c9fd..d1870a63 100644 --- a/test/pathod/test_language_http.py +++ b/test/pathod/test_language_http.py @@ -1,5 +1,4 @@ -import cStringIO - +from six.moves import cStringIO as StringIO from pathod import language from pathod.language import http, base import tutils @@ -10,7 +9,7 @@ def parse_request(s): def test_make_error_response(): - d = cStringIO.StringIO() + d = StringIO() s = http.make_error_response("foo") language.serve(s, d, {}) @@ -76,7 +75,7 @@ class TestRequest: assert r[0].values({}) def test_render(self): - s = cStringIO.StringIO() + s = StringIO() r = parse_request("GET:'/foo'") assert language.serve( r, @@ -163,7 +162,7 @@ class TestResponse: assert "OK" in [i[:] for i in r.preamble({})] def test_render(self): - s = cStringIO.StringIO() + s = StringIO() r = language.parse_pathod("400:m'msg'").next() assert language.serve(r, s, {}) @@ -173,13 +172,13 @@ class TestResponse: assert "p0" not in s.spec() def test_raw(self): - s = cStringIO.StringIO() + s = StringIO() r = language.parse_pathod("400:b'foo'").next() language.serve(r, s, {}) v = s.getvalue() assert "Content-Length" in v - s = cStringIO.StringIO() + s = StringIO() r = language.parse_pathod("400:b'foo':r").next() language.serve(r, s, {}) v = s.getvalue() @@ -187,7 +186,7 @@ class TestResponse: def test_length(self): def testlen(x): - s = cStringIO.StringIO() + s = StringIO() x = x.next() language.serve(x, s, language.Settings()) assert x.length(language.Settings()) == len(s.getvalue()) @@ -198,7 +197,7 @@ class TestResponse: def test_maximum_length(self): def testlen(x): x = x.next() - s = cStringIO.StringIO() + s = StringIO() m = x.maximum_length({}) language.serve(x, s, {}) assert m >= len(s.getvalue()) diff --git a/test/pathod/test_language_http2.py b/test/pathod/test_language_http2.py index 8e9f188c..abfe4606 100644 --- a/test/pathod/test_language_http2.py +++ b/test/pathod/test_language_http2.py @@ -1,4 +1,4 @@ -import cStringIO +from six.moves import cStringIO as StringIO import netlib from netlib import tcp @@ -25,7 +25,7 @@ def default_settings(): def test_make_error_response(): - d = cStringIO.StringIO() + d = StringIO() s = http2.make_error_response("foo", "bar") language.serve(s, d, default_settings()) @@ -84,7 +84,7 @@ class TestRequest: assert r[1].method.string() == "GET" def test_render_simple(self): - s = cStringIO.StringIO() + s = StringIO() r = parse_request("GET:'/foo'") assert language.serve( r, @@ -126,7 +126,7 @@ class TestRequest: assert r.headers[0].values(default_settings()) == ("user-agent", user_agents.get_by_shortcut('a')[2]) def test_render_with_headers(self): - s = cStringIO.StringIO() + s = StringIO() r = parse_request('GET:/foo:h"foo"="bar"') assert language.serve( r, @@ -143,7 +143,7 @@ class TestRequest: def test_render_with_body(self): - s = cStringIO.StringIO() + s = StringIO() r = parse_request("GET:'/foo':bfoobar") assert language.serve( r, @@ -200,7 +200,7 @@ class TestResponse: assert r.body.string() == "foobar" def test_render_simple(self): - s = cStringIO.StringIO() + s = StringIO() r = parse_response('200') assert language.serve( r, @@ -209,7 +209,7 @@ class TestResponse: ) def test_render_with_headers(self): - s = cStringIO.StringIO() + s = StringIO() r = parse_response('200:h"foo"="bar"') assert language.serve( r, @@ -218,7 +218,7 @@ class TestResponse: ) def test_render_with_body(self): - s = cStringIO.StringIO() + s = StringIO() r = parse_response('200:bfoobar') assert language.serve( r, diff --git a/test/pathod/test_language_writer.py b/test/pathod/test_language_writer.py index 1a4ac954..0a85524f 100644 --- a/test/pathod/test_language_writer.py +++ b/test/pathod/test_language_writer.py @@ -1,5 +1,4 @@ -import cStringIO - +from six.moves import cStringIO as StringIO from pathod import language from pathod.language import writer @@ -7,12 +6,12 @@ from pathod.language import writer def test_send_chunk(): v = "foobarfoobar" for bs in range(1, len(v) + 2): - s = cStringIO.StringIO() + s = StringIO() writer.send_chunk(s, v, bs, 0, len(v)) assert s.getvalue() == v for start in range(len(v)): for end in range(len(v)): - s = cStringIO.StringIO() + s = StringIO() writer.send_chunk(s, v, bs, start, end) assert s.getvalue() == v[start:end] @@ -20,21 +19,21 @@ def test_send_chunk(): def test_write_values_inject(): tst = "foo" - s = cStringIO.StringIO() + s = StringIO() writer.write_values(s, [tst], [(0, "inject", "aaa")], blocksize=5) assert s.getvalue() == "aaafoo" - s = cStringIO.StringIO() + s = StringIO() writer.write_values(s, [tst], [(1, "inject", "aaa")], blocksize=5) assert s.getvalue() == "faaaoo" - s = cStringIO.StringIO() + s = StringIO() writer.write_values(s, [tst], [(1, "inject", "aaa")], blocksize=5) assert s.getvalue() == "faaaoo" def test_write_values_disconnects(): - s = cStringIO.StringIO() + s = StringIO() tst = "foo" * 100 writer.write_values(s, [tst], [(0, "disconnect")], blocksize=5) assert not s.getvalue() @@ -42,13 +41,13 @@ def test_write_values_disconnects(): def test_write_values(): tst = "foobarvoing" - s = cStringIO.StringIO() + s = StringIO() writer.write_values(s, [tst], []) assert s.getvalue() == tst for bs in range(1, len(tst) + 2): for off in range(len(tst)): - s = cStringIO.StringIO() + s = StringIO() writer.write_values( s, [tst], [(off, "disconnect")], blocksize=bs ) @@ -58,34 +57,34 @@ def test_write_values(): def test_write_values_pauses(): tst = "".join(str(i) for i in range(10)) for i in range(2, 10): - s = cStringIO.StringIO() + s = StringIO() writer.write_values( s, [tst], [(2, "pause", 0), (1, "pause", 0)], blocksize=i ) assert s.getvalue() == tst for i in range(2, 10): - s = cStringIO.StringIO() + s = StringIO() writer.write_values(s, [tst], [(1, "pause", 0)], blocksize=i) assert s.getvalue() == tst tst = ["".join(str(i) for i in range(10))] * 5 for i in range(2, 10): - s = cStringIO.StringIO() + s = StringIO() writer.write_values(s, tst[:], [(1, "pause", 0)], blocksize=i) assert s.getvalue() == "".join(tst) def test_write_values_after(): - s = cStringIO.StringIO() + s = StringIO() r = language.parse_pathod("400:da").next() language.serve(r, s, {}) - s = cStringIO.StringIO() + s = StringIO() r = language.parse_pathod("400:pa,0").next() language.serve(r, s, {}) - s = cStringIO.StringIO() + s = StringIO() r = language.parse_pathod("400:ia,'xx'").next() language.serve(r, s, {}) assert s.getvalue().endswith('xx') diff --git a/test/pathod/test_pathoc.py b/test/pathod/test_pathoc.py index 280a9141..8d0f92ac 100644 --- a/test/pathod/test_pathoc.py +++ b/test/pathod/test_pathoc.py @@ -1,5 +1,5 @@ import json -import cStringIO +from six.moves import cStringIO as StringIO import re import OpenSSL import pytest @@ -64,7 +64,7 @@ class _TestDaemon: ignoretimeout=None, showsummary=True ): - s = cStringIO.StringIO() + s = StringIO() c = pathoc.Pathoc( ("127.0.0.1", self.d.port), ssl=self.ssl, @@ -129,7 +129,7 @@ class TestDaemonSSL(_TestDaemon): assert d["log"][0]["request"]["clientcert"]["keyinfo"] def test_http2_without_ssl(self): - fp = cStringIO.StringIO() + fp = StringIO() c = pathoc.Pathoc( ("127.0.0.1", self.d.port), use_http2=True, @@ -227,15 +227,15 @@ class TestDaemon(_TestDaemon): def test_connect_fail(self): to = ("foobar", 80) c = pathoc.Pathoc(("127.0.0.1", self.d.port), fp=None) - c.rfile, c.wfile = cStringIO.StringIO(), cStringIO.StringIO() + c.rfile, c.wfile = StringIO(), StringIO() with raises("connect failed"): c.http_connect(to) - c.rfile = cStringIO.StringIO( + c.rfile = StringIO( "HTTP/1.1 500 OK\r\n" ) with raises("connect failed"): c.http_connect(to) - c.rfile = cStringIO.StringIO( + c.rfile = StringIO( "HTTP/1.1 200 OK\r\n" ) c.http_connect(to) @@ -243,7 +243,7 @@ class TestDaemon(_TestDaemon): 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(""), cStringIO.StringIO() + c.rfile, c.wfile = tutils.treader(""), StringIO() tutils.raises(pathoc.PathocError, c.socks_connect, to) c.rfile = tutils.treader( diff --git a/test/pathod/test_pathoc_cmdline.py b/test/pathod/test_pathoc_cmdline.py index ab1438d1..f527e861 100644 --- a/test/pathod/test_pathoc_cmdline.py +++ b/test/pathod/test_pathoc_cmdline.py @@ -1,13 +1,13 @@ from pathod import pathoc_cmdline as cmdline import tutils -import cStringIO +from six.moves import cStringIO as StringIO import mock @mock.patch("argparse.ArgumentParser.error") def test_pathoc(perror): assert cmdline.args_pathoc(["pathoc", "foo.com", "get:/"]) - s = cStringIO.StringIO() + s = StringIO() with tutils.raises(SystemExit): cmdline.args_pathoc(["pathoc", "--show-uas"], s, s) diff --git a/test/pathod/test_pathod.py b/test/pathod/test_pathod.py index f8eb55f9..c0039b73 100644 --- a/test/pathod/test_pathod.py +++ b/test/pathod/test_pathod.py @@ -1,6 +1,4 @@ -import sys -import cStringIO -import OpenSSL +from six.moves import cStringIO as StringIO import pytest from pathod import pathod, version @@ -12,7 +10,7 @@ import tutils class TestPathod(object): def test_logging(self): - s = cStringIO.StringIO() + s = StringIO() p = pathod.Pathod(("127.0.0.1", 0), logfp=s) assert len(p.get_log()) == 0 id = p.add_log(dict(s="foo")) diff --git a/test/pathod/test_pathod_cmdline.py b/test/pathod/test_pathod_cmdline.py index d156bf50..3c0918ef 100644 --- a/test/pathod/test_pathod_cmdline.py +++ b/test/pathod/test_pathod_cmdline.py @@ -1,6 +1,5 @@ from pathod import pathod_cmdline as cmdline import tutils -import cStringIO import mock diff --git a/test/pathod/tutils.py b/test/pathod/tutils.py index abe7a59b..9739afde 100644 --- a/test/pathod/tutils.py +++ b/test/pathod/tutils.py @@ -1,9 +1,7 @@ import tempfile -import os import re import shutil -import cStringIO -from contextlib import contextmanager +from six.moves import cStringIO as StringIO import netlib from pathod import utils, test, pathoc, pathod, language @@ -14,7 +12,7 @@ def treader(bytes): """ Construct a tcp.Read object from bytes. """ - fp = cStringIO.StringIO(bytes) + fp = StringIO(bytes) return tcp.Reader(fp) @@ -93,7 +91,7 @@ class DaemonTests(object): """ if ssl is None: ssl = self.ssl - logfp = cStringIO.StringIO() + logfp = StringIO() c = pathoc.Pathoc( ("localhost", self.d.port), ssl=ssl, @@ -123,6 +121,6 @@ test_data = utils.Data(__name__) def render(r, settings=language.Settings()): r = r.resolve(settings) - s = cStringIO.StringIO() + s = StringIO() assert language.serve(r, s, settings) return s.getvalue() |