Ë
    è×ïi—%  ã                   óê  — d dl Z d dlZ d dlZd dlmZmZmZmZm	Z	m
Z
 d dlZd dlZd dlZd dlZ	 	 d dlmZmZmZ e j$                  j'                  dd«      dk(  Ze j$                  j'                  dd«      dk(  Ze j$                  j'                  dd	«      Zed	k7  Z G d
„ d«      Z G d„ de«      Z G d„ d«      Z G d„ dej6                  «      Zedk(  r ej<                  «        yy#  d dlmZmZmZ Y Œ¹xY w)é    N)Ú
proxy_infoÚread_headersÚ_start_proxied_socketÚ_tunnelÚ_get_addrinfo_listÚconnect)Ú
ProxyErrorÚProxyTimeoutErrorÚProxyConnectionErrorÚTEST_WITH_INTERNETÚ0Ú1ÚTEST_WITH_PROXYÚLOCAL_WS_SERVER_PORTz-1c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚSockMockc                 ó    — g | _         g | _        y ©N)ÚdataÚsent©Úselfs    úS/var/www/html/aiagents/fe/lib/python3.12/site-packages/websocket/tests/test_http.pyÚ__init__zSockMock.__init__-   s   € ØˆŒ	Øˆ�	ó    c                 ó:   — | j                   j                  |«       y r   )r   Úappend©r   r   s     r   Ú
add_packetzSockMock.add_packet1   s   € Ø�	‰	×Ñ˜Õr   c                  ó   — y r   © r   s    r   Ú
gettimeoutzSockMock.gettimeout4   s   € Ør   c                 óÚ   — | j                   r_| j                   j                  d«      }t        |t        «      r|‚t	        |«      |kD  r| j                   j                  d||d  «       |d | S y )Nr   )r   ÚpopÚ
isinstanceÚ	ExceptionÚlenÚinsert)r   ÚbufsizeÚes      r   ÚrecvzSockMock.recv7   sa   € Ø�9Š9Ø—	‘	—‘˜aÓ ˆAÜ˜!œYÔ'Ø�Ü�1‹v˜ÒØ—	‘	× Ñ   A g h KÔ0Ø�X�g�;Ðð r   c                 óN   — | j                   j                  |«       t        |«      S r   )r   r   r'   r   s     r   ÚsendzSockMock.send@   s   € Ø�	‰	×Ñ˜ÔÜ�4‹yÐr   c                  ó   — y r   r!   r   s    r   ÚclosezSockMock.closeD   s   € Ør   N)	Ú__name__Ú
__module__Ú__qualname__r   r   r"   r+   r-   r/   r!   r   r   r   r   ,   s    „ òòòòòór   r   c                   ó   — e Zd Zd„ Zy)ÚHeaderSockMockc                 ó0  — t         j                  | «       t        j                  j	                  t        j                  j                  t        «      |«      }t        |d«      5 }| j                  |j                  «       «       d d d «       y # 1 sw Y   y xY w)NÚrb)
r   r   ÚosÚpathÚjoinÚdirnameÚ__file__Úopenr   Úread)r   Úfnamer8   Úfs       r   r   zHeaderSockMock.__init__J   sd   € Ü×Ñ˜$ÔÜ�w‰w�|‰|œBŸG™GŸO™O¬HÓ5°uÓ=ˆÜ�$˜Óð 	& Ø�O‰O˜AŸF™F›HÔ%÷	&÷ 	&ñ 	&ús   Á# BÂBN©r0   r1   r2   r   r!   r   r   r4   r4   H   s   „ ó&r   r4   c                   ó   — e Zd Zd„ Zy)ÚOptsListc                 óN   — d| _         g | _        dt        j                  i| _        y )Né   Ú	cert_reqs)ÚtimeoutÚsockoptÚsslÚ	CERT_NONEÚssloptr   s    r   r   zOptsList.__init__S   s    € ØˆŒØˆŒØ"¤C§M¡MÐ2ˆ�r   Nr@   r!   r   r   rB   rB   Q   s   „ ó3r   rB   c                   ó  — e Zd Zd„ Zd„ Z ej                  ed«      d„ «       Z ej                  ed«       ej                  e	d«       ej                  e
d«      d„ «       «       «       Z ej                  ed«      d„ «       Zd	„ Zy
)ÚHttpTestc                 óÞ   — t        t        d«      «      \  }}}| j                  |d«       | j                  |d   d«       | j                  t        j
                  t         t        d«      «       y )Núdata/header01.txtée   Ú
connectionÚUpgradeúdata/header02.txt)r   r4   ÚassertEqualÚassertRaisesÚwsÚWebSocketException)r   ÚstatusÚheaderÚstatus_messages       r   ÚtestReadHeaderzHttpTest.testReadHeader[   s\   € Ü)5´nÐEXÓ6YÓ)ZÑ&ˆ�˜Ø×Ñ˜ Ô%Ø×Ñ˜ Ñ-¨yÔ9à×Ñœ"×/Ñ/´¼~ÐNaÓ?bÕcr   c                 óÈ   — | j                  t        j                  t        t	        d«      ddd«       | j                  t        j                  t        t	        d«      ddd«       y )NrN   úexample.coméP   )ÚusernameÚpasswordrR   )rT   rU   ÚWebSocketProxyExceptionr   r4   r   s    r   Ú
testTunnelzHttpTest.testTunnelb   s^   € Ø×Ñœ"×4Ñ4´g¼~ÐNaÓ?bÐdqÐsuð  xPô  	QØ×Ñœ"×4Ñ4´g¼~ÐNaÓ?bÐdqÐsuð  xPõ  	Qr   z%Internet-requiring tests are disabledc                 óæ  — t         j                  j                  �r| j                  t        t
        ft        dt        «       t        dddd¬«      «       | j                  t        t
        ft        dt        «       t        dddd¬«      «       | j                  t        t
        ft        dt        «       t        dddd¬«      «       | j                  t        t
        ft        dt        «       t        ddd	d¬«      «       | j                  t        t        dt        «       t        d
ddd¬«      d «       | j                  t        t        d ddt        d
dd¬«      «       | j                  t        t        d ddt        d
dd¬«      «       | j                  t        j                  t        dt        «       t        dddd¬«      d «       | j                  t        dt        «       t        ddd¬«      d«      d«       y )Nzwss://example.comr\   Ú8080Úsocks4rD   )Úhttp_proxy_hostÚhttp_proxy_portÚ
proxy_typeÚhttp_proxy_timeoutÚsocks4aÚsocks5Úsocks5hú	127.0.0.1i'  r]   TÚ9999Úhttp©re   rf   rg   zwss://google.comz8.8.8.8i�  )T)z
google.comé»  ú/)rU   Ú_httpÚHAVE_PYTHON_SOCKSrT   r
   ÚOSErrorr   rB   r   r   r   Ú	TypeErrorr   ÚsocketrF   rS   r   s    r   ÚtestConnectzHttpTest.testConnectf   sl  € ô �8‰8×%Ó%ð ×ÑÔ0´'Ð:Ô<QÐSfÔhpÓhrÔt~ð  P]ð  ouð  BJð  _`ô  uaô  bØ×ÑÔ0´'Ð:Ô<QÐSfÔhpÓhrÔt~ð  P]ð  ouð  BKð  `aô  ubô  cØ×ÑÔ0´'Ð:Ô<QÐSfÔhpÓhrÔt~ð  P]ð  ouð  BJð  _`ô  uaô  bØ×ÑÔ0´'Ð:Ô<QÐSfÔhpÓhrÔt~ð  P]ð  ouð  BKð  `aô  ubô  cØ×ÑÔ2´GÐ=PÔRZÓR\Ô^hð  zEð  W[ð  hpð  EFô  _Gð  IMô  Nà×Ñœ)Ô%7¸¸rÀ4ÌÐdoð  BHð  U[ô  J\ô  	]Ø×Ñœ)Ô%7¸¸rÀ4ÌÐdoð  BHð  U[ô  J\ô  	]Ø×Ñœ&Ÿ.™.¬'Ð3EÄxÃzÔS]Ðnwð  JNð  [að  vwô  Txð  z~ô  	Ø×ÑÜÐ&¬«
´JÈyÐjnð  |Bô  5Cð  EIó  JØ,õ	.r   z:This test requires a HTTP proxy to be running on port 8899z/Tests using local websocket server are disabledc                 óú  — t        j                  «       } |j                  dt        z   ddd¬«        |j                  d«        |j
                  «       }| j                  |d«       | j                  t        ddd	t        ddd¬«      «      t        j                  dd
dt        j                  t        j                  «      d	d f«       | j                  t        dt        «       t        dd
d¬«      d «      d   d«       y )Nzws://127.0.0.1:rl   Ú8899rn   ro   zHello, Serverúapi.bitfinex.comrp   TiÃ"  r   úwss://api.bitfinex.com/ws/2rD   )rz   rp   z/ws/2)Ú	websocketÚ	WebSocketr   r   r-   r+   rS   r   r   rv   ÚgetaddrinfoÚSOCK_STREAMÚSOL_TCPrB   )r   rU   Úserver_responses      r   ÚtestProxyConnectzHttpTest.testProxyConnect{   s  € ô × Ñ Ó"ˆØˆ�
‰
Ð$Ô';Ñ;È[Ðjpð  ~Dõ  	EØˆ�‰�Ô Ø!˜"Ÿ'™'›)ˆØ×Ñ˜¨/Ô:à×ÑÔ+Ð,>ÀÀTÌ:Ðfqð  DJð  W]ô  L^ó  _Ü ×,Ñ,¨[¸$ÀÄ6×CUÑCUÔW]×WeÑWeÓfÐhlÐnrÐsô	uà×ÑœÐ!>ÄÃ
ÌJÐgrð  EIð  V\ô  M]ð  _có  dð  efñ  gð  iKõ  	Lr   c                 ó*  — ddt         j                  dddœ}t        j                  |¬«      }|j	                  d«       |j                  d«       |j                  «        t        j                  d	d
i¬«      }|j	                  d«       |j                   y )NFÚ
ServerNameaÚ  TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:                        TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:                        ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:                        ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:                        DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:                        ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:                        ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:                        DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES128-SHA256:                        ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:                        ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHAÚ
prime256v1)Úcheck_hostnameÚserver_hostnameÚssl_versionÚciphersÚ
ecdh_curve)rJ   r{   ÚHellor†   T)rH   ÚPROTOCOL_TLS_CLIENTr|   r}   r   r-   r/   )r   Ú
ssloptionsÚws_ssl1Úws_ssl2s       r   Ú
testSSLoptzHttpTest.testSSLoptŠ   sƒ   € ð $Ø+Ü×2Ñ2ð	Eð 'ñ
ˆ
ô  ×%Ñ%¨ZÔ8ˆØ�‰Ð5Ô6Ø�‰�WÔØ�‰Œä×%Ñ%Ð.>ÀÐ-EÔFˆØ�‰Ð5Ô6Ø�‹r   c                 ó0  — | j                  t        ddd¬«      j                  d«       | j                  t        t        ddd¬«       | j                  t        ddd¬«      j
                  d«       | j                  t        ddd¬«      j                  d«       | j                  t        ddd¬«      j                  d «       | j                  t        dddd¬«      j                  d	   d
«       | j                  t        dddd¬«      j                  d   d«       y )Nrl   rc   rn   ro   Úbadvalr\   )Úmy_username123Ú
my_pass321)re   rf   rg   Úhttp_proxy_authr   r“   rD   r”   )rS   r   Úproxy_protocolrT   r	   Ú
proxy_hostÚ
proxy_portÚauthr   s    r   ÚtestProxyInfozHttpTest.testProxyInfo¥   s?  € Ø×Ñœ°KÐQWÐdjÔk×zÑzð  }Cô  	DØ×Ñœ*¤jÀ+Ð_eÐrzÐÔ{Ø×Ñœ°MÐSYÐflÔm×xÑxð  {Hô  	IØ×Ñœ°KÐQWÐdjÔk×vÑvÐx~ÔØ×Ñœ°KÐQWÐdjÔk×pÑpÐrvÔwØ×Ñœ°KÐQWÐdjð  }]ô  ^÷  cñ  cð  deñ  fð  hxô  	yØ×Ñœ°KÐQWÐdjð  }]ô  ^÷  cñ  cð  deñ  fð  htõ  	ur   N)r0   r1   r2   rZ   ra   ÚunittestÚ
skipUnlessr   rw   r   ÚTEST_WITH_LOCAL_SERVERr‚   r�   rš   r!   r   r   rL   rL   Y   s»   „ òdòQð €X×ÑÐ+Ð-TÓUñ.ó Vð.ð( €X×ÑÐ+Ð-TÓUØ€X×Ñ˜Ð*fÓgØ€X×ÑÐ/Ð1bÓcñ	Ló dó hó Vð	Lð €X×ÑÐ+Ð-TÓUñó Vðó4ur   rL   Ú__main__)r7   Úos.pathr|   rU   Úwebsocket._httpr   r   r   r   r   r   r›   rH   rv   Úpython_socks._errorsr	   r
   r   ÚenvironÚgetr   r   r   r�   r   r4   rB   ÚTestCaserL   r0   Úmainr!   r   r   ú<module>r¦      së   ðó 
Û Û ß q× qÛ Û 
Û Û ðð&TßXÑXð
 —Z‘Z—^‘^Ð$8¸#Ó>À#ÑEÐ Ø—*‘*—.‘.Ð!2°CÓ8¸CÑ?€à—z‘z—~‘~Ð&<¸dÓCÐ Ø-°Ñ5Ð ÷ñ ô8&�Xô &÷3ñ 3ôSuˆx× Ñ ô Suðl ˆzÒØ€H‡M�M…Oð øð]TßSÓSús   ¯
C$ Ã$C2