
    i                     j    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dS )    N)Optional   )AsyncSocketStreamAsyncResolver   )AsyncConnector)socks5)is_ip_addressc                   |    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dS )Socks5AsyncConnectorusernamepasswordrdnsresolverc                 F    |d}|| _         || _        || _        || _        d S )NT)	_username	_password_rdns	_resolver)selfr   r   r   r   s        f/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/python_socks/_connectors/socks5_async.py__init__zSocks5AsyncConnector.__init__   s.     <D!!
!    streamhostportreturnc                   K   t          j                    }t          j        | j        | j                  }|                    |          }|                    |           d {V  |                    t           j        j	                   d {V }|
                    |          }|j        t           j        j        k    rt          j        | j        | j                  }|                    |          }|                    |           d {V  |                    t           j        j	                   d {V }|
                    |          }t!          |          s6| j        s/| j                            |t(          j                   d {V \  }}t          j        ||          }|                    |          }|                    |           d {V  |                     |           d {V }|
                    |          }|S )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   sD       "" +^^
 
 
 yy!!t$$$$$$$$$&&v'='BCCCCCCCC(,T(:(: <6,>>>(  G 99W%%D""4(((((((((**6+;+@AAAAAAAAD"&,,t"4"4A T"" 	4: 	 N22' 3        GAt
 'T===yy!!t$$$$$$$$$%%f--------%)\\$%7%7r   c                   K   |                     d           d {V }|d         t          j        k    r|S |d         t          j        j        k    r|S |d         t          j        k    r|S ||                     d           d {V z  }|d         }|t          j        j        k    r||                     d           d {V z  }n|t          j        j        k    r||                     d           d {V z  }n\|t          j        j	        k    rG||                     d           d {V z  }|d         }||                     |dz              d {V z  }|S )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7fj  Kf''*********G	*///&++A.........DD&,111&++B/////////DD&,333&++A.........DBxH&++HqL999999999Dr   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 3 3 3 3 3 3 3             $ $ $ $ $ $T T T T T> T T T T Tr   