
    i                     b    d dl Z d dlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ  G d	 d
e      Zy)    N)Optional   )AsyncSocketStreamAsyncResolver   )AsyncConnector)socks5)is_ip_addressc                   r    e Zd Zdee   dee   dee   defdZdedede	d	e
j                  fd
Zded	efdZy)Socks5AsyncConnectorusernamepasswordrdnsresolverc                 D    |d}|| _         || _        || _        || _        y )NT)	_username	_password_rdns	_resolver)selfr   r   r   r   s        X/root/searxng-venv/lib/python3.12/site-packages/python_socks/_connectors/socks5_async.py__init__zSocks5AsyncConnector.__init__   s*     <D!!
!    streamhostportreturnc                 r  K   t        j                         }t        j                  | j                  | j                        }|j                  |      }|j                  |       d {    |j                  t         j                  j                         d {   }|j                  |      }|j                  t         j                  j                  k(  rt        j                  | j                  | j                        }|j                  |      }|j                  |       d {    |j                  t         j                  j                         d {   }|j                  |      }t!        |      sB| j"                  s6| j$                  j'                  |t(        j*                         d {   \  }}t        j,                  ||      }|j                  |      }|j                  |       d {    | j/                  |       d {   }|j                  |      }|S 7 7 7 7 7 7 =7 &w)N)r   r   )family)r   r   )r	   
ConnectionAuthMethodsRequestr   r   send	write_all
read_exactAuthMethodReplySIZEreceivemethod
AuthMethodUSERNAME_PASSWORDAuthRequest	AuthReplyr
   r   r   resolvesocket	AF_UNSPECConnectRequest_read_reply)	r   r   r   r   connrequestdatareply_s	            r   connectzSocks5AsyncConnector.connect   s       " ++^^^^
 yy!t$$$&&v'='='B'BCC(,T(: <<6,,>>>((G 99W%D""4(((**6+;+;+@+@AAD"&,,t"4A T"4:: NN22'' 3  GAt
 ''T=yy!t$$$%%f--%)\\$%7= 	%C )A
 	%-s   A%H7'H&(0H7H)BH7%H,&0H7H/AH71H12AH75H36H7H5H7)H7,H7/H71H73H75H7c                   K   |j                  d       d {   }|d   t        j                  k7  r|S |d   t        j                  j                  k7  r|S |d   t        j
                  k7  r|S ||j                  d       d {   z  }|d   }|t        j                  j                  k(  r||j                  d       d {   z  }|S |t        j                  j                  k(  r||j                  d       d {   z  }|S |t        j                  j                  k(  r@||j                  d       d {   z  }|d   }||j                  |dz          d {   z  }|S 7 M7 7 7 n7 57 w)N   r   r   r         )
r$   r	   	SOCKS_VER	ReplyCode	SUCCEEDEDRSVAddressTypeIPV4IPV6DOMAIN)r   r   r4   	addr_typehost_lens        r   r1   z Socks5AsyncConnector._read_replyJ   s`    &&q))7f&&&K7f&&000K7fjj Kf''***G	**///&++A...D  &,,111&++B///D  &,,333&++A...DBxH&++HqL999D) * + //.9sj   E1E$A+E1E'=E1E):E1<E+=:E17E-8#E1E/	E1'E1)E1+E1-E1/E1N)__name__
__module____qualname__r   strboolr   r   r   intr	   ConnectReplyr7   bytesr1    r   r   r   r      s    "3-" 3-" tn	"
  ",!, , 	,
 
		,^(9 e r   r   )r.   typingr   _abcr   r   abcr   
_protocolsr	   _helpersr
   r   rO   r   r   <module>rU      s%      3   $T> Tr   