summaryrefslogtreecommitdiffstats
path: root/src/lib/SSLServer.py
diff options
context:
space:
mode:
authorJack Neely <jjneely@ncsu.edu>2011-06-22 13:37:58 -0400
committerJack Neely <jjneely@ncsu.edu>2011-06-22 13:37:58 -0400
commitb848b5303c21c2dcb3d3c52e260944676864e332 (patch)
treed1969c51a20a227b42ffb4c077ba1df79d784240 /src/lib/SSLServer.py
parent9d0c43a54e4172061af2779336b821bb93fefc71 (diff)
parent1186eae0c62ba6810ea597083bd8e56d487811c0 (diff)
downloadbcfg2-b848b5303c21c2dcb3d3c52e260944676864e332.tar.gz
bcfg2-b848b5303c21c2dcb3d3c52e260944676864e332.tar.bz2
bcfg2-b848b5303c21c2dcb3d3c52e260944676864e332.zip
Merge branch 'master' into yumng
Conflicts: src/lib/Client/Tools/YUMng.py
Diffstat (limited to 'src/lib/SSLServer.py')
-rw-r--r--src/lib/SSLServer.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lib/SSLServer.py b/src/lib/SSLServer.py
index 8cac8a53f..21bf48d3e 100644
--- a/src/lib/SSLServer.py
+++ b/src/lib/SSLServer.py
@@ -46,7 +46,12 @@ class XMLRPCDispatcher (SimpleXMLRPCServer.SimpleXMLRPCDispatcher):
if '.' not in method:
params = (address, ) + params
response = self.instance._dispatch(method, params, self.funcs)
- response = (response, )
+ # py3k compatibility
+ if isinstance(response, bool) or isinstance(response, str) \
+ or isinstance(response, list):
+ response = (response, )
+ else:
+ response = (response.decode('utf-8'), )
raw_response = xmlrpclib.dumps(response, methodresponse=1,
allow_none=self.allow_none,
encoding=self.encoding)
@@ -191,9 +196,18 @@ class XMLRPCRequestHandler (SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
self.logger.error("No authentication data presented")
return False
auth_type, auth_content = header.split()
- auth_content = base64.standard_b64decode(auth_content)
try:
- username, password = auth_content.split(":")
+ # py3k compatibility
+ auth_content = base64.standard_b64decode(auth_content)
+ except TypeError:
+ auth_content = base64.standard_b64decode(bytes(auth_content.encode('ascii')))
+ try:
+ # py3k compatibility
+ try:
+ username, password = auth_content.split(":")
+ except TypeError:
+ username, pw = auth_content.split(bytes(":", encoding='utf-8'))
+ password = pw.decode('utf-8')
except ValueError:
username = auth_content
password = ""
@@ -234,11 +248,13 @@ class XMLRPCRequestHandler (SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
print("got select timeout")
raise
chunk_size = min(size_remaining, max_chunk_size)
- L.append(self.rfile.read(chunk_size))
+ L.append(self.rfile.read(chunk_size).decode('utf-8'))
size_remaining -= len(L[-1])
data = ''.join(L)
response = self.server._marshaled_dispatch(self.client_address,
data)
+ if sys.hexversion >= 0x03000000:
+ response = response.encode('utf-8')
except:
try:
self.send_response(500)