
    VGh"                     z   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y)    N   )
compat_ordz"Timo Schmid <coding@timoschmid.de>   z!BBBB      c                       e Zd ZdZdZy)Socks4Commandr      N)__name__
__module____qualname__CMD_CONNECTCMD_BIND     U/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/socks.pyr	   r	      s    KHr   r	   c                       e Zd ZdZy)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y)
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y)Socks5AddressTyper   r   r   N)r   r   r   	ATYP_IPV4ATYP_DOMAINNAME	ATYP_IPV6r   r   r   r   r   .   s    IOIr   r   c                   $     e Zd ZdZd fd	Z xZS )
ProxyErrorr   c                 l    |!|| j                   j                  |      xs d}t        |   ||       y )Nzunknown error)CODESgetsuper__init__)selfcodemsg	__class__s      r   r(   zProxyError.__init__7   s3    **..&9/Cs#r   )NN)r   r   r   ERR_SUCCESSr(   __classcell__r,   s   @r   r#   r#   4   s    K$ $r   r#   c                        e Zd Z fdZ xZS )InvalidVersionErrorc                 :    d|dd|d}t         |   d|       y )Nz/Invalid response version from server. Expected 02xz got r   )r'   r(   )r)   expected_versiongot_versionr+   r,   s       r   r(   zInvalidVersionError.__init__>   s0    @AQRU@VV[c"$C r   )r   r   r   r(   r.   r/   s   @r   r1   r1   =   s    ! !r   r1   c                       e Zd ZdZddddZy)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^Er   r7   c                   *    e Zd ZdZdddddddd	d
dd
Zy)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@Er   r=   c                       e Zd ZdZdZdZy)	ProxyTyper   r   r
   N)r   r   r   SOCKS4SOCKS4ASOCKS5r   r   r   rD   rD   _   s    FGFr   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                 2    d | _         t        |   |i | y N)_proxyr'   r(   )r)   argskwargsr,   s      r   r(   zsockssocket.__init__j   s    $)&)r   c                     |t         j                  t         j                  t         j                  fv sJ t	        ||||||      | _        y rR   )rD   rE   rF   rG   rH   rS   )r)   	proxytypeaddrrK   rdnsrL   rM   s          r   setproxyzsockssocket.setproxyn   s?    Y--y/@/@)BRBRSSSSItT8XtLr   c                     d}t        |      |k  rM| j                  |t        |      z
        }|st        |t        |      z
   d      ||z  }t        |      |k  rM|S )Nr   z bytes missing)lenrecvEOFError)r)   cntdatacurs       r   recvallzsockssocket.recvalls   sc    $i#o))C#d)O,C#D	/!2.ABBCKD	 $i#o
 r   c                 X    | j                  |      }t        j                  d| d|      S )N!B)rb   structunpack)r)   r_   r`   s      r   _recv_byteszsockssocket._recv_bytes|   s)    ||C }}qQZ..r   c                 F    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                 F    ||k7  r| j                          t        ||      y rR   )closer1   )r)   r4   r5   s      r   _check_response_versionz#sockssocket._check_response_version   s'    **JJL%&6DD +r   c                 d   |r|fnt         j                  t         j                  fD ]  }	 |t        j                  ||      fc S  |r| j
                  j                  rd|fS t        j                  |d |xs d      }|d   \  }}}}}|t        j                  ||d         fS # t        $ r Y w xY w)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    $&6>>6??*K 	A&**1h777	 dkk44g:$$XtFKaHC!$QAq!Qf&&q&)444  s   B##	B/.B/c                    |\  }}| j                  |t        |t        j                        \  }}t	        j
                  dt        t        j                  |      |z   }| j                  j                  xs dj                         }||dz   z  }|r5| j                  j                  r|t        k(  r||j                         dz   z  }| j                  |       t	        j                  d| j                  d            \  }	}
}}| j!                  t"        |	       |
t$        j&                  k7  r| j)                          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   s    $))(4HY^gmgugu)v	6V^]5N5NPTUX^^KK((.B668(W$$T[[++:N0Nhoo''11FV/5}}WdllSTo/V,GW$$%97C///JJLi((!!r   c                 *    | j                  |d       y )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                  r5| j
                  j                  r|j                  t        j                         |t        j                  dt        |            z  }|t        j                  dt        |       dg| z  }| j                  |       | j                  d      \  }}| j                  t        |       |t        j                  k(  s?|t        j                  k(  rU| j
                  j                  r| j
                  j                  s)| j                          t!        t        j                        |t        j                  k(  r| j
                  j                  j#                         }| j
                  j                  j#                         }t        j                  dt$              }|| j'                  |      | j'                  |      z   z  }| j                  |       | j                  d      \  }}| j                  t$        |       |t(        k7  r)| j                          t!        t         j*                        y y )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",,-;;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d((2T5G5G5QQQFLL "..q1OGV(()A7K11

!+"A"ABB 2 /r   c                    |\  }}| j                  |d d      \  }}| j                          d}t        j                  dt        t
        j                  |      }|L|j                         }|t        j                  dt        j                        z  }|| j                  |      z  }n{|t        j                  k(  r+|t        j                  dt        j                        |z   z  }n=|t        j                  k(  r*|t        j                  dt        j                        |z   z  }|t        j                  d|      z  }| j!                  |       | j#                  d      \  }}	}}
| j%                  t        |       |	t&        j(                  k7  r| j+                          t'        |	      |
t        j                  k(  r| j-                  d      }nc|
t        j                  k(  r,t/        | j1                  d            }| j-                  |      }n$|
t        j                  k(  r| j-                  d	      }t        j2                  d| j-                  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V^]5N5NPXY>(Hfkk$(9(I(IJJFd((22Fv~~%fkk$(9(C(CDvMMFv&fkk$(9(C(CDvMMF&++dD))V+/+;+;A+>(5$$^W=[,,,JJLf%%%///||AH'777diil+D||D)H'111||B'H==t||A7:(##r   c                    | j                   s	 || |      S  || | j                   j                  | j                   j                  f      }|dk7  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[[%5%5t{{7G7G$HIQ;6-Md00t22d00

 	&DKK$$%g.r   c                 X    | j                  t        j                  j                  |       y rR   )r   rr   connectr   s     r   r   zsockssocket.connect  s    ..8r   c                 V    | j                  t        j                  j                  |      S rR   )r   rr   
connect_exr   s     r   r   zsockssocket.connect_ex  s     8 8'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
/ 3 3E
5"20"CH&$P9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      s       1
 
 #v{{7Aq!T:    
M   $ $!* !* * "  	w )B 	CiC&-- iCr   