From aabc78350a73534729611a6b9bf38fb7e4b390ae Mon Sep 17 00:00:00 2001 From: Matthew Shao Date: Mon, 12 Jun 2017 20:26:46 +0800 Subject: Add GET /options RESTful API for mitmweb. --- mitmproxy/optmanager.py | 14 ++++++++++++++ mitmproxy/tools/web/app.py | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/mitmproxy/optmanager.py b/mitmproxy/optmanager.py index 70f60bb6..3685c003 100644 --- a/mitmproxy/optmanager.py +++ b/mitmproxy/optmanager.py @@ -416,6 +416,20 @@ def dump_defaults(opts): return ruamel.yaml.round_trip_dump(s) +def dump_dicts(opts): + """ + Dumps the options into a list of dict object. + + Return: A list like: [ { name: "anticahce", type: "bool", default: false, value: true, help: "help text"}] + """ + options_list = [] + for k in sorted(opts.keys()): + o = opts._options[k] + option = {'name': k, 'type': o.typespec.__name__, 'default': o.default, 'value': o.current(), 'help': o.help.strip()} + options_list.append(option) + return options_list + + def parse(text): if not text: return {} diff --git a/mitmproxy/tools/web/app.py b/mitmproxy/tools/web/app.py index c55c0cb5..b512671c 100644 --- a/mitmproxy/tools/web/app.py +++ b/mitmproxy/tools/web/app.py @@ -17,6 +17,8 @@ from mitmproxy import http from mitmproxy import io from mitmproxy import log from mitmproxy import version +from mitmproxy import options +from mitmproxy import optmanager import mitmproxy.tools.web.master # noqa @@ -438,6 +440,11 @@ class Settings(RequestHandler): self.master.options.update(**update) +class Options(RequestHandler): + def get(self): + self.write(optmanager.dump_dicts(self.master.options)) + + class Application(tornado.web.Application): def __init__(self, master, debug): self.master = master @@ -462,6 +469,7 @@ class Application(tornado.web.Application): FlowContentView), (r"/settings", Settings), (r"/clear", ClearAll), + (r"/options", Options) ] settings = dict( template_path=os.path.join(os.path.dirname(__file__), "templates"), -- cgit v1.2.3