Ë
    _§1h~  ã                   óŽ  — d Z ddlZddlZ	 ddlZddlZddl
Z
d„ Zd„ Z e«       Z G d„ dej                  «      Z G d„ dej"                  «      Z G d	„ d
ej&                  ej(                  «      Zedk(  r«ddlZ	  eej2                  d   «      Z ej:                   ee
j<                  de«      «      Z e dejC                  d«      jE                  «       jG                  «       z   «        e dejC                  d«      jE                  «       jG                  «       z   «       yy# e$ r ddlmZ ddlm	Z Y �Œ w xY w# eef$ r dZY Œµw xY w)zù
SocksiPy + urllib2 handler

version: 0.3
author: e<e@tr0ll.in>

This module provides a Handler which you can use with urllib2 to allow it to tunnel your connection through a socks.sockssocket socket, with out monkey patching the original socket...
é    Nc                 óH   — | j                  «       }|j                  |«       |S ©N)ÚcopyÚupdate)ÚaÚbÚds      úJ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sockshandler.pyÚ
merge_dictr      s   € Ø	�‰‹€AØ‡H�HˆQ„KØ€Hó    c                 óš   — 	 d| v r%t        j                  t         j                  | «       yd| v rt        j                  | «       yy#  Y yxY w)Nú:ú.FT)ÚsocketÚ	inet_ptonÚAF_INET6Ú	inet_aton)Úss    r
   Úis_ipr      sR   € ð
Ø�!‰8Ü×ÑœVŸ_™_¨aÔ0ð ð �A‰XÜ×Ñ˜QÔð ð	 øðÙús   ‚(A «A ÁA
c                   ó   — e Zd Zdd„Zd„ Zy)ÚSocksiPyConnectionNc                 ód   — ||||||f| _         t        j                  j                  | g|¢­i |¤Ž y r   )Ú	proxyargsÚhttplibÚHTTPConnectionÚ__init__©	ÚselfÚ	proxytypeÚ	proxyaddrÚ	proxyportÚrdnsÚusernameÚpasswordÚargsÚkwargss	            r
   r   zSocksiPyConnection.__init__+   s4   € Ø# Y°	¸4ÀÈ8ÐTˆŒÜ×Ñ×'Ñ'¨Ð>¨tÒ>°vÓ>r   c                 óÎ  — | j                   \  }}}}}}|xr |t        v}	 	 t        j                  | j                  | j
                  f| j                  d ||||||t        j                  t        j                  dff«
      }	 || _        y # t        j                  $ rG}|r:dt        |«      v r-t        | j                  «      sd}t        j                  |«       n‚ Y d }~nd }~ww xY wŒÆ)Né   Ú0x5bF)r   Úsocks4_no_rdnsÚsocksÚcreate_connectionÚhostÚportÚtimeoutr   ÚIPPROTO_TCPÚTCP_NODELAYÚSOCKS4ErrorÚstrr   ÚaddÚsock)	r   r   r    r!   r"   r#   r$   r5   Úes	            r
   ÚconnectzSocksiPyConnection.connect/   sß   € ØFJÇnÁnÑCˆ�I˜y¨$°¸(ØÒ7˜	¬Ð7ˆØðÜ×.Ñ.Ø—Y‘Y §	¡	Ð*¨D¯L©L¸$Ø˜y¨)°T¸8ÀXÜ×(Ñ(¬&×*<Ñ*<¸aÐ@ÐBóD�ð ð ˆ�	øô ×$Ñ$ò Ù˜F¤c¨!£fÑ,´U¸4¿9¹9Ô5Eð !�DÜ"×&Ñ& yÕ1àô 2ûðúð s   ¢AB	 Â	C#Â=CÃC#©NTNN©Ú__name__Ú
__module__Ú__qualname__r   r7   © r   r
   r   r   *   s   „ ó?ór   r   c                   ó   — e Zd Zdd„Zd„ Zy)ÚSocksiPyConnectionSNc                 ód   — ||||||f| _         t        j                  j                  | g|¢­i |¤Ž y r   )r   r   ÚHTTPSConnectionr   r   s	            r
   r   zSocksiPyConnectionS.__init__D   s4   € Ø# Y°	¸4ÀÈ8ÐTˆŒÜ×Ñ×(Ñ(¨Ð?°Ò?¸Ó?r   c                 óö  — t         j                  | «       | j                  j                  | j                  | j
                  ¬«      | _        | j                  j                  sG| j                  r:	 t        j                  | j                  j                  «       | j
                  «       y y y # t        $ rE | j                  j                  t        j                  «       | j                  j                  «        ‚ w xY w)N)Úserver_hostname)r   r7   Ú_contextÚwrap_socketr5   r-   Úcheck_hostnameÚ_check_hostnameÚsslÚmatch_hostnameÚgetpeercertÚ	ExceptionÚshutdownr   Ú	SHUT_RDWRÚclose)r   s    r
   r7   zSocksiPyConnectionS.connectH   s±   € Ü×"Ñ" 4Ô(Ø—M‘M×-Ñ-¨d¯i©iÈÏÉÐ-ÓSˆŒ	Ø�}‰}×+Ò+°×0DÒ0DðÜ×"Ñ" 4§9¡9×#8Ñ#8Ó#:¸D¿I¹IÕFð 1EÐ+øô ò Ø—	‘	×"Ñ"¤6×#3Ñ#3Ô4Ø—	‘	—‘Ô!Øðús   Á/8B* Â*AC8r8   r9   r=   r   r
   r?   r?   C   s   „ ó@ó	r   r?   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚSocksiPyHandlerc                 ó^   — || _         || _        t        j                  j	                  | «       y r   )r%   ÚkwÚurllib2ÚHTTPHandlerr   )r   r%   r&   s      r
   r   zSocksiPyHandler.__init__T   s$   € ØˆŒ	ØˆŒÜ×Ñ×$Ñ$ TÕ*r   c                 ó4   ‡ — dˆ fd„	}‰ j                  ||«      S )Nc                 óf   •— t        ‰j                  |«      }t        ‰j                  | ||dœ|¤Ž}|S ©N)r-   r.   r/   )r   rR   r   r%   ©r-   r.   r/   r&   rR   Úconnr   s         €r
   Úbuildz(SocksiPyHandler.http_open.<locals>.buildZ   s3   ø€ Ü˜DŸG™G VÓ,ˆBÜ% t§y¡y°tÀ$ÐPWÑ^Ð[]Ñ^ˆDØˆKr   ©Nr   ©Údo_open©r   ÚreqrZ   s   `  r
   Ú	http_openzSocksiPyHandler.http_openY   ó   ø€ õ	ð �|‰|˜E 3Ó'Ð'r   c                 ó4   ‡ — dˆ fd„	}‰ j                  ||«      S )Nc                 óf   •— t        ‰j                  |«      }t        ‰j                  | ||dœ|¤Ž}|S rW   )r   rR   r?   r%   rX   s         €r
   rZ   z)SocksiPyHandler.https_open.<locals>.builda   s3   ø€ Ü˜DŸG™G VÓ,ˆBÜ&¨¯	©	¸À4ÐQXÑ_Ð\^Ñ_ˆDØˆKr   r[   r\   r^   s   `  r
   Ú
https_openzSocksiPyHandler.https_open`   ra   r   N)r:   r;   r<   r   r`   rd   r=   r   r
   rP   rP   S   s   „ ò+ò
(ó(r   rP   Ú__main__r(   iZ#  Ú	localhostzHTTP: zhttp://httpbin.org/ipzHTTPS: zhttps://httpbin.org/ip)$Ú__doc__r   rH   rS   r   ÚImportErrorÚurllib.requestÚrequestÚhttp.clientÚclientr+   r   r   Úsetr*   r   r   rA   r?   rT   ÚHTTPSHandlerrP   r:   ÚsysÚintÚargvr.   Ú
ValueErrorÚ
IndexErrorÚbuild_openerÚPROXY_TYPE_SOCKS5ÚopenerÚprintÚopenÚreadÚdecoder=   r   r
   ú<module>r{      sH  ðñó Û 
ð"ÛÛó
 òò
ñ “€ô˜×/Ñ/ô ô2˜'×1Ñ1ô ô (�g×)Ñ)¨7×+?Ñ+?ô (ð( ˆzÒÛðÙ�3—8‘8˜A‘;Óˆð "ˆW×!Ñ!¡/°%×2IÑ2IÈ;ÐX\Ó"]Ó^€FÙ	ˆ(�V—[‘[Ð!8Ó9×>Ñ>Ó@×GÑGÓIÑ
IÔJÙ	ˆ)�f—k‘kÐ":Ó;×@Ñ@ÓB×IÑIÓKÑ
KÕLð øðo ò "Ý$ß!Ð!ð"ûðv ˜
Ð#ò ØŠðús#   ŒD  Á9D8 Ä D5Ä4D5Ä8	EÅE