summaryrefslogtreecommitdiff
path: root/blobs-multiprocess/proxies/twisted-web-resource.py
diff options
context:
space:
mode:
Diffstat (limited to 'blobs-multiprocess/proxies/twisted-web-resource.py')
-rwxr-xr-xblobs-multiprocess/proxies/twisted-web-resource.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/blobs-multiprocess/proxies/twisted-web-resource.py b/blobs-multiprocess/proxies/twisted-web-resource.py
new file mode 100755
index 0000000..9265aa6
--- /dev/null
+++ b/blobs-multiprocess/proxies/twisted-web-resource.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+
+from argparse import ArgumentParser
+from sys import stdout
+
+from twisted.internet import reactor
+from twisted.python import log
+from twisted.web.resource import Resource
+from twisted.web.server import Site
+from twisted.web.proxy import ReverseProxyResource
+
+
+def parse_args():
+ parser = ArgumentParser()
+ parser.add_argument('--verbose', '-v', action='store_true', help='Output logs to stdout.')
+ parser.add_argument('port', type=int,
+ help="The port in which to listen.")
+ parser.add_argument('destport', type=int,
+ help="The port to which forward requests.")
+ args = parser.parse_args()
+ return args
+
+
+class DummyResource(Resource):
+
+ def render_GET(self, request):
+ return ''
+
+
+def start_server(port, destport):
+ revproxy = ReverseProxyResource("127.0.0.1", destport, "/blobs")
+ resource = Resource()
+ resource.putChild("", DummyResource())
+ resource.putChild("blobs", revproxy)
+ site = Site(resource)
+ reactor.listenTCP(port, site)
+
+
+def main(port, destport):
+ start_server(port, destport)
+ reactor.run()
+
+
+if __name__ == "__main__":
+ args = parse_args()
+ if args.verbose:
+ log.startLogging(stdout)
+ main(args.port, args.destport)