Ë
    è×ïi(.  ã                   ó:  — d Z ddlZddlZddlZddlZddl­ ddl­ ddl­ ddl­ ddl	­ ddl
mZ g d¢Z	 ddlmZ ddl­ ddlmZ d	Z G d„ d«      Zdefd„Zdefd„Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!y#  d
Z G d„ de«      Z G d„ de«      Z G d„ de«      ZY ŒPxY w)a_  
_http.py
websocket - WebSocket client library for Python

Copyright 2023 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)Ú
proxy_infoÚconnectÚread_headers)ÚProxy)Ú	ProxyTypeTFc                   ó   — e Zd Zy)Ú
ProxyErrorN©Ú__name__Ú
__module__Ú__qualname__© ó    úI/var/www/html/aiagents/fe/lib/python3.12/site-packages/websocket/_http.pyr   r   *   ó   „ Ør   r   c                   ó   — e Zd Zy)ÚProxyTimeoutErrorNr   r   r   r   r   r   -   r   r   r   c                   ó   — e Zd Zy)ÚProxyConnectionErrorNr   r   r   r   r   r   0   r   r   r   c                   ó   — e Zd Zd„ Zy)r   c                 óœ  — |j                  dd «      | _        | j                  r�|j                  dd«      | _        |j                  dd «      | _        |j                  dd «      | _        |j                  dd«      | _        |j                  dd «      | _        | j
                  d	vrt        d
«      ‚y d| _        d | _        d | _        d| _        y )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__6   s»   € Ø!Ÿ+™+Ð&7¸Ó>ˆŒØ�?Š?Ø%Ÿk™kÐ*;¸QÓ?ˆDŒOØŸ™Ð$5°tÓ<ˆDŒIØ#ŸK™K¨¸Ó>ˆDŒMØ")§+¡+¨l¸FÓ"CˆDÔà!(§¡Ð-AÀ4Ó!HˆDÔØ×"Ñ"Ð*\Ñ\Ü Ð!ZÓ[Ð[ð ]ð  ˆDŒOØˆDŒIØ ˆDŒMØ"(ˆDÕr   N)r   r   r   r/   r   r   r   r   r   4   s   „ ó)r   r   Úurlc                 óÌ  — t         st        d«      ‚t        | «      \  }}}}|j                  dk(  rd}t        j
                  }|j                  dk(  rd}t        j                  }|j                  dk(  rd}t        j
                  }|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                  |||j                  ¬«      }
|rt        rt!        |
|j"                  |«      }
n|rt        d«      ‚|
|||ffS )Nz>Python Socks is needed for SOCKS proxying but is not availabler$   Fr"   r%   Tr#   r   r   )r   ÚhostÚportÚusernameÚpasswordÚrdns)ÚtimeoutúSSL not available.)ÚHAVE_PYTHON_SOCKSÚWebSocketExceptionÚ	parse_urlr+   r
   ÚSOCKS5ÚSOCKS4r	   Úcreater'   Úintr(   r)   r   r,   ÚHAVE_SSLÚ_ssl_socketÚsslopt)r0   r.   ÚproxyÚhostnamer3   ÚresourceÚ	is_securer6   r   Úws_proxyÚsocks              r   Ú_start_proxied_socketrI   H   sC  € ÝÜ Ð!aÓbÐbä*3°C«.Ñ'€Hˆd�H˜ià×Ñ˜xÒ'ØˆÜ×%Ñ%ˆ
Ø×Ñ˜xÒ'ØˆÜ×%Ñ%ˆ
à×Ñ˜yÒ(ØˆÜ×%Ñ%ˆ
Ø×Ñ˜yÒ(ØˆÜ×%Ñ%ˆ
ä�|‰|ØØ×ÑÜ�×!Ñ!Ó"Ø"'§*¢*�—‘˜A’°$Ø"'§*¢*�—‘˜A’°$Øô€Hð ×Ñ˜H d°E×4GÑ4GÐÓH€Dá•XÜ˜4 §¡°Ó:‰Ù	Ü Ð!5Ó6Ð6à�(˜D (Ð+Ð+Ð+r   c                 óæ  — |j                   r|s|j                  dk(  st        | ||«      S t        | «      \  }}}}|r||||ffS t	        ||||«      \  }}	}
|st        d|z   dz   t        |«      z   «      ‚d }	 t        ||j                  |j                  «      }|	rt        ||||
«      }|r)t        rt        ||j                  |«      }nt        d«      ‚||||ffS #  |r|j                  «        ‚ xY w)Nr    zHost not found.: ú:r8   )r'   r+   rI   r;   Ú_get_addrinfo_listr:   ÚstrÚ_open_socketÚsockoptr7   Ú_tunnelr@   rA   rB   Úclose)r0   r.   rC   ÚsocketrD   Úport_from_urlrE   rF   Úaddrinfo_listÚneed_tunnelr)   rH   s               r   r   r   n   s  € ð ×Ò¡°×0DÑ0DÈÒ0NÜ$ S¨'°5Ó9Ð9ä3<¸S³>Ñ0€Hˆm˜X yáØ˜ -°Ð:Ð:Ð:ä'9Ø�- ¨Eó(3Ñ$€M�; áÜ Ø (Ñ*¨SÑ0´3°}Ó3EÑEóGð 	Gð €DðÜ˜M¨7¯?©?¸G¿O¹OÓLˆÙÜ˜4 ¨=¸$Ó?ˆDáÝÜ" 4¨¯©¸ÓB‘ä(Ð)=Ó>Ð>à�h ¨xÐ8Ð8Ð8øðÙØ�J‰JŒLØús   Á8A"C ÃC0c                 óÈ  — t        | ||j                  |j                  |j                  |j                  «      \  }}}	 |s:t        j                  | |dt
        j                  t
        j                  «      }|dd fS |xr |xs 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)Úget_proxy_infor'   r(   r)   r*   rR   ÚgetaddrinfoÚSOCK_STREAMÚSOL_TCPÚgaierrorÚWebSocketAddressException)	rD   r3   rF   rC   ÚphostÚpportÚpauthrT   Úes	            r   rL   rL   “   sÓ   € Ü(Ø�)˜U×-Ñ-¨u×/?Ñ/?ÀÇÁÈUÏ^É^ó]Ñ€Eˆ5�%ð+ñ Ü"×.Ñ.Ø˜$ ¤6×#5Ñ#5´v·~±~óGˆMà  %¨Ð-Ð-à’O˜eÒ) rˆEô
 #×.Ñ.¨u°e¸QÄ×@RÑ@RÔTZ×TbÑTbÓcˆMØ  $¨Ð-Ð-øÜ�?‰?ò +Ü'¨Ó*Ð*ûð+ús   ¾;B> Á:AB> Â>C!ÃCÃC!c                 óŠ  — d }| D ]‚  }|d d \  }}}t        j                   |||«      }|j                  |«       t        D ]  }	 |j                  |	Ž  Œ |D ]  }	 |j                  |	Ž  Œ |d   }
d }|s	 |j	                  |
«       	  |S Œ„ |r|‚S # t         j
                  $ rŸ}|j                  «        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   )rR   Ú
settimeoutÚDEFAULT_SOCKET_OPTIONÚ
setsockoptr   ÚerrorrQ   rM   Ú	remote_ipÚerrnoÚECONNREFUSEDÚWSAECONNREFUSEDÚENETUNREACHÚAttributeError)rT   rO   r7   ÚerrÚaddrinfoÚfamilyÚsocktypeÚprotorH   ÚoptsÚaddressrh   ÚeConnRefuseds                r   rN   rN   ª   s\  € Ø
€CØ!ò !ˆØ"*¨2¨A ,Ñˆ�˜%Ü�}‰}˜V X¨uÓ5ˆØ�‰˜Ô Ü)ò 	#ˆDØˆD�O‰O˜TÒ"ð	#àò 	#ˆDØˆD�O‰O˜TÒ"ð	#ð ˜1‘+ˆØˆÙðØ—‘˜WÔ%ð ð 	ð
 €Kð ð;!ñ@ ØˆIà€Køô+ —<‘<ò  Ø—
‘
”Ü"% g¨a¡j£/�”ðKÜ$)×$6Ñ$6¼×8MÑ8MÌu×O`ÑO`Ð#a‘LøÜ%ò KÜ$)×$6Ñ$6¼×8IÑ8IÐ#J’LðKúà—;‘; ,Ñ.Ø�CÜà�Kûð úsB   Á3BÂEÂ##D=Ã/C7Ã6D=Ã7)D#Ä D=Ä"D#Ä#D=Ä;D=Ä=Ec                 ó¨  — |j                  dd «      }|�s	t        j                  |j                  dt        j                  «      «      }|j                  dt        j                  «      t        j                  k7  rq|j                  dd «      }|j                  dd «      }|s|r|j                  ||¬«       n5t        |d«      r)|j                  t        j                  j                  «       |j                  dd «      r6|j                  |d   |j                  d	d «      |j                  d
d «      «       |j                  dt        j                  «      t        j                  k(  r/|j                  dd«      sd|_        t        j                  |_        n<|j                  dd«      |_        |j                  dt        j                  «      |_        d|v r|j                  |d   «       d|v r|d   \  }}}	|j                  |||	«       d|v r|j                  |d   «       |j!                  | |j                  dd«      |j                  dd«      |¬«      S )NÚcontextÚssl_versionÚ	cert_reqsÚca_certsÚca_cert_path)ÚcafileÚcapathÚload_default_certsÚcertfileÚkeyfiler5   Úcheck_hostnameFTÚciphersÚ
cert_chainÚ
ecdh_curveÚdo_handshake_on_connectÚsuppress_ragged_eofs)r†   r‡   Úserver_hostname)r&   ÚsslÚ
SSLContextÚPROTOCOL_TLS_CLIENTÚ	CERT_NONEÚload_verify_locationsÚhasattrr   ÚPurposeÚSERVER_AUTHÚload_cert_chainr‚   Úverify_modeÚCERT_REQUIREDÚset_ciphersÚset_ecdh_curveÚwrap_socket)
rH   rB   rD   r‚   rx   r}   r~   r€   r�   r5   s
             r   Ú_wrap_sni_socketr—   Ò   sô  € Ø�j‰j˜ DÓ)€GÚÜ—.‘. §¡¨M¼3×;RÑ;RÓ!SÓTˆà�:‰:�k¤3§=¡=Ó1´S·]±]ÒBØ—Z‘Z 
¨DÓ1ˆFØ—Z‘Z °Ó5ˆFÙ™Ø×-Ñ-°VÀFÐ-ÕKÜ˜Ð"6Ô7Ø×*Ñ*¬3¯;©;×+BÑ+BÔCØ�:‰:�j $Ô'Ø×#Ñ#Ø�zÑ"Ø—
‘
˜9 dÓ+Ø—
‘
˜: tÓ,ôð �:‰:�k¤3§=¡=Ó1´S·]±]ÒBÈ6Ï:É:ÐVfÐhmÔKnØ%*ˆGÔ"Ü"%§-¡-ˆGÕà%+§Z¡ZÐ0@À$Ó%GˆGÔ"Ø"(§*¡*¨[¼#×:KÑ:KÓ"LˆGÔà˜ÑØ×Ñ  yÑ 1Ô2Ø˜6Ñ!Ø*0°Ñ*>Ñ'ˆH�g˜xØ×#Ñ# H¨g°xÔ@Ø˜6Ñ!Ø×"Ñ" 6¨,Ñ#7Ô8à×ÑØØ &§
¡
Ð+DÀdÓ KØ#ŸZ™ZÐ(>ÀÓEØ ð	 ó ð r   c                 óê  — t        t        j                  ¬«      }|j                  |«       t        j
                  j                  d«      }|r7t        j                  j                  |«      r|j                  dd «      €||d<   n8|r6t        j                  j                  |«      r|j                  dd «      €||d<   |j                  dd «      r|d   }|j                  dd«      }t        | |||«      } | S )N)rz   ÚWEBSOCKET_CLIENT_CA_BUNDLEr{   r|   rˆ   r‚   T)Údictr‰   r“   ÚupdateÚosÚenvironr&   ÚpathÚisfileÚisdirr—   )rH   Úuser_ssloptrD   rB   ÚcertPathr‚   s         r   rA   rA   ÿ   sË   € ÜœC×-Ñ-Ô.€FØ
‡M�M�+Ôä�z‰z�~‰~Ð:Ó;€HÙ”B—G‘G—N‘N 8Ô,Ø—‘ 
¨DÓ1Ð9Ø%ˆˆzÒÙ	”b—g‘g—m‘m HÔ-Ø—‘ °Ó5Ð=Ø!)ˆˆ~Ñà‡z�zÐ# TÔ*ØÐ+Ñ,ˆà—Z‘ZÐ 0°$Ó7€NÜ˜D &¨(°NÓC€Dà€Kr   c                 ó>  — t        d«       dj                  ||¬«      }|dj                  ||¬«      z  }|rt|d   ro|d   }|d   r|d|d   z   z  }t        |j                  «       «      j	                  «       j                  «       j                  dd	«      }|d
j                  |¬«      z  }|dz  }t        d|«       t        | |«       	 t        | «      \  }}}	|dk7  rt        dj                  |¬«      «      ‚| S # t        $ r}
t        t        |
«      «      ‚d }
~
ww xY w)NzConnecting proxy...zCONNECT {h}:{p} HTTP/1.1
)ÚhÚpzHost: {h}:{p}
r   r   rK   ú
Ú z"Proxy-Authorization: Basic {str}
)rM   z
zrequest headeréÈ   z)failed CONNECT via proxy status: {status})Ústatus)ÚdebugÚformatÚbase64encodeÚencodeÚstripÚdecodeÚreplaceÚdumpÚsendr   Ú	ExceptionÚWebSocketProxyExceptionrM   )rH   r2   r3   r)   Úconnect_headerÚauth_strÚencoded_strr©   Úresp_headersÚstatus_messagera   s              r   rP   rP     s8  € Ü	Ð
Ô Ø3×:Ñ:¸TÀTÐ:ÓJ€NØÐ)×0Ñ0°4¸4Ð0Ó@Ñ@€Nñ ��Q’Ø˜‘7ˆØ�Š7Ø˜˜d 1™g™Ñ%ˆHÜ" 8§?¡?Ó#4Ó5×;Ñ;Ó=×DÑDÓF×NÑNÈtÐUWÓXˆØÐ@×GÑGÈKÐGÓXÑXˆØ�fÑ€NÜÐ	˜>Ô*äˆˆ~Ôð.Ü/;¸DÓ/AÑ,ˆ�˜nð �‚}Ü%Ø7×>Ñ>ÀfÐ>ÓMóOð 	Oð €Køô ò .Ü%¤c¨!£fÓ-Ð-ûð.ús   Ã	C: Ã:	DÄDÄDc                 ód  — d }d }i }t        d«       	 t        | «      }|j                  d«      j                  «       }|snât        |«       |s4|j	                  dd«      }t        |d   «      }t        |«      dkD  r¥|d   }nŸ|j	                  dd«      }t        |«      dk(  rt|\  }}|j                  «       dk(  r:|j                  d«      r)|j                  d«      dz   |j                  «       z   |d<   n-|j                  «       ||j                  «       <   nt        d	«      ‚�Œt        d
«       |||fS )Nz--- response header ---zutf-8ú é   r   rK   z
set-cookiez; zInvalid headerz-----------------------)
ÚtraceÚ	recv_liner¯   r®   Úsplitr?   ÚlenÚlowerr&   r:   )	rH   r©   r¹   ÚheadersÚlineÚstatus_infoÚkvÚkeyÚvalues	            r   r   r   1  s   € Ø€FØ€NØ€GÜ	Ð
#Ô$à
Ü˜‹ˆØ�{‰{˜7Ó#×)Ñ)Ó+ˆÙØÜˆdŒÙàŸ*™* S¨!Ó,ˆKÜ˜ Q™Ó(ˆFÜ�;Ó !Ò#Ø!,¨Q¡‘à—‘˜C Ó#ˆBÜ�2‹w˜!Š|Ø‘
��UØ—9‘9“; ,Ò.°7·;±;¸|Ô3LØ,3¯K©K¸Ó,EÈÑ,LÈuÏ{É{Ë}Ñ,\�G˜LÒ)à+0¯;©;«=�G˜CŸI™I›KÒ(ä(Ð)9Ó:Ð:ñ+ ô. 
Ð
#Ô$à�7˜NÐ*Ð*r   )"Ú__doc__rj   rœ   rR   ÚsysÚ_exceptionsÚ_loggingÚ_socketÚ_ssl_compatÚ_urlÚbase64r   r¬   Ú__all__Úpython_socks.syncr	   Úpython_socks._errorsÚpython_socks._typesr
   r9   r³   r   r   r   r   rM   rI   r   rL   rN   r—   rA   rP   r   r   r   r   ú<module>rÔ      s¹   ðñó$ Û 	Û Û 
ä Ü Ü Ü Ü å .â
3€ðÝ'Ü&Ý-ØÐ÷)ñ )ð(#,˜só #,ðL"�ó "òJ+ò.%òP*òZò*ó:+øðU
ØÐô�Yô ô˜Iô ô˜yö ús   ·A3 Á3%B