diff options
author | Maximilian Hils <git@maximilianhils.com> | 2015-03-23 00:24:56 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2015-03-23 00:24:56 +0100 |
commit | 968c7021dfef00c459899520921faf7367e923d9 (patch) | |
tree | 71df74f580e277add1f11439ea3ae32019f13789 /libmproxy/web/app.py | |
parent | 2acd77dea025b489d5d0ca19fc1c84901ac335d4 (diff) | |
download | mitmproxy-968c7021dfef00c459899520921faf7367e923d9.tar.gz mitmproxy-968c7021dfef00c459899520921faf7367e923d9.tar.bz2 mitmproxy-968c7021dfef00c459899520921faf7367e923d9.zip |
web: add basic edit capability for first line
Diffstat (limited to 'libmproxy/web/app.py')
-rw-r--r-- | libmproxy/web/app.py | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/libmproxy/web/app.py b/libmproxy/web/app.py index 8598acf5..76160dc1 100644 --- a/libmproxy/web/app.py +++ b/libmproxy/web/app.py @@ -26,6 +26,12 @@ class RequestHandler(tornado.web.RequestHandler): ) @property + def json(self): + if not self.request.headers.get("Content-Type").startswith("application/json"): + return None + return json.loads(self.request.body) + + @property def state(self): return self.application.master.state @@ -111,6 +117,35 @@ class FlowHandler(RequestHandler): self.flow.kill(self.master) self.state.delete_flow(self.flow) + def put(self, flow_id): + flow = self.flow + for a, b in self.json.iteritems(): + + if a == "request": + request = flow.request + for k, v in b.iteritems(): + if k in ["method", "scheme", "host", "path"]: + setattr(request, k, str(v)) + elif k == "port": + request.port = int(v) + elif k == "httpversion": + request.httpversion = tuple(int(x) for x in v) + else: + print "Warning: Unknown update {}.{}: {}".format(a, k, v) + + elif a == "response": + response = flow.response + for k, v in b.iteritems(): + if k == "msg": + response.msg = str(v) + elif k == "code": + response.code = int(v) + elif k == "httpversion": + response.httpversion = tuple(int(x) for x in v) + else: + print "Warning: Unknown update {}: {}".format(a, b) + self.state.update_flow(flow) + class DuplicateFlow(RequestHandler): def post(self, flow_id): @@ -176,18 +211,12 @@ class Settings(RequestHandler): ) )) - def put(self, *update, **kwargs): + def put(self): update = {} - for k, v in self.request.arguments.iteritems(): - if len(v) != 1: - print "Warning: Unknown length for setting {}: {}".format(k, v) - continue - - if k == "_xsrf": - continue - elif k == "intercept": - self.state.set_intercept(v[0]) - update[k] = v[0] + for k, v in self.json.iteritems(): + if k == "intercept": + self.state.set_intercept(v) + update[k] = v else: print "Warning: Unknown setting {}: {}".format(k, v) |