§
    ŸöÉg2  ã                   óæ  — d Z ddlZddlZddlZddlmZ ddlmZm	Z	m
Z
 ddlmZmZmZ ddlmZmZmZ ddlmZmZ dd	lmZmZ g d
¢Z	 ddlT ddlmZ ddlmZ dZn3#  dZ G d„ de ¦  «        Z! G d„ de ¦  «        Z" G d„ de ¦  «        Z#Y nxY w G d„ d¦  «        Z$de%de&fd„Z'de%fd„Z(de)de*de&fd„Z+d„ Z,d ej        d!e-fd"„Z.d ej        d#e-fd$„Z/d ej        de)dej        fd%„Z0d ej        de&fd&„Z1dS )'a_  
_http.py
websocket - WebSocket client library for Python

Copyright 2024 engn33r

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
é    N)Úencodebytesé   )ÚWebSocketAddressExceptionÚWebSocketExceptionÚWebSocketProxyException)ÚdebugÚdumpÚtrace)ÚDEFAULT_SOCKET_OPTIONÚ	recv_lineÚsend)ÚHAVE_SSLÚssl)Úget_proxy_infoÚ	parse_url)Ú
proxy_infoÚconnectÚread_headers)Ú*)Ú	ProxyType)ÚProxyTFc                   ó   — e Zd ZdS )Ú
ProxyErrorN©Ú__name__Ú
__module__Ú__qualname__© ó    ú[/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/websocket/_http.pyr   r   -   ó   € € € € € Øˆr   r   c                   ó   — e Zd ZdS )ÚProxyTimeoutErrorNr   r   r   r    r#   r#   0   r!   r   r#   c                   ó   — e Zd ZdS )ÚProxyConnectionErrorNr   r   r   r    r%   r%   3   r!   r   r%   c                   ó   — e Zd Zd„ ZdS )r   c                 óÄ  — |                      dd ¦  «        | _        | j        r¡|                      dd¦  «        | _        |                      dd ¦  «        | _        |                      dd ¦  «        | _        |                      dd¦  «        | _        |                      dd ¦  «        | _        | j        d	vrt          d
¦  «        ‚d S d| _        d | _        d | _        d| _        d S )NÚhttp_proxy_hostÚhttp_proxy_portr   Úhttp_proxy_authÚhttp_no_proxyÚ
proxy_typeÚhttpÚhttp_proxy_timeout)r-   Úsocks4Úsocks4aÚsocks5Úsocks5hz7Only http, socks4, socks5 proxy protocols are supported)ÚgetÚ
proxy_hostÚ
proxy_portÚauthÚno_proxyÚproxy_protocolÚproxy_timeoutr   )ÚselfÚoptionss     r    Ú__init__zproxy_info.__init__8   së   € Ø!Ÿ+š+Ð&7¸Ñ>Ô>ˆŒØŒ?ð 	)Ø%ŸkškÐ*;¸QÑ?Ô?ˆDŒOØŸšÐ$5°tÑ<Ô<ˆDŒIØ#ŸKšK¨¸Ñ>Ô>ˆDŒMØ")§+¢+¨l¸FÑ"CÔ"CˆDÔà!(§¢Ð-AÀ4Ñ!HÔ!HˆDÔØÔ"ð +ð ð õ !ØMñô ð ðð ð  ˆDŒOØˆDŒIØ ˆDŒMØ"(ˆDÔÐÐr   N)r   r   r   r<   r   r   r    r   r   7   s#   € € € € € ð)ð )ð )ð )ð )r   r   ÚurlÚreturnc                 ó|  — t           st          d¦  «        ‚t          | ¦  «        \  }}}}|j        dk    rd}t          j        }nM|j        dk    rd}t          j        }n3|j        dk    rd}t          j        }n|j        dk    rd}t          j        }t          j        ||j	        t          |j        ¦  «        |j        r|j        d         nd |j        r|j        d	         nd |¬
¦  «        }	|	                     |||j        ¬¦  «        }
|r-t          rt!          |
|j        |¦  «        }
nt          d¦  «        ‚|
|||ffS )Nz>Python Socks is needed for SOCKS proxying but is not availabler/   Fr0   Tr1   r2   r   r   )r,   ÚhostÚportÚusernameÚpasswordÚrdns)ÚtimeoutúSSL not available.)ÚHAVE_PYTHON_SOCKSr   r   r8   r   ÚSOCKS4ÚSOCKS5r   Úcreater4   Úintr5   r6   r   r9   r   Ú_ssl_socketÚsslopt)r=   r;   ÚproxyÚhostnamerA   ÚresourceÚ	is_securerD   r,   Úws_proxyÚsocks              r    Ú_start_proxied_socketrT   R   sd  € Ýð 
Ý ØLñ
ô 
ð 	
õ +4°C©.¬.Ñ'€Hˆd�H˜iàÔ˜xÒ'Ð'ØˆÝÔ%ˆ
ˆ
à	Ô	 Ò	*Ð	*ØˆÝÔ%ˆ
ˆ
Ø	Ô	 Ò	)Ð	)ØˆÝÔ%ˆ
ˆ
à	Ô	 Ò	*Ð	*ØˆÝÔ%ˆ
åŒ|ØØÔÝ�Ô!Ñ"Ô"Ø"'¤*Ð6�”˜A”�°$Ø"'¤*Ð6�”˜A”�°$Øðñ ô €Hð ×Ò˜H d°EÔ4GÐÑHÔH€Dàð ;Ýð 	;Ý˜t W¤^°XÑ>Ô>ˆDˆDå$Ð%9Ñ:Ô:Ð:à�(˜D (Ð+Ð+Ð+r   c                 óè  — |j         r|s|j        dk    rt          | ||¦  «        S t          | ¦  «        \  }}}}|r||||ffS t	          ||||¦  «        \  }}	}
|st          d|› d|› �¦  «        ‚d }	 t          ||j        |j        ¦  «        }|	rt          ||||
¦  «        }|r-t          rt          ||j        |¦  «        }nt          d¦  «        ‚||||ffS #  |r|                     ¦   «          ‚ xY w)Nr-   zHost not found.: ú:rF   )r4   r8   rT   r   Ú_get_addrinfo_listr   Ú_open_socketÚsockoptrE   Ú_tunnelr   rL   rM   Úclose)r=   r;   rN   ÚsocketrO   Úport_from_urlrP   rQ   Úaddrinfo_listÚneed_tunnelr6   rS   s               r    r   r   }   sN  € ð Ôð : ð :¨5Ô+?À6Ò+IÐ+IÝ$ S¨'°5Ñ9Ô9Ð9å3<¸S±>´>Ñ0€Hˆm˜X yàð ;Ø˜ -°Ð:Ð:Ð:å'9Ø�- ¨Eñ(ô (Ñ$€M�; ð ð QÝ Ð!O°XÐ!OÐ!OÀÐ!OÐ!OÑPÔPÐPà€DðÝ˜M¨7¬?¸G¼OÑLÔLˆØð 	@Ý˜4 ¨=¸$Ñ?Ô?ˆDàð 	?Ýð ?Ý" 4¨¬¸ÑBÔB��å(Ð)=Ñ>Ô>Ð>à�h ¨xÐ8Ð8Ð8øðØð 	Ø�JŠJ‰LŒLˆLØøøøs   Á3A$C ÃC1rA   rQ   c                 ó|  — t          | ||j        |j        |j        |j        ¦  «        \  }}}	 |s1t          j        | |dt
          j        t
          j        ¦  «        }|dd fS |r|pd}t          j        ||dt
          j        t
          j        ¦  «        }|d|fS # t
          j	        $ r}t          |¦  «        ‚d }~ww xY w)Nr   FéP   T)r   r4   r5   r6   r7   r\   ÚgetaddrinfoÚSOCK_STREAMÚSOL_TCPÚgaierrorr   )	rO   rA   rQ   rN   ÚphostÚpportÚpauthr^   Úes	            r    rW   rW   ¢   sä   € Ý(ØØØÔØÔØŒ
ØŒñô Ñ€Eˆ5�%ð+ð ð 	.Ý"Ô.Ø˜$ ¥6Ô#5µv´~ñô ˆMð ! %¨Ð-Ð-à�O˜eÐ) rˆEõ
 #Ô.Ø�u˜a¥Ô!3µV´^ñô ˆMð ! $¨Ð-Ð-øÝŒ?ð +ð +ð +Ý'¨Ñ*Ô*Ð*øøøøð+øøøs   ®2B Á!6B ÂB;Â'B6Â6B;c                 ój  — d }| D �](}|d d…         \  }}}t          j         |||¦  «        }|                     |¦  «         t          D ]}	 |j        |	Ž  Œ|D ]}	 |j        |	Ž  Œ|d         }
d }|s»	 |                     |
¦  «         n¦# t           j        $ r’}|                     ¦   «          t          |
d         ¦  «        |_        	 t          j
        t          j        t          j        f}n(# t          $ r t          j
        t          j        f}Y nw xY w|j	        |vr|‚|}Y d }~Œµd }~ww xY w�Œ( n|r|‚|S )Né   é   r   )r\   Ú
settimeoutr   Ú
setsockoptr   Úerrorr[   ÚstrÚ	remote_ipÚerrnoÚECONNREFUSEDÚWSAECONNREFUSEDÚENETUNREACHÚAttributeError)r^   rY   rE   ÚerrÚaddrinfoÚfamilyÚsocktypeÚprotorS   ÚoptsÚaddressro   ÚeConnRefuseds                r    rX   rX   Â   s˜  € Ø
€CØ!ð $ñ $ˆØ"*¨2¨A¨2¤,Ñˆ�˜%ÝŒ}˜V X¨uÑ5Ô5ˆØ�Š˜Ñ Ô Ð Ý)ð 	#ð 	#ˆDØˆDŒO˜TÐ"Ð"Ð"Øð 	#ð 	#ˆDØˆDŒO˜TÐ"Ð"Ð"à˜1”+ˆØˆØð 	ðØ—’˜WÑ%Ô%Ð%ð" øõ! ”<ð ð ð Ø—
’
‘”�Ý"% g¨a¤j¡/¤/�”ðKåÔ*ÝÔ-ÝÔ)ð$�L�Løõ
 &ð Kð Kð KÝ$)Ô$6½Ô8IÐ#J�L�L�LðKøøøà”; lÐ2Ð2Ø�KØ�Ø����øøøøðøøøñ$ Øˆàð 	ØˆIà€Ks<   Á1BÂD(Â.D#Ã#C)Ã(D#Ã)"DÄD#ÄDÄD#Ä#D(rS   rM   c                 ór  — |                      dd ¦  «        }|�s^t          j        |                      dt          j        ¦  «        ¦  «        }t          j                              dd ¦  «        |_        |                      dt          j        ¦  «        t          j        k    r||                      dd ¦  «        }|                      dd ¦  «        }|s|r|                     ||¬¦  «         n4t          |d¦  «        r$| 
                    t          j        j        ¦  «         |                      d	d ¦  «        rE|                     |d	         |                      d
d ¦  «        |                      dd ¦  «        ¦  «         |                      dt          j        ¦  «        t          j        k    r/|                      dd¦  «        sd|_        t          j        |_        n@|                      dd¦  «        |_        |                      dt          j        ¦  «        |_        d|v r|                     |d         ¦  «         d|v r#|d         \  }}}	|                     |||	¦  «         d|v r|                     |d         ¦  «         |                     | |                      dd¦  «        |                      dd¦  «        |¬¦  «        S )NÚcontextÚssl_versionÚSSLKEYLOGFILEÚ	cert_reqsÚca_certsÚca_cert_path)ÚcafileÚcapathÚload_default_certsÚcertfileÚkeyfilerC   Úcheck_hostnameFTÚciphersÚ
cert_chainÚ
ecdh_curveÚdo_handshake_on_connectÚsuppress_ragged_eofs)r�   r�   Úserver_hostname)r3   r   Ú
SSLContextÚPROTOCOL_TLS_CLIENTÚosÚenvironÚkeylog_filenameÚ	CERT_NONEÚload_verify_locationsÚhasattrrˆ   ÚPurposeÚSERVER_AUTHÚload_cert_chainr‹   Úverify_modeÚCERT_REQUIREDÚset_ciphersÚset_ecdh_curveÚwrap_socket)
rS   rM   rO   r‹   r€   r†   r‡   r‰   rŠ   rC   s
             r    Ú_wrap_sni_socketr¢   í   s�  € Ø�jŠj˜ DÑ)Ô)€GØñ (9Ý”. §¢¨M½3Ô;RÑ!SÔ!SÑTÔTˆõ
 #%¤*§.¢.°À$Ñ"GÔ"GˆÔà�:Š:�k¥3¤=Ñ1Ô1µS´]ÒBÐBØ—Z’Z 
¨DÑ1Ô1ˆFØ—Z’Z °Ñ5Ô5ˆFØð D˜ð DØ×-Ò-°VÀFÐ-ÑKÔKÐKÐKÝ˜Ð"6Ñ7Ô7ð DØ×*Ò*­3¬;Ô+BÑCÔCÐCØ�:Š:�j $Ñ'Ô'ð 	Ø×#Ò#Ø�zÔ"Ø—
’
˜9 dÑ+Ô+Ø—
’
˜: tÑ,Ô,ñô ð ð �:Š:�k¥3¤=Ñ1Ô1µS´]ÒBÐBÈ6Ï:Ê:Ø˜eñL
ô L
ÐBð &+ˆGÔ"Ý"%¤-ˆGÔÐà%+§Z¢ZÐ0@À$Ñ%GÔ%GˆGÔ"Ø"(§*¢*¨[½#Ô:KÑ"LÔ"LˆGÔà˜ÐÐØ×Ò  yÔ 1Ñ2Ô2Ð2Ø˜6Ð!Ð!Ø*0°Ô*>Ñ'ˆH�g˜xØ×#Ò# H¨g°xÑ@Ô@Ð@Ø˜6Ð!Ð!Ø×"Ò" 6¨,Ô#7Ñ8Ô8Ð8à×ÒØØ &§
¢
Ð+DÀdÑ KÔ KØ#ŸZšZÐ(>ÀÑEÔEØ ð	 ñ ô ð r   Úuser_ssloptc                 ó  — dt           j        i}|                     |¦  «         t          j                             d¦  «        }|r;t          j                             |¦  «        r|                     dd ¦  «        €||d<   n<|r:t          j                             |¦  «        r|                     dd ¦  «        €||d<   |                     dd ¦  «        r|d         }|                     dd¦  «        }t          | |||¦  «        } | S )Nrƒ   ÚWEBSOCKET_CLIENT_CA_BUNDLEr„   r…   r‘   r‹   T)
r   rž   Úupdater”   r•   r3   ÚpathÚisfileÚisdirr¢   )rS   r£   rO   rM   Ú	cert_pathr‹   s         r    rL   rL   !  s  € Ø¥Ô!2Ð3€FØ
‡M‚M�+ÑÔÐå”
—’Ð;Ñ<Ô<€Iàð+åŒG�NŠN˜9Ñ%Ô%ð+ð �OŠO˜J¨Ñ-Ô-Ð5à&ˆˆzÑÐàð+åŒG�MŠM˜)Ñ$Ô$ð+ð �OŠO˜N¨DÑ1Ô1Ð9à!*ˆˆ~Ñà‡z‚zÐ# TÑ*Ô*ð -ØÐ+Ô,ˆà—Z’ZÐ 0°$Ñ7Ô7€NÝ˜D &¨(°NÑCÔC€Dà€Kr   c                 ób  — t          d¦  «         d|› d|› d�}|d|› d|› d�z  }|rˆ|d         r€|d         }|d         r|d|d         › �z  }t          |                     ¦   «         ¦  «                             ¦   «                              ¦   «                              d	d
¦  «        }|d|› d�z  }|dz  }t          d|¦  «         t          | |¦  «         	 t          | ¦  «        \  }}}n.# t          $ r!}	t          t          |	¦  «        ¦  «        ‚d }	~	ww xY w|dk    rt          d|› �¦  «        ‚| S )NzConnecting proxy...zCONNECT rV   z HTTP/1.1
zHost: z
r   r   ú
Ú zProxy-Authorization: Basic zrequest headeréÈ   z!failed CONNECT via proxy status: )r   Úbase64encodeÚencodeÚstripÚdecodeÚreplacer	   r   r   Ú	Exceptionr   rp   )
rS   r@   rA   r6   Úconnect_headerÚauth_strÚencoded_strÚstatusÚ_ri   s
             r    rZ   rZ   <  s|  € Ý	Ð
Ñ Ô Ð Ø: Ð:Ð: tÐ:Ð:Ð:€NØÐ0˜tÐ0Ð0 dÐ0Ð0Ð0Ñ0€Nð ð J��Q”ð JØ˜”7ˆØ�Œ7ð 	&Ø˜˜D œG˜˜Ñ%ˆHÝ" 8§?¢?Ñ#4Ô#4Ñ5Ô5×;Ò;Ñ=Ô=×DÒDÑFÔF×NÒNÈtÐUWÑXÔXˆØÐI¸ÐIÐIÐIÑIˆØ�fÑ€NÝÐ	˜>Ñ*Ô*Ð*åˆˆ~ÑÔÐð.Ý# DÑ)Ô)‰ˆ��1�1øÝð .ð .ð .Ý%¥c¨!¡f¤fÑ-Ô-Ð-øøøøð.øøøð �‚}€}Ý%Ð&RÈ&Ð&RÐ&RÑSÔSÐSà€Ks   ÃC) Ã)
DÃ3DÄDc                 ó  — d }d }i }t          d¦  «         	 t          | ¦  «        }|                     d¦  «                             ¦   «         }|s�nt          |¦  «         |sG|                     dd¦  «        }t          |d         ¦  «        }t          |¦  «        dk    r|d         }nÄ|                     dd¦  «        }t          |¦  «        dk    rt          d¦  «        ‚|\  }}|                     ¦   «         d	k    rF| 	                    d	¦  «        r1| 	                    d	¦  «        d
z   |                     ¦   «         z   |d	<   n)|                     ¦   «         ||                     ¦   «         <   �ŒXt          d¦  «         |||fS )Nz--- response header ---Tzutf-8ú é   r   rV   zInvalid headerz
set-cookiez; z-----------------------)
r
   r   r²   r±   ÚsplitrK   Úlenr   Úlowerr3   )	rS   r¸   Ústatus_messageÚheadersÚlineÚstatus_infoÚkvÚkeyÚvalues	            r    r   r   X  sr  € Ø€FØ€NØ€GÝ	Ð
#Ñ$Ô$Ð$ð5Ý˜‰ŒˆØ�{Š{˜7Ñ#Ô#×)Ò)Ñ+Ô+ˆØð 	ÙÝˆd‰ŒˆØð 	5ØŸ*š* S¨!Ñ,Ô,ˆKÝ˜ QœÑ(Ô(ˆFÝ�;ÑÔ !Ò#Ð#Ø!,¨Q¤�øà—’˜C Ñ#Ô#ˆBÝ�2‰wŒw˜!Š|ˆ|Ý(Ð)9Ñ:Ô:Ð:Ø‰JˆC�Ø�yŠy‰{Œ{˜lÒ*Ð*¨w¯{ª{¸<Ñ/HÔ/HÐ*Ø(/¯ª°LÑ(AÔ(AÀDÑ(HÈ5Ï;Ê;É=Ì=Ñ(X�˜Ñ%Ð%à',§{¢{¡}¤}�˜Ÿ	š	™œÑ$ñ'5õ* 
Ð
#Ñ$Ô$Ð$à�7˜NÐ*Ð*r   )2Ú__doc__rr   r”   r\   Úbase64r   r¯   Ú_exceptionsr   r   r   Ú_loggingr   r	   r
   Ú_socketr   r   r   Ú_ssl_compatr   r   Ú_urlr   r   Ú__all__Úpython_socks._errorsÚpython_socks._typesr   Úpython_socks.syncr   rG   r´   r   r#   r%   r   rp   ÚtuplerT   r   rK   ÚboolrW   rX   Údictr¢   rL   rZ   r   r   r   r    ú<module>rÕ      s  ððð ð$ €€€Ø 	€	€	€	Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð
 )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à
3Ð
3Ð
3€ðØ&Ð&Ð&Ð&Ø-Ð-Ð-Ð-Ð-Ð-Ø'Ð'Ð'Ð'Ð'Ð'àÐÐøð
ØÐðð ð ð ð �Yñ ô ð ðð ð ð ð ˜Iñ ô ð ðð ð ð ð ˜yñ ô ð ð ð øøøð)ð )ð )ð )ð )ñ )ô )ð )ð6(,˜sð (,°uð (,ð (,ð (,ð (,ðV"�ð "ð "ð "ð "ðJ+ sð +°tð +Àuð +ð +ð +ð +ð@(ð (ð (ðV1˜6œ=ð 1°$ð 1ð 1ð 1ð 1ðh�f”mð °$ð ð ð ð ð6�&”-ð ¨Sð ¸6¼=ð ð ð ð ð8+�v”}ð +¨ð +ð +ð +ð +ð +ð +s   ÁA Á.B