
    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)socks4)is_ip_addressc                   X    e Zd Zdee   dee   defdZdedede	de
j                  fd	Zy
)Socks4AsyncConnectoruser_idrdnsresolverc                 6    |d}|| _         || _        || _        y )NF)_user_id_rdns	_resolver)selfr   r   r   s       X/root/searxng-venv/lib/python3.12/site-packages/python_socks/_connectors/socks4_async.py__init__zSocks4AsyncConnector.__init__   s#     <D
!    streamhostportreturnc                   K   t        j                         }t        |      sB| j                  s6| j                  j                  |t        j                         d {   \  }}t        j                  ||| j                        }|j                  |      }|j                  |       d {    |j                  t         j                  j                         d {   }|j                  |      }|S 7 7 J7 w)N)family)r   r   r   )r	   
Connectionr
   r   r   resolvesocketAF_INETConnectRequestr   send	write_all
read_exactConnectReplySIZEreceive)	r   r   r   r   conn_requestdatareplys	            r   connectzSocks4AsyncConnector.connect   s        "T"4:: NN22~~ 3  GAt
 ''TdmmTyy!t$$$&&v':':'?'?@@%)\\$%7 	%@s7   AC:C4AC:+C6,0C:C8C:6C:8C:N)__name__
__module____qualname__r   strboolr   r   r   intr	   r&   r.    r   r   r   r      s\    "#" tn"  	"!  	
 
		r   r   )r    typingr   _abcr   r   abcr   
_protocolsr	   _helpersr
   r   r5   r   r   <module>r;      s#      3   $"> "r   