Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/certbot/certbot.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'certbot-ci/certbot_integration_tests/utils/proxy.py')
-rw-r--r--certbot-ci/certbot_integration_tests/utils/proxy.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/certbot-ci/certbot_integration_tests/utils/proxy.py b/certbot-ci/certbot_integration_tests/utils/proxy.py
new file mode 100644
index 000000000..3a16adebf
--- /dev/null
+++ b/certbot-ci/certbot_integration_tests/utils/proxy.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+import json
+import re
+import sys
+
+import requests
+from six.moves import BaseHTTPServer
+
+from certbot_integration_tests.utils.misc import GracefulTCPServer
+
+
+def _create_proxy(mapping):
+ class ProxyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
+ def do_GET(self):
+ headers = {key.lower(): value for key, value in self.headers.items()}
+ backend = [backend for pattern, backend in mapping.items()
+ if re.match(pattern, headers['host'])][0]
+ response = requests.get(backend + self.path, headers=headers)
+
+ self.send_response(response.status_code)
+ for key, value in response.headers.items():
+ self.send_header(key, value)
+ self.end_headers()
+ self.wfile.write(response.content)
+
+ return ProxyHandler
+
+
+if __name__ == '__main__':
+ http_port = int(sys.argv[1])
+ port_mapping = json.loads(sys.argv[2])
+ httpd = GracefulTCPServer(('', http_port), _create_proxy(port_mapping))
+ try:
+ httpd.serve_forever()
+ except KeyboardInterrupt:
+ pass