diff options
author | Maximilian Hils <git@maximilianhils.com> | 2015-12-02 19:50:08 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2015-12-02 19:50:08 +0100 |
commit | 3963a2191be816ce697d9f666b48c989e30d83ef (patch) | |
tree | dc9a9666ac6441bc5b182fb1d1e34ff1c3d20050 /libmproxy/flow_format_compat.py | |
parent | b5d5e56fdb32717ab8f4c99c4f31c56df46afa91 (diff) | |
download | mitmproxy-3963a2191be816ce697d9f666b48c989e30d83ef.tar.gz mitmproxy-3963a2191be816ce697d9f666b48c989e30d83ef.tar.bz2 mitmproxy-3963a2191be816ce697d9f666b48c989e30d83ef.zip |
add import capability for old flows, fix #840
Diffstat (limited to 'libmproxy/flow_format_compat.py')
-rw-r--r-- | libmproxy/flow_format_compat.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libmproxy/flow_format_compat.py b/libmproxy/flow_format_compat.py new file mode 100644 index 00000000..02fa41a3 --- /dev/null +++ b/libmproxy/flow_format_compat.py @@ -0,0 +1,33 @@ +""" +This module handles the import of mitmproxy flows generated by old versions. +""" +from __future__ import absolute_import, print_function, division +from . import version + + +def convert_013_014(data): + data["request"]["first_line_format"] = data["request"].pop("form_in") + data["request"]["http_version"] = "HTTP/" + ".".join(str(x) for x in data["request"].pop("httpversion")) + data["response"]["status_code"] = data["response"].pop("code") + data["response"]["body"] = data["response"].pop("content") + data["server_conn"].pop("state") + data["server_conn"]["via"] = None + data["version"] = version.IVERSION + return data + +converters = { + (0, 13): convert_013_014 +} + + +def migrate_flow(flow_data): + while True: + flow_version = tuple(flow_data["version"][:2]) + if flow_version == version.IVERSION[:2]: + break + elif flow_version in converters: + flow_data = converters[flow_version](flow_data) + else: + v = ".".join(str(i) for i in flow_data["version"]) + raise ValueError("Incompatible serialized data version: {}".format(v)) + return flow_data |