#!/usr/bin/env python import sys, signal # The unneccesary console import here is to work around a bug in pyinstaller from libmproxy import proxy, dump, cmdline, version, console import argparse if __name__ == '__main__': parser = argparse.ArgumentParser(usage = "%(prog)s [options] [filter]") parser.add_argument('--version', action='version', version=version.NAMEVERSION) cmdline.common_options(parser) parser.add_argument( "--keepserving", action="store_true", dest="keepserving", default=False, help="Continue serving after client playback or file read. We exit by default." ) parser.add_argument('args', nargs=argparse.REMAINDER) options = parser.parse_args() if options.quiet: options.verbose = 0 proxyconfig = proxy.process_proxy_options(parser, options) if options.no_server: server = proxy.DummyServer(proxyconfig) else: try: server = proxy.ProxyServer(proxyconfig, options.port, options.addr) except proxy.ProxyServerError, v: print >> sys.stderr, "mitmdump:", v.args[0] sys.exit(1) try: dumpopts = dump.Options(**cmdline.get_common_options(options)) except cmdline.OptionException, v: parser.error(v.message) dumpopts.keepserving = options.keepserving if options.args: filt = " ".join(options.args) else: filt = None try: m = dump.DumpMaster(server, dumpopts, filt) def cleankill(*args, **kwargs): m.shutdown() signal.signal(signal.SIGTERM, cleankill) m.run() except dump.DumpError, e: print >> sys.stderr, "mitmdump:", e sys.exit(1) except KeyboardInterrupt: pass