Fix Python3 compat

pull/130/head
lanjelot 5 years ago
parent e975529cea
commit f5b161a389

@ -935,9 +935,9 @@ except ImportError:
PY3 = sys.version_info >= (3,) PY3 = sys.version_info >= (3,)
if PY3: # http://python3porting.com/problems.html if PY3: # http://python3porting.com/problems.html
def b(x): def b(x):
return x.encode('UTF-8') # 'ISO-8859-1') return x.encode('ISO-8859-1', errors='ignore')
def B(x): def B(x):
return x.decode() return x.decode(errors='ignore')
else: else:
def b(x): def b(x):
return x return x
@ -3826,12 +3826,15 @@ class AJP_Connection(TCP_Connection):
sock.close() sock.close()
class Response_AJP(Response_HTTP): class Response_AJP(Response_HTTP):
def __init__(self, code, response, status_msg='', timing=0, trace=None, content_length=-1, target={}): def __init__(self, code, response, timing=0, trace=None, content_length=-1, target={}):
Response_HTTP.__init__(self, code, response, timing, trace, content_length, target) Response_HTTP.__init__(self, code, response, timing, trace, content_length, target)
self.status_msg = status_msg
def __str__(self): def __str__(self):
return self.status_msg or self.mesg lines = self.mesg.splitlines()
if lines:
return lines[0].rstrip('\r')
else:
return self.mesg
def prepare_ajp_forward_request(target_host, req_uri, method): def prepare_ajp_forward_request(target_host, req_uri, method):
fr = AjpForwardRequest(AjpForwardRequest.SERVER_TO_CONTAINER) fr = AjpForwardRequest(AjpForwardRequest.SERVER_TO_CONTAINER)
@ -3878,7 +3881,7 @@ class AJP_fuzz(TCP_Cache):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.connect((host, int(port))) sock.connect((host, int(port)))
stream = sock.makefile("rb", bufsize=0) stream = sock.makefile('rb', None if PY3 else 0)
return AJP_Connection((sock, stream)) return AJP_Connection((sock, stream))
@ -3893,7 +3896,7 @@ class AJP_fuzz(TCP_Cache):
req_uri = urlunparse(('', '', path, params, query, fragment)) req_uri = urlunparse(('', '', path, params, query, fragment))
fr = prepare_ajp_forward_request(host, req_uri, AjpForwardRequest.REQUEST_METHODS.get('GET')) fr = prepare_ajp_forward_request(host, req_uri, AjpForwardRequest.REQUEST_METHODS.get('GET'))
fr.request_headers['SC_REQ_AUTHORIZATION'] = "Basic " + b64encode(user_pass) fr.request_headers['SC_REQ_AUTHORIZATION'] = "Basic " + B(b64encode(b(user_pass)))
headers = [h.strip('\r') for h in header.split('\n') if h] headers = [h.strip('\r') for h in header.split('\n') if h]
for h in headers: for h in headers:
@ -3907,13 +3910,13 @@ class AJP_fuzz(TCP_Cache):
snd_hdrs_res = responses[0] snd_hdrs_res = responses[0]
http_code = snd_hdrs_res.http_status_code http_code = snd_hdrs_res.http_status_code
http_status_msg = snd_hdrs_res.http_status_msg http_status_msg = B(snd_hdrs_res.http_status_msg)
content_length = int(snd_hdrs_res.response_headers.get('Content-Length', 0)) content_length = int(snd_hdrs_res.response_headers.get('Content-Length', 0))
data_res = responses[1:-1] data_res = responses[1:-1]
data = '' data = ''
for dr in data_res: for dr in data_res:
data += dr.data data += B(dr.data)
target = {} target = {}
target['ip'] = host target['ip'] = host
@ -3922,7 +3925,7 @@ class AJP_fuzz(TCP_Cache):
if persistent == '0': if persistent == '0':
self.reset() self.reset()
return self.Response(http_code, data, http_status_msg, timing, data, content_length, target) return self.Response(http_code, http_status_msg + '\n' + data, timing, data, content_length, target)
# }}} # }}}

Loading…
Cancel
Save