codekingpro/portable-devtools
115k
1import argparse2 3 4def common_options(parser, opts):5 parser.add_argument(6 "--version",7 action="store_true",8 help="show version number and exit",9 dest="version",10 )11 parser.add_argument(12 "--options",13 action="store_true",14 help="Show all options and their default values",15 )16 parser.add_argument(17 "--commands",18 action="store_true",19 help="Show all commands and their signatures",20 )21 parser.add_argument(22 "--set",23 type=str,24 dest="setoptions",25 default=[],26 action="append",27 metavar="option[=value]",28 help="""29 Set an option. When the value is omitted, booleans are set to true,30 strings and integers are set to None (if permitted), and sequences31 are emptied. Boolean values can be true, false or toggle.32 Sequences are set using multiple invocations to set for33 the same option.34 """,35 )36 parser.add_argument(37 "-q", "--quiet", action="store_true", dest="quiet", help="Quiet."38 )39 parser.add_argument(40 "-v",41 "--verbose",42 action="store_const",43 dest="verbose",44 const="debug",45 help="Increase log verbosity.",46 )47 48 # Basic options49 opts.make_parser(parser, "mode", short="m")50 opts.make_parser(parser, "anticache")51 opts.make_parser(parser, "showhost")52 opts.make_parser(parser, "show_ignored_hosts")53 opts.make_parser(parser, "rfile", metavar="PATH", short="r")54 opts.make_parser(parser, "scripts", metavar="SCRIPT", short="s")55 opts.make_parser(parser, "stickycookie", metavar="FILTER")56 opts.make_parser(parser, "stickyauth", metavar="FILTER")57 opts.make_parser(parser, "save_stream_file", metavar="PATH", short="w")58 opts.make_parser(parser, "anticomp")59 60 # Proxy options61 group = parser.add_argument_group("Proxy Options")62 opts.make_parser(group, "listen_host", metavar="HOST")63 opts.make_parser(group, "listen_port", metavar="PORT", short="p")64 opts.make_parser(group, "server", short="n")65 opts.make_parser(group, "ignore_hosts", metavar="HOST")66 opts.make_parser(group, "allow_hosts", metavar="HOST")67 opts.make_parser(group, "tcp_hosts", metavar="HOST")68 opts.make_parser(group, "upstream_auth", metavar="USER:PASS")69 opts.make_parser(group, "proxyauth", metavar="SPEC")70 opts.make_parser(group, "store_streamed_bodies")71 opts.make_parser(group, "rawtcp")72 opts.make_parser(group, "http2")73 74 # Proxy SSL options75 group = parser.add_argument_group("SSL")76 opts.make_parser(group, "certs", metavar="SPEC")77 opts.make_parser(group, "cert_passphrase", metavar="PASS")78 opts.make_parser(group, "ssl_insecure", short="k")79 80 # Client replay81 group = parser.add_argument_group("Client Replay")82 opts.make_parser(group, "client_replay", metavar="PATH", short="C")83 84 # Server replay85 group = parser.add_argument_group("Server Replay")86 opts.make_parser(group, "server_replay", metavar="PATH", short="S")87 opts.make_parser(group, "server_replay_kill_extra")88 opts.make_parser(group, "server_replay_extra")89 opts.make_parser(group, "server_replay_reuse")90 opts.make_parser(group, "server_replay_refresh")91 92 # Map Remote93 group = parser.add_argument_group("Map Remote")94 opts.make_parser(group, "map_remote", metavar="PATTERN", short="M")95 96 # Map Local97 group = parser.add_argument_group("Map Local")98 opts.make_parser(group, "map_local", metavar="PATTERN")99 100 # Modify Body101 group = parser.add_argument_group("Modify Body")102 opts.make_parser(group, "modify_body", metavar="PATTERN", short="B")103 104 # Modify headers105 group = parser.add_argument_group("Modify Headers")106 opts.make_parser(group, "modify_headers", metavar="PATTERN", short="H")107 108 109def mitmproxy(opts):110 parser = argparse.ArgumentParser(usage="%(prog)s [options]")111 common_options(parser, opts)112 113 opts.make_parser(parser, "console_layout")114 opts.make_parser(parser, "console_layout_headers")115 group = parser.add_argument_group(116 "Filters", "See help in mitmproxy for filter expression syntax."117 )118 opts.make_parser(group, "intercept", metavar="FILTER")119 opts.make_parser(group, "view_filter", metavar="FILTER")120 return parser121 122 123def mitmdump(opts):124 parser = argparse.ArgumentParser(usage="%(prog)s [options] [filter]")125 126 common_options(parser, opts)127 opts.make_parser(parser, "flow_detail", metavar="LEVEL")128 parser.add_argument(129 "filter_args",130 nargs="...",131 help="""132 Filter expression, equivalent to setting both the view_filter133 and save_stream_filter options.134 """,135 )136 return parser137 138 139def mitmweb(opts):140 parser = argparse.ArgumentParser(usage="%(prog)s [options]")141 142 group = parser.add_argument_group("Mitmweb")143 opts.make_parser(group, "web_open_browser")144 opts.make_parser(group, "web_port", metavar="PORT")145 opts.make_parser(group, "web_host", metavar="HOST")146 147 common_options(parser, opts)148 group = parser.add_argument_group(149 "Filters", "See help in mitmproxy for filter expression syntax."150 )151 opts.make_parser(group, "intercept", metavar="FILTER")152 return parser153 