def probobuf_request(host, method, url, body, headers, msg=None): conn = HTTPSConnection(host) sock = socket.create_connection((conn.host, conn.port), conn.timeout, conn.source_address) conn.sock = ssl.wrap_socket(sock, conn.key_file, conn.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) request = conn.request(method, url, body, headers) response = conn.getresponse() length = response.getheader("content-length") if length is None: length = 0 else: length = int(length) data = response.read() while len(data) < length: d = response.read() data += d conn.close() if msg == None: return data res = msg() res.ParseFromString(data) return res
def plist_request(host, method, url, body, headers): conn = HTTPSConnection(host) sock = socket.create_connection((conn.host, conn.port), conn.timeout, conn.source_address) conn.sock = ssl.wrap_socket(sock, conn.key_file, conn.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) request = conn.request(method, url, body, headers) response = conn.getresponse() data = response.read() try: plist_data = plistlib.readPlistFromString(data) except: plist_data = None if response.status != 200: if plist_data is None: print "Request %s returned code %d" % (url, response.status) else: print "{}: {}".format(plist_data.title, plist_data.message) return return plist_data
def WebConnection(urlIn): if urlIn.upper().find("HTTP://") >= 0: url = urlIn[7:].split("/")[0] post = urlIn[7:].replace(url, "") return HTTPConnection(url), post else: url = urlIn[8:].split("/")[0] post = urlIn[8:].replace(url, "") # OpenSSL 1.x workaround, we basically need to re-implement HTTPSConnection.connect() # to be able to request ssl.PROTOCOL_TLSv1 conn = HTTPSConnection(url) sock = socket.create_connection((conn.host, conn.port), conn.timeout, conn.source_address) conn.sock = ssl.wrap_socket(sock, conn.key_file, conn.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) return conn, post
def probobuf_request(host, method, url, body, headers, msg=None, log=None): conn = HTTPSConnection(host) sock = socket.create_connection((conn.host, conn.port), conn.timeout, conn.source_address) conn.sock = ssl.wrap_socket(sock, conn.key_file, conn.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) request = conn.request(method, url, body, headers) response = conn.getresponse() length = response.getheader("content-length") if length is None: length = 0 else: length = int(length) data = response.read() while len(data) < length: d = response.read() data += d conn.close() if msg == None: if log: log.write( "probobuf request with host {}, method {}, url {}, body {}:\n". format(host, method, url, body)) log.write(" headers were {}\n".format(headers)) log.write(" response was {}\n".format(data)) return data res = msg() res.ParseFromString(data) if log: log.write( "probobuf request with host {}, method {}, url {}, body {}:\n". format(host, method, url, body)) log.write(" headers were {}\n".format(headers)) log.write(" response was {}\n".format(repr(res))) return res
def plist_request(host, method, url, body, headers, log=None): conn = HTTPSConnection(host) sock = socket.create_connection((conn.host, conn.port), conn.timeout, conn.source_address) conn.sock = ssl.wrap_socket(sock, conn.key_file, conn.cert_file, ssl_version=ssl.PROTOCOL_TLSv1) request = conn.request(method, url, body, headers) response = conn.getresponse() data = response.read() try: plist_data = plistlib.readPlistFromString(data) except: plist_data = None if response.status != 200: if plist_data is None: print "Request %s returned code %d" % (url, response.status) else: print "{}: {}".format(plist_data.title, plist_data.message) if log: log.write( "plist request with host {}, method {}, url {}, body {}:\n". format(host, method, url, body)) log.write(" headers were {}\n".format(headers)) log.write(" response status was {}\n".format(response.status)) return if log: log.write( "plist request with host {}, method {}, url {}, body {}:\n".format( host, method, url, body)) log.write(" headers were {}\n".format(headers)) log.write(" response:\n") log.write("{}\n".format(json.dumps(plist_data, indent=4))) return plist_data