aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy
diff options
context:
space:
mode:
Diffstat (limited to 'libmproxy')
-rw-r--r--libmproxy/console/__init__.py9
-rw-r--r--libmproxy/dump.py12
-rw-r--r--libmproxy/flow.py12
-rw-r--r--libmproxy/protocol/http.py6
-rw-r--r--libmproxy/web/__init__.py10
5 files changed, 30 insertions, 19 deletions
diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py
index cef2013e..31edca81 100644
--- a/libmproxy/console/__init__.py
+++ b/libmproxy/console/__init__.py
@@ -290,15 +290,6 @@ class ConsoleMaster(flow.FlowMaster):
self.loop.widget = window
self.loop.draw_screen()
- def start_stream_to_path(self, path, mode="wb"):
- path = os.path.expanduser(path)
- try:
- f = file(path, mode)
- self.start_stream(f, None)
- except IOError as v:
- return str(v)
- self.stream_path = path
-
def _run_script_method(self, method, s, f):
status, val = s.run(method, f)
if val:
diff --git a/libmproxy/dump.py b/libmproxy/dump.py
index 22a2b75c..c2a3268a 100644
--- a/libmproxy/dump.py
+++ b/libmproxy/dump.py
@@ -85,12 +85,12 @@ class DumpMaster(flow.FlowMaster):
self.set_stickyauth(options.stickyauth)
if options.outfile:
- path = os.path.expanduser(options.outfile[0])
- try:
- f = open(path, options.outfile[1])
- self.start_stream(f, self.filt)
- except IOError as v:
- raise DumpError(v.strerror)
+ err = self.start_stream_to_path(
+ options.outfile[0],
+ options.outfile[1]
+ )
+ if err:
+ raise DumpError(err)
if options.replacements:
for i in options.replacements:
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 9815a298..8e066191 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -665,7 +665,7 @@ class FlowMaster(controller.Master):
self.add_event("Script error:\n" + str(e), "error")
script.reloader.unwatch(script_obj)
self.scripts.remove(script_obj)
-
+
def load_script(self, command, use_reloader=False):
"""
Loads a script. Returns an error description if something went
@@ -1070,6 +1070,16 @@ class FlowMaster(controller.Master):
self.stream.fo.close()
self.stream = None
+ def start_stream_to_path(self, path, mode="wb"):
+ path = os.path.expanduser(path)
+ try:
+ f = file(path, mode)
+ self.start_stream(f, None)
+ except IOError as v:
+ return str(v)
+ self.stream_path = path
+
+
def read_flows_from_paths(paths):
"""
Given a list of filepaths, read all flows and return a list of them.
diff --git a/libmproxy/protocol/http.py b/libmproxy/protocol/http.py
index d3fd4b37..d72adc37 100644
--- a/libmproxy/protocol/http.py
+++ b/libmproxy/protocol/http.py
@@ -53,7 +53,7 @@ class _StreamingHttpLayer(_HttpLayer):
def read_response(self, request):
response = self.read_response_headers()
- response.content = b"".join(
+ response.data.content = b"".join(
self.read_response_body(request, response)
)
return response
@@ -469,9 +469,9 @@ class HttpLayer(Layer):
if self.supports_streaming:
if flow.response.stream:
- flow.response.content = CONTENT_MISSING
+ flow.response.data.content = CONTENT_MISSING
else:
- flow.response.content = b"".join(self.read_response_body(
+ flow.response.data.content = b"".join(self.read_response_body(
flow.request,
flow.response
))
diff --git a/libmproxy/web/__init__.py b/libmproxy/web/__init__.py
index a0af7315..90da6ffe 100644
--- a/libmproxy/web/__init__.py
+++ b/libmproxy/web/__init__.py
@@ -134,6 +134,16 @@ class WebMaster(flow.FlowMaster):
"Could not read flow file: %s" % v,
"error"
)
+
+ if options.outfile:
+ err = self.start_stream_to_path(
+ options.outfile[0],
+ options.outfile[1]
+ )
+ if err:
+ print >> sys.stderr, "Stream file error:", err
+ sys.exit(1)
+
if self.options.app:
self.start_app(self.options.app_host, self.options.app_port)