diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2012-06-17 07:57:24 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2012-06-17 07:57:24 +1200 |
commit | bd99a13f3965bfdd09a58020424c3b36d97f6877 (patch) | |
tree | 9e1f0641efb210f35ba4a9d87b7158784eabfa89 /opathod | |
parent | b1f410c78d95a2c791d4bea461f0cb6aaeb5b59b (diff) | |
download | mitmproxy-bd99a13f3965bfdd09a58020424c3b36d97f6877.tar.gz mitmproxy-bd99a13f3965bfdd09a58020424c3b36d97f6877.tar.bz2 mitmproxy-bd99a13f3965bfdd09a58020424c3b36d97f6877.zip |
Start refactoring towards netlib, adding SNI and client testing.
Diffstat (limited to 'opathod')
-rwxr-xr-x | opathod | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/opathod b/opathod new file mode 100755 index 00000000..f49baa34 --- /dev/null +++ b/opathod @@ -0,0 +1,56 @@ +#!/usr/bin/env python +import argparse, sys +from libpathod import pathod, utils, version +import tornado.ioloop + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Process some integers.') + parser.add_argument("-p", dest='port', default=9999, type=int, help='Port. Specify 0 to pick an arbitrary empty port.') + parser.add_argument("-l", dest='address', default="0.0.0.0", type=str, help='Listening address.') + parser.add_argument( + "-a", dest='anchors', default=[], type=str, action="append", + help='Add an anchor. Specified as a string with the form pattern=pagespec' + ) + parser.add_argument( + "-d", dest='staticdir', default=None, type=str, + help='Directory for static files.' + ) + parser.add_argument( + "-s", dest='ssl', default=False, + action="store_true", + help='Serve with SSL.' + ) + parser.add_argument( + "--keyfile", dest='ssl_keyfile', default=None, + type=str, + help='SSL key file. If not specified, a default key is used.' + ) + parser.add_argument( + "--certfile", dest='ssl_certfile', default=None, + type=str, + help='SSL cert file. If not specified, a default cert is used.' + ) + args = parser.parse_args() + + try: + app = pathod.make_app(staticdir=args.staticdir, anchors=args.anchors) + except utils.AnchorError, v: + parser.error(str(v)) + + sl = [args.ssl_keyfile, args.ssl_certfile] + if any(sl) and not all(sl): + parser.error("Both --certfile and --keyfile must be specified.") + + if args.ssl: + ssl = dict( + keyfile = args.ssl_keyfile or utils.data.path("resources/server.key"), + certfile = args.ssl_certfile or utils.data.path("resources/server.crt"), + ) + else: + ssl = None + try: + server, port = pathod.make_server(app, args.port, args.address, ssl) + print "%s listening on port %s"%(version.NAMEVERSION, port) + pathod.run(server) + except KeyboardInterrupt: + pass |