From f6699792da82c00de4cdcc1e413bd65caad9d3c3 Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Sun, 25 Mar 2018 12:12:00 +0200 Subject: docs: add auto-generated options reference --- docs/.gitignore | 1 + docs/build-current | 9 ++++- docs/scripts/filters.py | 4 +- docs/scripts/options.py | 45 ++++++++++++++++++++-- docs/src/content/concepts-filters.md | 32 +-------------- docs/src/content/concepts-options.md | 33 ++++------------ docs/src/generated/.gitkeep | 0 docs/src/layouts/shortcodes/readfile.html | 6 +++ docs/src/themes/mitmproxydocs/static/css/style.css | 15 ++++++++ docs/style/badge.scss | 18 +++++++++ docs/style/style.scss | 1 + 11 files changed, 101 insertions(+), 63 deletions(-) mode change 100644 => 100755 docs/scripts/options.py create mode 100644 docs/src/generated/.gitkeep create mode 100644 docs/src/layouts/shortcodes/readfile.html create mode 100644 docs/style/badge.scss (limited to 'docs') diff --git a/docs/.gitignore b/docs/.gitignore index 0eba9c59..64b6fff6 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1,3 +1,4 @@ +generated/ src/public node_modules public diff --git a/docs/build-current b/docs/build-current index a78acab4..7164de6d 100755 --- a/docs/build-current +++ b/docs/build-current @@ -1,5 +1,12 @@ -#!/bin/sh +#!/usr/bin/env bash + set -e +for script in scripts/* ; do + echo "Generating output for $script ..." + output="${script##*/}" + "$script" > "src/generated/${output%.*}.html" +done + cd src hugo diff --git a/docs/scripts/filters.py b/docs/scripts/filters.py index e61733a0..05cc7a0f 100755 --- a/docs/scripts/filters.py +++ b/docs/scripts/filters.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 from mitmproxy import flowfilter @@ -6,4 +6,4 @@ from mitmproxy import flowfilter print("") for i in flowfilter.help: print("" % i) -print("
%s%s
") \ No newline at end of file +print("") diff --git a/docs/scripts/options.py b/docs/scripts/options.py old mode 100644 new mode 100755 index 5ad23d67..ff7d0f7f --- a/docs/scripts/options.py +++ b/docs/scripts/options.py @@ -1,4 +1,5 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 + from mitmproxy import options, optmanager from mitmproxy.tools import dump, console, web @@ -8,7 +9,45 @@ masters = { "mitmweb": web.master.WebMaster } -for name, master in masters.items(): +unified_options = {} + +for tool_name, master in masters.items(): opts = options.Options() inst = master(opts) - print(optmanager.dump_dicts(opts)) + for key, option in optmanager.dump_dicts(opts).items(): + if key in unified_options: + unified_options[key]['tools'].append(tool_name) + else: + unified_options[key] = option + unified_options[key]['tools'] = [tool_name] + +print(""" + + + + + + + + + + """.strip()) +for key, option in sorted(unified_options.items(), key=lambda t: t[0]): + print(""" + + + + + + """.strip().format( + key, + ' '.join(["{}".format(t) for t in option['tools']]), + option['type'], + option['help'], + option['default'], + "
Choices: {}".format(', '.join(option['choices'])) if option['choices'] else "", + )) +print("
NameTypeDescription
{}
{}
{}{}
+ Default: {} + {} +
") diff --git a/docs/src/content/concepts-filters.md b/docs/src/content/concepts-filters.md index ada24e32..f0b9a4b2 100644 --- a/docs/src/content/concepts-filters.md +++ b/docs/src/content/concepts-filters.md @@ -10,37 +10,7 @@ menu: Many commands in the mitmproxy tool make use of filter expressions. Filter expressions consist of the following operators: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
~aMatch asset in response: CSS, Javascript, Flash, images.
~b regexBody
~bq regexRequest body
~bs regexResponse body
~c intHTTP response code
~d regexDomain
~dst regexMatch destination address
~eMatch error
~h regexHeader
~hq regexRequest header
~hs regexResponse header
~httpMatch HTTP flows
~m regexMethod
~markedMatch marked flows
~qMatch request with no response
~sMatch response
~src regexMatch source address
~t regexContent-type header
~tcpMatch TCP flows
~tq regexRequest Content-Type header
~ts regexResponse Content-Type header
~u regexURL
~websocketMatch WebSocket flows
!unary not
&and
|or
(...)grouping
- +{{< readfile file="/generated/filters.html" >}} - Regexes are Python-style - Regexes can be specified as quoted strings diff --git a/docs/src/content/concepts-options.md b/docs/src/content/concepts-options.md index 18776841..b533c175 100644 --- a/docs/src/content/concepts-options.md +++ b/docs/src/content/concepts-options.md @@ -34,33 +34,14 @@ interactively have immediate effect in the running instance, and can be made persistent by saving the settings out to a YAML configuration file (please see the specific tool's interactive help for details on how to do this). -For all tools, options can be set directly by name using the `--set` command-line -option. Please see the command-line help (`--help`) for usage. +For all tools, options can be set directly by name using the `--set` +command-line option. Please see the command-line help (`--help`) for usage. -## Example - -Here is an excerpt showing the first few lines of the complete `--options` -output: - -{{< highlight yaml >}} - -# Add all certificates of the upstream server to the certificate chain -# that will be served to the proxy client, as extras. Type bool. -add_upstream_certs_to_client_chain: false - -# Allow remote clients to connect to proxy. If set to false, client will -# not be able to connect to proxy unless it is on the same network or -# the proxyauth option is set Type bool. -allow_remote: false - -# Strip out request headers that might cause the server to return -# 304-not-modified. Type bool. -anticache: false - -# Try to convince servers to send us un-compressed data. Type bool. -anticomp: false - -{{< /highlight >}} +## Available Options +This list might not reflect what is actually available in your current mitmproxy +environment. For an up-to-date list please use the `--options` flag for each of +the mitmproxy tools. +{{< readfile file="/generated/options.html" >}} diff --git a/docs/src/generated/.gitkeep b/docs/src/generated/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/docs/src/layouts/shortcodes/readfile.html b/docs/src/layouts/shortcodes/readfile.html new file mode 100644 index 00000000..6860b0f1 --- /dev/null +++ b/docs/src/layouts/shortcodes/readfile.html @@ -0,0 +1,6 @@ +{{$file := .Get "file"}} +{{- if eq (.Get "markdown") "true" -}} +{{- $file | readFile | markdownify -}} +{{- else -}} +{{ $file | readFile | safeHTML }} +{{- end -}} diff --git a/docs/src/themes/mitmproxydocs/static/css/style.css b/docs/src/themes/mitmproxydocs/static/css/style.css index db5a36cf..d42e307e 100644 --- a/docs/src/themes/mitmproxydocs/static/css/style.css +++ b/docs/src/themes/mitmproxydocs/static/css/style.css @@ -250,6 +250,21 @@ .chroma .gu { color: #75715e; } +.badge { + color: #fff; + background-color: #6c757d; + display: inline-block; + padding: .25em .4em; + font-size: 75%; + font-weight: 1; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; } + .badge:empty { + display: none; } + @keyframes spinAround { from { transform: rotate(0deg); } diff --git a/docs/style/badge.scss b/docs/style/badge.scss new file mode 100644 index 00000000..8082f6c7 --- /dev/null +++ b/docs/style/badge.scss @@ -0,0 +1,18 @@ +.badge { + color: #fff; + background-color: #6c757d; + display: inline-block; + padding: .25em .4em; + font-size: 75%; + font-weight: 1; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; + + // Empty badges collapse automatically + &:empty { + display: none; + } +} diff --git a/docs/style/style.scss b/docs/style/style.scss index 2b0d2993..b404dc42 100644 --- a/docs/style/style.scss +++ b/docs/style/style.scss @@ -1,4 +1,5 @@ @import "./syntax"; +@import "./badge"; $primary: #C93312; $warning-invert: #FFFFFF; -- cgit v1.2.3