
    Ği"                        d dl Z d dlZd dlZddlmZ dZdZd Z ej        dd d d d          Z	dZ
dZd Z G d	 d
          Z G d de          Z G d d          Z G d d          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d          Z e j        dd          Z G d dej                  ZdS )    N   )
compat_ordz"Timo Schmid <coding@timoschmid.de>   z!BBBB      c                       e Zd ZdZdZdS )Socks4Commandr      N)__name__
__module____qualname__CMD_CONNECTCMD_BIND     QC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/socks.pyr	   r	      s        KHHHr   r	   c                       e Zd ZdZdS )Socks5Command   N)r   r   r   CMD_UDP_ASSOCIATEr   r   r   r   r   #   s        r   r   c                       e Zd ZdZdZdZdZdS )
Socks5Authr   r   r
   r   N)r   r   r   	AUTH_NONEAUTH_GSSAPIAUTH_USER_PASSAUTH_NO_ACCEPTABLEr   r   r   r   r   '   s%        IKNr   r   c                       e Zd ZdZdZdZdS )Socks5AddressTyper   r   r   N)r   r   r   	ATYP_IPV4ATYP_DOMAINNAME	ATYP_IPV6r   r   r   r   r   .   s        IOIIIr   r   c                   $     e Zd ZdZd fd	Z xZS )
ProxyErrorr   Nc                     ||| j                             |          pd}t                                          ||           d S )Nzunknown error)CODESgetsuper__init__)selfcodemsg	__class__s      r   r(   zProxyError.__init__7   sE    *..&&9/Cs#####r   )NN)r   r   r   ERR_SUCCESSr(   __classcell__r,   s   @r   r#   r#   4   sB        K$ $ $ $ $ $ $ $ $ $r   r#   c                        e Zd Z fdZ xZS )InvalidVersionErrorc                 `    d|dd|d}t                                          d|           d S )Nz/Invalid response version from server. Expected 02xz got r   )r'   r(   )r)   expected_versiongot_versionr+   r,   s       r   r(   zInvalidVersionError.__init__>   sJ    $AQ\ $ $#$ $C     r   )r   r   r   r(   r.   r/   s   @r   r1   r1   =   s8        ! ! ! ! ! ! ! ! !r   r1   c                       e Zd ZdZddddZdS )Socks4ErrorZ   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)[   \   ]   N)r   r   r   r-   r%   r   r   r   r7   r7   D   s*        K )Z^ EEEr   r7   c                   ,    e Zd ZdZdddddddd	d
dd
ZdS )Socks5Errorr   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   N)r   r   r   ERR_GENERAL_FAILUREr%   r   r   r   r=   r=   N   s@         -1# "%*4@ EEEr   r=   c                       e Zd ZdZdZdZdS )	ProxyTyper   r   r
   N)r   r   r   SOCKS4SOCKS4ASOCKS5r   r   r   rD   rD   _   s        FGFFFr   rD   Proxy)typehostportusernamepassword
remote_dnsc                        e Zd Z fdZddZd Zd Zed             Zd Z	dd	Z
ddZd Zd Zd Zd Zd Zd Z xZS )sockssocketc                 H    d | _          t                      j        |i | d S N)_proxyr'   r(   )r)   argskwargsr,   s      r   r(   zsockssocket.__init__j   s,    $)&)))))r   TNc                     |t           j        t           j        t           j        fv sJ t	          ||||||          | _        d S rR   )rD   rE   rF   rG   rH   rS   )r)   	proxytypeaddrrK   rdnsrL   rM   s          r   setproxyzsockssocket.setproxyn   s@    Y-y/@)BRSSSSSItT8XtLLr   c                     d}t          |          |k     ra|                     |t          |          z
            }|s"t          |t          |          z
   d          ||z  }t          |          |k     a|S )Nr   z bytes missing)lenrecvEOFError)r)   cntdatacurs       r   recvallzsockssocket.recvalls   s|    $ii#oo))C#d))O,,C C#D		/AAABBBCKD	 $ii#oo
 r   c                 ^    |                      |          }t          j        d| d|          S )N!B)rb   structunpack)r)   r_   r`   s      r   _recv_byteszsockssocket._recv_bytes|   s-    ||C  }ZZZZ...r   c                 L    t          j        dt          |                     | z   S )N!B)rf   packr\   )r`   s    r   _len_and_datazsockssocket._len_and_data   s    {4T++d22r   c                 Z    ||k    r$|                                   t          ||          d S rR   )closer1   )r)   r4   r5   s      r   _check_response_versionz#sockssocket._check_response_version   s4    ***JJLLL%&6DDD +*r   c                 @   |r|fnt           j        t           j        fD ]+}	 |t          j        ||          fc S # t          $ r Y (w xY w|r| j        j        rd|fS t          j        |d |pd          }|d         \  }}}}}|t          j        ||d                   fS )Nr   )family)socketAF_INETAF_INET6	inet_ptonOSErrorrS   rN   getaddrinfo)	r)   destaddrdefaultuse_remote_dnsrq   fres_ipaddrs	            r   _resolve_addresszsockssocket._resolve_address   s    $K&6>6?*K 	 	A&*1h777777     	5dk4 	5g:$XtFKaHHHC!$QAq!Qf&q&)4444s   :
AAFc                    |\  }}|                      |t          |t          j                  \  }}t	          j        dt          t          j        |          |z   }| j	        j
        pd                                }||dz   z  }|r1| j	        j        r%|t          k    r||                                dz   z  }|                     |           t	          j        d|                     d                    \  }	}
}}|                     t"          |	           |
t$          j        k    r#|                                  t%          |
          ||fS )N)rz   rq   z!BBH     z!BBHIr@   )r   SOCKS4_DEFAULT_DSTIPrr   rs   rf   rk   SOCKS4_VERSIONr	   r   rS   rL   encoderN   sendallrg   rb   ro   SOCKS4_REPLY_VERSIONr7   r-   rn   )r)   addressis_4arx   rK   r}   r~   packetrL   version	resp_codedstportdsthosts                r   _setup_socks4zsockssocket._setup_socks4   s4    $))(4HY^gmgu)vv	6V^]5NPTUUX^^K(.B6688(W$$ 	2T[+ 	2:N0N0Nhoo'''11FV/5}WdllSToo/V/V,GW$$%97CCC///JJLLLi(((!!r   c                 4    |                      |d           d S )NT)r   )r   r)   r   s     r   _setup_socks4azsockssocket._setup_socks4a   s!    7$/////r   c                    t          j        dt                    }t          j        g}| j        j        r+| j        j        r|                    t          j	                   |t          j        dt          |                    z  }|t          j        dt          |           dg|R  z  }|                     |           |                     d          \  }}|                     t          |           |t          j        k    s(|t          j	        k    rE| j        j        r| j        j        s-|                                  t!          t          j                  |t          j	        k    r| j        j                                        }| j        j                                        }t          j        dt$                    }||                     |          |                     |          z   z  }|                     |           |                     d          \  }}|                     t$          |           |t(          k    r/|                                  t!          t           j                  d S d S )Nrj   rd   re   r
   )rf   rk   SOCKS5_VERSIONr   r   rS   rL   rM   appendr   r\   r   rh   ro   r   rn   r=   r   SOCKS5_USER_AUTH_VERSIONrl   SOCKS5_USER_AUTH_SUCCESSrB   )r)   r   auth_methodsr   methodrL   rM   statuss           r   _socks5_authzsockssocket._socks5_auth   s   T>22",-; 	;DK$8 	;
 9:::&+dC$5$5666&+6#l"3"3666FFFFFV**1--$$^W===Z222*333T[=Q3Y]YdYm3JJLLLj;<<<Z...{+2244H{+2244H['?@@Fd((22T5G5G5Q5QQQFLL   "..q11OGV(()A7KKK111

!+"ABBB /. 21r   c                    |\  }}|                      |d d          \  }}|                                  d}t          j        dt          t
          j        |          }|O|                                }|t          j        dt          j	                  z  }|| 
                    |          z  }nk|t          j        k    r&|t          j        dt          j                  |z   z  }n5|t          j        k    r%|t          j        dt          j                  |z   z  }|t          j        d|          z  }|                     |           |                     d          \  }}	}}
|                     t          |           |	t&          j        k    r#|                                  t'          |	          |
t          j        k    r|                     d          }nm|
t          j	        k    r8t/          |                     d                    }|                     |          }n%|
t          j        k    r|                     d	          }t          j        d|                     d
                    d         }||fS )NT)rz   r   z!BBBrj   z!Hr   r      r
   )r   r   rf   rk   r   r   r   r   r   r    rl   rr   rs   r   rt   r!   r   rh   ro   r=   r-   rn   rb   r   r]   rg   )r)   r   rx   rK   rq   r~   reservedr   r   r   atypealendestports                r   _setup_socks5zsockssocket._setup_socks5   s"    $..xd.SSV^]5NPXYY>((Hfk$(9(IJJJFd((222FFv~%%fk$(9(CDDvMMFFv&&fk$(9(CDDvMMF&+dD)))V+/+;+;A+>+>(5$$^W===[,,,JJLLLf%%%%///||AHH'777diill++D||D))HH'111||B''H=t||A77:(##r   c                 $   | j         s || |          S  || | j         j        | j         j        f          }|dk    r||S t          j        | j        t          j        | j        t          j        | j	        i} || j         j
                 |           |S )Nr   )rS   rJ   rK   rD   rE   r   rF   r   rG   r   rI   )r)   connect_funcr   resultsetup_funcss        r   _make_proxyzsockssocket._make_proxy   s    { 	/<g...dT[%5t{7G$HIIQ;;6-Md0t2d0

 	&DK$%g...r   c                 P    |                      t          j        j        |           d S rR   )r   rr   connectr   s     r   r   zsockssocket.connect  s#    .88888r   c                 L    |                      t          j        j        |          S rR   )r   rr   
connect_exr   s     r   r   zsockssocket.connect_ex  s     8'BBBr   )TNNrR   )F)r   r   r   r(   rZ   rb   rh   staticmethodrl   ro   r   r   r   r   r   r   r   r   r.   r/   s   @r   rP   rP   i   s)       * * * * *M M M M
  / / / 3 3 \3E E E
5 5 5 5" " " "20 0 0"C "C "CH&$ &$ &$P  9 9 9C C C C C C Cr   rP   )collectionsrr   rf   compatr   
__author__r   r   rk   r   r   r   r   r	   r   r   r   rv   r#   r1   r7   r=   rD   
namedtuplerH   rP   r   r   r   <module>r      sP              1
 
 #v{7Aq!T::          
    M                 $ $ $ $ $ $ $ $! ! ! ! !* ! ! !    *       *   "        	w )B 	C 	CiC iC iC iC iC&- iC iC iC iC iCr   