
    i              	       V   d dl Z d dlmZ d dlZd dlZd dlmZ d dlmZ ddl	m
Z
mZ ddlmZ d	                    e j        e
e          Zd
Z G d d edg d                    Z G d d          Ze G d d                      Ze G d d                      Z G d d          ZdS )    N)	dataclass)
namedtuple)Optional   )	__title____version__   )
ReplyErrorzPython/{0[0]}.{0[1]} {1}/{2}z
c            	       h     e Zd ZdZddedededd f fdZedd	ededd fd
            ZdefdZ xZ	S )	BasicAuthz!Http basic authentication helper. latin1loginpasswordencodingreturnc                     |t          d          |t          d          d|v rt          d          t                                          | |||          S )Nz"None is not allowed as login valuez%None is not allowed as password value:z5A ":" is not allowed in login (RFC 1945#section-11.1))
ValueErrorsuper__new__)clsr   r   r   	__class__s       c/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/python_socks/_protocols/http.pyr   zBasicAuth.__new__   sb    =ABBBDEEE%<<TUUU wwsE8X>>>    auth_headerc                    	 |                     dd          \  }}n# t          $ r t          d          w xY w|                                dk    rt          d|z            	 t          j        |                    d          d                              |          }n"# t          j        $ r t          d	          w xY w	 |                     d
d          \  }}n# t          $ r t          d          w xY w | |||          S )z<Create a BasicAuth object from an Authorization HTTP header. r	   z%Could not parse authorization header.basiczUnknown authorization method %sasciiT)validatezInvalid base64 encoding.r   zInvalid credentials.)r   )	splitr   lowerbase64	b64decodeencodedecodebinasciiError)r   r   r   	auth_typeencoded_credentialsdecodedusernamer   s           r   r'   zBasicAuth.decode%   sP   	F-8->->sA-F-F*I** 	F 	F 	FDEEE	F ??''>JKKK	9&':'A'A''J'JUYZZZaa GG ~ 	9 	9 	97888	9	5
 ")sA!6!6Hhh 	5 	5 	53444	5 s8X9999s     6$<B! !C C C8c                     | j         d| j                            | j                  }dt	          j        |                              | j                  z  S )zEncode credentials.r   zBasic %s)r   r   r&   r   r$   	b64encoder'   )selfcredss     r   r&   zBasicAuth.encodeC   sL     JJJ6>>t}MMF,U33::4=IIIIr   )r   r   )r   )
__name__
__module____qualname____doc__strr   classmethodr'   r&   __classcell__)r   s   @r   r   r      s        ++? ?C ?3 ?s ?R] ? ? ? ? ? ? : : : :; : : : [::J J J J J J J J Jr   r   )r   r   r   c                   6    e Zd Zd
defdZddefdZdefdZd	S )_Bufferutf-8r   c                 :    || _         t                      | _        d S N)	_encoding	bytearray_buffer)r0   r   s     r   __init__z_Buffer.__init__J   s    ! {{r   r   linec                     |r2| j                             |                    | j                             | j                             t                              d                     d S )Nr    )r@   extendr&   r>   CRLF)r0   rB   s     r   append_linez_Buffer.append_lineN   sV     	=LDN ; ;<<<DKK0011111r   r   c                 *    t          | j                  S r=   )bytesr@   )r0   s    r   dumpsz_Buffer.dumpsT   s    T\"""r   N)r;   )r   )r2   r3   r4   r6   rA   rF   rH   rI    r   r   r:   r:   I   so        # # # # # #2 2 2 2 2 2#u # # # # # #r   r:   c                   \    e Zd ZU eed<   eed<   ee         ed<   ee         ed<   defdZdS )ConnectRequesthostportr-   r   r   c                    t                      }|                    d| j         d| j         d           |                    d| j         d| j                    |                    dt                      | j        rK| j        rDt          | j        | j                  }|                    d|                                            |                                 |	                                S )NzCONNECT r   z	 HTTP/1.1zHost: zUser-Agent: zProxy-Authorization: )
r:   rF   rM   rN   DEFAULT_USER_AGENTr-   r   r   r&   rI   )r0   buffauths      r   rI   zConnectRequest.dumps_   s    yyDDIDD	DDDEEE9$)99di99:::<(:<<==== 	FT] 	FT]DM::DDT[[]]DDEEEzz||r   N)	r2   r3   r4   r6   __annotations__intr   rH   rI   rJ   r   r   rL   rL   X   sc         
III
IIIsmsmu      r   rL   c                   D    e Zd ZU eed<   eed<   ededd fd            ZdS )ConnectReplystatus_codemessagedatar   c                    |st          d          |                    t                              d          d          d         }|                    dd          }	 |                                ^}}}n # t
          $ r t          d|           w xY w	 t          |          }n # t
          $ r t          d|           w xY wd	                    |          }|d
k    r| d	| }t          ||           | ||          S )NzInvalid proxy responser    r	   r   r;   surrogateescapezInvalid status line: zInvalid status code: r      )
error_code)rW   rX   )r
   r"   rE   r&   r'   r   rT   join)	r   rY   rB   versioncodereasonrW   status_messagemsgs	            r   loadszConnectReply.loadss   s;    	75666zz$++g..2215{{7$566	=%)ZZ\\"GTFF 	= 	= 	=;T;;<<<	=	=d))KK 	= 	= 	=;T;;<<<	= &))# 33>33CS[9999s{NCCCCs   A5 5BB& &CN)	r2   r3   r4   rT   rS   r6   r7   rH   rd   rJ   r   r   rV   rV   n   s_         LLLD D> D D D [D D Dr   rV   c                   .    e Zd ZdedefdZdedefdZdS )
Connectionrequestr   c                 *    |                                 S r=   )rI   )r0   rg   s     r   sendzConnection.send   s    }}r   rY   c                 6    t                               |          S r=   )rV   rd   )r0   rY   s     r   receivezConnection.receive   s    !!$'''r   N)r2   r3   r4   rL   rH   ri   rV   rk   rJ   r   r   rf   rf      sX        N u    (E (l ( ( ( ( ( (r   rf   )sysdataclassesr   r$   r(   collectionsr   typingr   _versionr   r   errorsr
   formatversion_inforP   rE   r   r:   rL   rV   rf   rJ   r   r   <module>rt      s   



 ! ! ! ! ! !   " " " " " "       - - - - - - - -      3::   1J 1J 1J 1J 1J

;(I(I(IJJ 1J 1J 1Jh# # # # # # # #        * D D D D D D D D@( ( ( ( ( ( ( ( ( (r   