
    i%                         d dl Z d dlZd dlmZmZ ddlmZ ddlmZ ddl	m
Z
 dd	lmZ dd
lmZmZmZ ddlmZ ddlmZ ddlmZ dZ G d d      Zy)    N)AnyOptional   )connect_tcp)SyncSocketStream   )SyncResolver   )	ProxyType)ProxyConnectionErrorProxyTimeoutError
ProxyErrorparse_proxy_url)
ReplyError)create_connector<   c                       e Zd Z	 	 	 	 	 ddedededee   dee   dee   deej                     d	ed    fd
Z
	 	 ddededeej                     dee   dedefdZed        Zededd fd       Zy)	SyncProxyN
proxy_typehostportusernamepasswordrdns	proxy_sslforwardc	                     || _         || _        || _        || _        || _        || _        || _        || _        t               | _	        y N)
_proxy_type_proxy_host_proxy_port	_username	_password_rdns
_proxy_ssl_forwardr	   	_resolver)	selfr   r   r   r   r   r   r   r   s	            N/root/searxng-venv/lib/python3.12/site-packages/python_socks/sync/v2/_proxy.py__init__zSyncProxy.__init__   sH     &!!
#%    	dest_host	dest_portdest_ssltimeoutkwargsreturnc                    |t         }| j                  6|j                  d      }	 t        | j                  | j
                  ||      }n2| j                  j                  | j                  | j
                  |      }	 | j                  '|j                  | j                  | j                        }t        | j                  | j                   | j"                  | j$                  | j&                        }
|
j                  |||       ||j                  ||      }|S # t        $ rM}dj                  | j                  | j
                  |j                        }	t        |j                  |	      |d }~ww xY w# t(        j*                  $ r$}|j-                          t/        d|       |d }~wt0        $ r,}|j-                          t3        ||j4                  	      d }~wt6        $ r |j-                           w xY w)
N
local_addr)r   r   r0   r4   z%Could not connect to proxy {}:{} [{}])r-   r.   r0   )hostnamessl_context)r   r   r   r   resolver)streamr   r   zProxy connection timed out: )
error_code)DEFAULT_TIMEOUTr'   getr   r!   r"   OSErrorformatstrerrorr   errnoconnectr&   	start_tlsr   r    r#   r$   r%   r(   socketr0   closer   r   r   r9   	Exception)r)   r-   r.   r/   r0   r1   r4   r8   emsg	connectors              r*   r@   zSyncProxy.connect*   s    ?%G== L1J@$))))#)	 ]]****** + F$	*))!-- $ * 
 )++ZZI    #))& ( * 
 MQ  @=DD$$$$JJ
 +177C8a?@T ~~ 	ULLN#&B7)$LMSTT 	9LLNQ1<<88 	LLN	s=   #D >BE7 	E4'AE//E47G:
F))G:5'GG:c                      | |i |S r    )clsargsr1   s      r*   createzSyncProxy.creater   s    D#F##r,   urlc                 (    t        |      } | |i |S r   r   )rJ   rM   r1   url_argss       r*   from_urlzSyncProxy.from_urlv   s    "3'H'''r,   )NNNNN)NN)__name__
__module____qualname__r   strintr   boolssl
SSLContextr+   floatr   r   r@   classmethodrL   rP   rI   r,   r*   r   r      s    #'"&#.2)-(( ( 	(
 3-( 3-( tn( CNN+( +&(4 .2#'FF F 3>>*	F
 %F F 
FP $ $ (3 ([ ( (r,   r   )rB   rW   typingr   r   _connectr   _streamr   r(   r	   _typesr   _errorsr   r   r   _helpersr   _protocols.errorsr   _connectors.factory_syncr   r:   r   rI   r,   r*   <module>rc      s<     
   ! % $  J J ' + 8 f( f(r,   