def __init__(self, wsgi,
prefix_resolver=None,
download_host=None,
proxy_host=None,
proxy_options=None,
proxy_apps=None):
self._wsgi = wsgi
self.set_connection_class()
if isinstance(prefix_resolver, str):
prefix_resolver = FixedResolver(prefix_resolver)
self.prefix_resolver = prefix_resolver or FixedResolver()
self.proxy_apps = proxy_apps or {}
self.proxy_host = proxy_host or self.DEFAULT_HOST
#self.has_sni = hasattr(ssl, 'HAS_SNI') and ssl.HAS_SNI
#self.has_alpn = hasattr(ssl, 'HAS_ALPN') and ssl.HAS_ALPN
if self.proxy_host not in self.proxy_apps:
self.proxy_apps[self.proxy_host] = None
# HTTPS Only Options
proxy_options = proxy_options or {}
ca_name = proxy_options.get('ca_name', self.CA_ROOT_NAME)
ca_file_cache = proxy_options.get('ca_file_cache', self.CA_ROOT_FILE)
self.ca = CertificateAuthority(ca_name=ca_name,
ca_file_cache=ca_file_cache,
cert_cache=None,
cert_not_before=-3600)
try:
self.root_ca_file = self.ca.get_root_pem_filename()
except Exception as e:
self.root_ca_file = None
self.use_wildcard = proxy_options.get('use_wildcard_certs', True)
if proxy_options.get('enable_cert_download', True):
download_host = download_host or self.DEFAULT_HOST
self.proxy_apps[download_host] = CertDownloader(self.ca)
self.enable_ws = proxy_options.get('enable_websockets', True)
if WebSocketHandler == object:
self.enable_ws = None
评论列表
文章目录