Skip to content

Instantly share code, notes, and snippets.

@mattikus
Last active August 29, 2015 14:01
Show Gist options
  • Save mattikus/d2a0df649b2c7ac7d813 to your computer and use it in GitHub Desktop.
Save mattikus/d2a0df649b2c7ac7d813 to your computer and use it in GitHub Desktop.
diff --git a/src/lib/Bcfg2/Server/SSLServer.py b/src/lib/Bcfg2/Server/SSLServer.py
index 5e6846a..2dd4872 100644
--- a/src/lib/Bcfg2/Server/SSLServer.py
+++ b/src/lib/Bcfg2/Server/SSLServer.py
@@ -237,6 +237,11 @@ class XMLRPCRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
return True
def do_POST(self):
+ # Allow for reverse proxies
+ client_address = self.client_address
+ if 'X-Forwarded-For' in self.headers:
+ client_address = (self.headers['X-Forwarded-For'].split(',')[0],
+ self.client_address[1])
try:
max_chunk_size = 10 * 1024 * 1024
size_remaining = int(self.headers["content-length"])
@@ -252,8 +257,7 @@ class XMLRPCRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
if data is None:
return # response has been sent
- response = self.server._marshaled_dispatch(self.client_address,
- data)
+ response = self.server._marshaled_dispatch(client_address, data)
if sys.hexversion >= 0x03000000:
response = response.encode('utf-8')
except XMLRPCACLCheckException:
@@ -261,7 +265,7 @@ class XMLRPCRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
self.end_headers()
except: # pylint: disable=W0702
self.logger.error("Unexpected dispatch error for %s: %s" %
- (self.client_address, sys.exc_info()[1]))
+ (client_address, sys.exc_info()[1]))
try:
self.send_response(500)
self.send_header("Content-length", "0")
@@ -273,7 +277,6 @@ class XMLRPCRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
raise
else:
# got a valid XML RPC response
- client_address = self.request.getpeername()
try:
self.send_response(200)
self.send_header("Content-type", "text/xml")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment