def __init__(self, bind_ip='0.0.0.0', bind_port=666, is_ipv6=False, use_https=False, certfile=os.path.join(paths.POCSUITE_TMP_PATH, 'cacert.pem'), requestHandler=BaseRequestHandler): gen_cert(filepath=certfile) threading.Thread.__init__(self) self.bind_ip = bind_ip self.bind_port = int(bind_port) self.is_ipv6 = is_ipv6 self.https = use_https if self.https: self.scheme = 'https' else: self.scheme = 'http' self.certfile = certfile self.server_locked = False # Avoid call start method muti-times self.server_started = False # Aviod start server mutl-times self.requestHandler = requestHandler if ':' in bind_ip: ipv6 = get_host_ipv6() if not ipv6: logger.error('Your machine may not support ipv6') raise PocsuiteSystemException self.host_ip = ipv6 self.httpserver = HTTPServerV6 self.is_ipv6 = True else: self.is_ipv6 = False self.host_ip = get_host_ip() self.httpserver = HTTPServerV4 self.__flag = threading.Event() # The identifier used to pause the thread self.__flag.set() # set flag True self.__running = threading.Event() # The identifier used to stop the thread self.__running.set() # set running True
def test_ipv6_https(self): try: logger.info('Test https server in ipv6') PHTTPServer._instance = None httpd = PHTTPServer(bind_ip='::', bind_port=6666, use_https=True, requestHandler=BaseRequestHandler) httpd.start() url = '{}://{}:{}/'.format('https', '[{}]'.format(get_host_ipv6()), 6666) requests.get(url) except requests.exceptions.SSLError: url = '{}://{}:{}/'.format('https', '[{}]'.format(get_host_ipv6()), 6666) resp = requests.get(url, verify=False) self.assertEqual(resp.status_code, 200) except Exception: pass finally: httpd.stop()
def test_ipv6(self): try: logger.info('Test http server in ipv6') PHTTPServer._instance = None httpd = PHTTPServer(bind_ip='::', bind_port=666, requestHandler=BaseRequestHandler) httpd.start() url = '{}://{}:{}/'.format('http', '[{}]'.format(get_host_ipv6()), 666) resp = requests.get(url) self.assertEqual(resp.status_code, 200) except Exception: assert False finally: httpd.stop()