forked from zaclys/searxng
		
	Merge pull request #59 from searxng/mod-sslcontext
[mod] searx.network.client: the same configuration reuses the same ssl.SSLContext
This commit is contained in:
		
						commit
						39eda78088
					
				
					 1 changed files with 11 additions and 1 deletions
				
			
		| 
						 | 
					@ -23,6 +23,7 @@ else:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
logger = logger.getChild('searx.http.client')
 | 
					logger = logger.getChild('searx.http.client')
 | 
				
			||||||
LOOP = None
 | 
					LOOP = None
 | 
				
			||||||
 | 
					SSLCONTEXTS = {}
 | 
				
			||||||
TRANSPORT_KWARGS = {
 | 
					TRANSPORT_KWARGS = {
 | 
				
			||||||
    'backend': 'asyncio',
 | 
					    'backend': 'asyncio',
 | 
				
			||||||
    'trust_env': False,
 | 
					    'trust_env': False,
 | 
				
			||||||
| 
						 | 
					@ -41,6 +42,14 @@ async def close_connections_for_url(connection_pool: httpcore.AsyncConnectionPoo
 | 
				
			||||||
            logger.warning('Error closing an existing connection', exc_info=e)
 | 
					            logger.warning('Error closing an existing connection', exc_info=e)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_sslcontexts(proxy_url=None, cert=None, verify=True, trust_env=True, http2=False):
 | 
				
			||||||
 | 
					    global SSLCONTEXTS
 | 
				
			||||||
 | 
					    key = (proxy_url, cert, verify, trust_env, http2)
 | 
				
			||||||
 | 
					    if key not in SSLCONTEXTS:
 | 
				
			||||||
 | 
					        SSLCONTEXTS[key] = httpx.create_ssl_context(cert, verify, trust_env, http2)
 | 
				
			||||||
 | 
					    return SSLCONTEXTS[key]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AsyncHTTPTransportNoHttp(httpcore.AsyncHTTPTransport):
 | 
					class AsyncHTTPTransportNoHttp(httpcore.AsyncHTTPTransport):
 | 
				
			||||||
    """Block HTTP request"""
 | 
					    """Block HTTP request"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -131,7 +140,7 @@ def get_transport_for_socks_proxy(verify, http2, local_address, proxy_url, limit
 | 
				
			||||||
        rdns = True
 | 
					        rdns = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    proxy_type, proxy_host, proxy_port, proxy_username, proxy_password = parse_proxy_url(proxy_url)
 | 
					    proxy_type, proxy_host, proxy_port, proxy_username, proxy_password = parse_proxy_url(proxy_url)
 | 
				
			||||||
 | 
					    verify = get_sslcontexts(proxy_url, None, True, False, http2) if verify is True else verify
 | 
				
			||||||
    return AsyncProxyTransportFixed(proxy_type=proxy_type, proxy_host=proxy_host, proxy_port=proxy_port,
 | 
					    return AsyncProxyTransportFixed(proxy_type=proxy_type, proxy_host=proxy_host, proxy_port=proxy_port,
 | 
				
			||||||
                                    username=proxy_username, password=proxy_password,
 | 
					                                    username=proxy_username, password=proxy_password,
 | 
				
			||||||
                                    rdns=rdns,
 | 
					                                    rdns=rdns,
 | 
				
			||||||
| 
						 | 
					@ -147,6 +156,7 @@ def get_transport_for_socks_proxy(verify, http2, local_address, proxy_url, limit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_transport(verify, http2, local_address, proxy_url, limit, retries):
 | 
					def get_transport(verify, http2, local_address, proxy_url, limit, retries):
 | 
				
			||||||
 | 
					    verify = get_sslcontexts(None, None, True, False, http2) if verify is True else verify
 | 
				
			||||||
    return AsyncHTTPTransportFixed(verify=verify,
 | 
					    return AsyncHTTPTransportFixed(verify=verify,
 | 
				
			||||||
                                   http2=http2,
 | 
					                                   http2=http2,
 | 
				
			||||||
                                   local_address=local_address,
 | 
					                                   local_address=local_address,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue