
    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   )SyncSocketStreamSyncResolver   )SyncConnector)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 )Socks5SyncConnectorusernamepasswordrdnsresolverc                 F    |d}|| _         || _        || _        || _        d S )NT)	_username	_password_rdns	_resolver)selfr   r   r   r   s        e/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/python_socks/_connectors/socks5_sync.py__init__zSocks5SyncConnector.__init__   s.     <D!!
!    streamhostportreturnc                    t          j                    }t          j        | j        | j                  }|                    |          }|                    |           |                    t           j        j	                  }|
                    |          }|j        t           j        j        k    rt          j        | j        | j                  }|                    |          }|                    |           |                    t           j        j	                  }|
                    |          }t!          |          s0| j        s)| j                            |t(          j                  \  }}t          j        ||          }|                    |          }|                    |           |                     |          }|
                    |          }|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Socks5SyncConnector.connect   s     "" +T^dn]]]yy!!  !7!<==(,T(:(: <6,>>>($.4>ZZZG99W%%DT"""$$V%5%:;;D"&,,t"4"4A T"" 	L4: 	Ln,,T&:J,KKGAt'T===yy!!''%)\\$%7%7r   c                 b   |                     d          }|d         t          j        k    r|S |d         t          j        j        k    r|S |d         t          j        k    r|S ||                     d          z  }|d         }|t          j        j        k    r||                     d          z  }n~|t          j        j        k    r||                     d          z  }nP|t          j        j	        k    r;||                     d          z  }|d         }||                     |dz             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Socks5SyncConnector._read_replyA   s&     ##7f&&&K7f&000K7fj  K!!!$$$G	*///F%%a(((DD&,111F%%b)))DD&,333F%%a(((DBxHF%%hl333Dr   N)__name__
__module____qualname__r   strboolr   r   r   intr	   ConnectReplyr7   bytesr1    r   r   r   r      s        "3-" 3-" tn	"
 " " " "# # # 	#
 
	# # # #L"2 u      r   r   )r.   typingr   _abcr   r   abcr   
_protocolsr	   _helpersr
   r   rO   r   r   <module>rU      s           1 1 1 1 1 1 1 1             $ $ $ $ $ $K K K K K- K K K K Kr   