
    V|h"                     z   S SK r S SKrS SKrSSKJr  SrSrS r\R                  " SS S S S5      r	Sr
SrS r " S	 S
5      r " S S\5      r " S S5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S5      r\ R.                  " SS5      r " S S\R                  5      rg)    N   )
compat_ordz"Timo Schmid <coding@timoschmid.de>   z!BBBB      c                       \ rS rSrSrSrSrg)Socks4Command   r       N)__name__
__module____qualname____firstlineno__CMD_CONNECTCMD_BIND__static_attributes__r       F/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/socks.pyr	   r	      s    KHr   r	   c                       \ rS rSrSrSrg)Socks5Command#      r   N)r   r   r   r   CMD_UDP_ASSOCIATEr   r   r   r   r   r   #   s    r   r   c                   $    \ rS rSrSrSrSrSrSrg)
Socks5Auth'   r   r   r   r   r   N)	r   r   r   r   	AUTH_NONEAUTH_GSSAPIAUTH_USER_PASSAUTH_NO_ACCEPTABLEr   r   r   r   r   r   '   s    IKNr   r   c                        \ rS rSrSrSrSrSrg)Socks5AddressType.   r   r   r   r   N)r   r   r   r   	ATYP_IPV4ATYP_DOMAINNAME	ATYP_IPV6r   r   r   r   r#   r#   .   s    IOIr   r#   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )
ProxyError4   r   c                 x   > Ub'  Uc$  U R                   R                  U5      =(       d    Sn[        TU ]  X5        g )Nzunknown error)CODESgetsuper__init__)selfcodemsg	__class__s      r   r/   ProxyError.__init__7   s1    **..&9/C#r   r   )NN)r   r   r   r   ERR_SUCCESSr/   r   __classcell__r3   s   @r   r)   r)   4   s    K$ $r   r)   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )InvalidVersionError=   c                 :   > SUS SUS 3n[         TU ]  SU5        g )Nz/Invalid response version from server. Expected 02xz got r   )r.   r/   )r0   expected_versiongot_versionr2   r3   s       r   r/   InvalidVersionError.__init__>   s0    @AQRU@VV[c"$C r   r   )r   r   r   r   r/   r   r6   r7   s   @r   r9   r9   =   s    ! !r   r9   c                   $    \ rS rSrSrSSSS.rSrg)	Socks4ErrorD   Z   zrequest rejected or failedzLrequest rejected because SOCKS server cannot connect to identd on the clientzPrequest rejected because the client program and identd report different user-ids)[   \   ]   r   N)r   r   r   r   r5   r,   r   r   r   r   rA   rA   D   s    K )Z^Er   rA   c                   2    \ rS rSrSrSSSSSSS	S
SSS.
rSrg)Socks5ErrorN   r   zgeneral SOCKS server failurez!connection not allowed by rulesetzNetwork unreachablezHost unreachablezConnection refusedzTTL expiredzCommand not supportedzAddress type not supportedz$unknown username or invalid passwordz0all offered authentication methods were rejected)
r   r   r   r   r               r   r   N)r   r   r   r   ERR_GENERAL_FAILUREr,   r   r   r   r   rH   rH   N   s/     -1# "%*4@Er   rH   c                        \ rS rSrSrSrSrSrg)	ProxyType_   r   r   r   r   N)r   r   r   r   SOCKS4SOCKS4ASOCKS5r   r   r   r   rP   rP   _   s    FGFr   rP   Proxy)typehostportusernamepassword
remote_dnsc                      ^  \ rS rSrU 4S jrSS jrS rS r\S 5       r	S r
SS jrSS	 jrS
 rS rS rS rS rS rSrU =r$ )sockssocketi   c                 4   > S U l         [        TU ]  " U0 UD6  g N)_proxyr.   r/   )r0   argskwargsr3   s      r   r/   sockssocket.__init__j   s    $)&)r   c                     U[         R                  [         R                  [         R                  4;   d   e[	        XX5Xd5      U l        g r`   )rP   rR   rS   rT   rU   ra   )r0   	proxytypeaddrrX   rdnsrY   rZ   s          r   setproxysockssocket.setproxyn   s9    Y--y/@/@)BRBRSSSSITXLr   c                     Sn[        U5      U:  aS  U R                  U[        U5      -
  5      nU(       d  [        U[        U5      -
   S35      eX#-  n[        U5      U:  a  MS  U$ )Nr   z bytes missing)lenrecvEOFError)r0   cntdatacurs       r   recvallsockssocket.recvalls   sa    $i#o))C#d)O,C#D	/!2.ABBKD	 $i#o
 r   c                 Z    U R                  U5      n[        R                  " SU S3U5      $ )N!B)rr   structunpack)r0   ro   rp   s      r   _recv_bytessockssocket._recv_bytes|   s)    ||C }}qQZ..r   c                 H    [         R                  " S[        U 5      5      U -   $ )N!B)rw   packrl   )rp   s    r   _len_and_datasockssocket._len_and_data   s    {{4T+d22r   c                 D    X!:w  a  U R                  5         [        X5      eg r`   )closer9   )r0   r=   r>   s      r   _check_response_version#sockssocket._check_response_version   s"    *JJL%&6DD +r   c                    U(       a  U4O[         R                  [         R                  4 H  n U[         R                  " XQ5      4s  $    U(       a  U R
                  R                  (       a  SU4$ [         R                  " US U=(       d    SS9nUS   u  n    pxU[         R                  " XXS   5      4$ ! [         a     M  f = f)Nr   )family)socketAF_INETAF_INET6	inet_ptonOSErrorra   r[   getaddrinfo)	r0   destaddrdefaultuse_remote_dnsr   fres_ipaddrs	            r   _resolve_addresssockssocket._resolve_address   s    $&6>>6??*KKA&**1777 L dkk44g:$$XtFKaHC!$QAq!Qf&&q)444  s   B55
CCc                    Uu  p4U R                  U[        U[        R                  S9u  pV[        R
                  " S[        [        R                  U5      U-   nU R                  R                  =(       d    SR                  5       nXxS-   -  nU(       a:  U R                  R                  (       a  U[        :X  a  XsR                  5       S-   -  nU R                  U5        [        R                  " SU R                  S5      5      u  ppU R!                  ["        U	5        U
[$        R&                  :w  a  U R)                  5         [%        U
5      eX4$ )N)r   r   z!BBH     z!BBHIrL   )r   SOCKS4_DEFAULT_DSTIPr   r   rw   r}   SOCKS4_VERSIONr	   r   ra   rY   encoder[   sendallrx   rr   r   SOCKS4_REPLY_VERSIONrA   r5   r   )r0   addressis_4ar   rX   r   r   packetrY   version	resp_codedstportdsthosts                r   _setup_socks4sockssocket._setup_socks4   s	    ))(4HY^gmgugu)v	V^]5N5NPTUX^^KK((.B668W$$T[[++:N0Noo''11FV/5}}WdllSTo/V,G$$%97C///JJLi((!!r   c                 $    U R                  USS9  g )NT)r   )r   r0   r   s     r   _setup_socks4asockssocket._setup_socks4a   s    7$/r   c                 0   [         R                  " S[        5      n[        R                  /nU R
                  R                  (       a:  U R
                  R                  (       a  UR                  [        R                  5        U[         R                  " S[        U5      5      -  nU[         R                  " S[        U5       S3/UQ76 -  nU R                  U5        U R                  S5      u  p4U R                  [        U5        U[        R                  :X  dJ  U[        R                  :X  a_  U R
                  R                  (       a  U R
                  R                  (       d)  U R                  5         [!        [        R                  5      eU[        R                  :X  a  U R
                  R                  R#                  5       nU R
                  R                  R#                  5       n[         R                  " S[$        5      nXR'                  U5      U R'                  U5      -   -  nU R                  U5        U R                  S5      u  p7U R                  [$        U5        U[(        :w  a)  U R                  5         [!        [         R*                  5      eg g )Nr|   ru   rv   r   )rw   r}   SOCKS5_VERSIONr   r   ra   rY   rZ   appendr    rl   r   ry   r   r!   r   rH   r   SOCKS5_USER_AUTH_VERSIONr~   SOCKS5_USER_AUTH_SUCCESSrN   )r0   r   auth_methodsr   methodrY   rZ   statuss           r   _socks5_authsockssocket._socks5_auth   s   T>2",,-;;DKK$8$8
 9 9:&++dC$566&++#l"3!4A6FFFV**1-$$^W=Z222*333T[[=Q=QY]YdYdYmYmJJLj;;<<Z...{{++224H{{++224H[['?@F((2T5G5G5QQQFLL "..q1OG(()A7K11

!+"A"ABB 2 /r   c                    Uu  p#U R                  US SS9u  pEU R                  5         Sn[        R                  " S[        [
        R                  U5      nUcL  UR                  5       nU[        R                  " S[        R                  5      -  nXpR                  U5      -  nOU[        R                  :X  a,  U[        R                  " S[        R                  5      U-   -  nO?U[        R                  :X  a+  U[        R                  " S[        R                  5      U-   -  nU[        R                  " SU5      -  nU R!                  U5        U R#                  S5      u  ppjU R%                  [        U5        U	[&        R(                  :w  a  U R+                  5         ['        U	5      eU
[        R                  :X  a  U R-                  S5      nOeU
[        R                  :X  a,  [/        U R1                  S5      5      nU R-                  U5      nO%U
[        R                  :X  a  U R-                  S	5      n[        R2                  " SU R-                  S
5      5      S   nX,4$ )NT)r   r   z!BBBr|   z!Hr   r      r   )r   r   rw   r}   r   r   r   r   r#   r&   r~   r   r   r%   r   r'   r   ry   r   rH   r5   r   rr   r   rm   rx   )r0   r   r   rX   r   r   reservedr   r   r   atypealendestports                r   _setup_socks5sockssocket._setup_socks5   s    ..xd.SV^]5N5NPXY>(Hfkk$(9(I(IJJF((22Fv~~%fkk$(9(C(CDvMMFv&fkk$(9(C(CDvMMF&++dD))V+/+;+;A+>($$^W=[,,,JJLf%%%///||AH'777diil+D||D)H'111||B'H==t||A7:##r   c                    U R                   (       d  U" X5      $ U" X R                   R                  U R                   R                  45      nUS:w  a  Ub  U$ [        R                  U R
                  [        R                  U R                  [        R                  U R                  0nX@R                   R                     " U5        U$ )Nr   )ra   rW   rX   rP   rR   r   rS   r   rT   r   rV   )r0   connect_funcr   resultsetup_funcss        r   _make_proxysockssocket._make_proxy   s    {{..d[[%5%5t{{7G7G$HIQ;6-Md00t22d00

 	KK$$%g.r   c                 X    U R                  [        R                  R                  U5        g r`   )r   r   connectr   s     r   r   sockssocket.connect  s    ..8r   c                 V    U R                  [        R                  R                  U5      $ r`   )r   r   
connect_exr   s     r   r   sockssocket.connect_ex  s     8 8'BBr   )ra   )TNNr`   )F)r   r   r   r   r/   ri   rr   ry   staticmethodr~   r   r   r   r   r   r   r   r   r   r   r6   r7   s   @r   r]   r]   i   sd    *M
/ 3 3E
5"20"CH&$P9C Cr   r]   )collectionsr   rw   compatr   
__author__r   r   r}   r   r   r   r   r	   r   r   r#   r   r)   r9   rA   rH   rP   
namedtuplerU   r]   r   r   r   <module>r      s       1
 
 {{7Aq!T:    
M   $ $!* !* * "  	w )B 	CiC&-- iCr   