Ë
    è×ïi5  ã            
       óz  — d Z ddlZddlZddlZddlmZ ddlmZ	 ddl
mZ ddl­ ddl­ ddl­ ddl­ g d¢Zd	Ze	j$                  e	j&                  e	j(                  fZee	j,                  fz   Z e«       Z G d
„ d«      Zdedededefd„Zdedefd„Zdededededef
d„Zefde de fd„Z!dddœZ"defd„Z#defd„Z$y)ad  
_handshake.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)Úclienté   )ÚSimpleCookieJar)Ú*)Úhandshake_responseÚ	handshakeÚSUPPORTED_REDIRECT_STATUSESé   c                   ó   — e Zd Zdedefd„Zy)r   ÚstatusÚheadersc                 óv   — || _         || _        || _        t        j	                  |j                  d«      «       y )Nz
set-cookie)r   r   ÚsubprotocolÚ	CookieJarÚaddÚget)Úselfr   r   r   s       úN/var/www/html/aiagents/fe/lib/python3.12/site-packages/websocket/_handshake.pyÚ__init__zhandshake_response.__init__+   s-   € ØˆŒØˆŒØ&ˆÔÜ�‰�g—k‘k ,Ó/Õ0ó    N)Ú__name__Ú
__module__Ú__qualname__ÚintÚdictr   © r   r   r   r   )   s   „ ð1˜sð 1¨Tô 1r   r   ÚurlÚhostnameÚportÚresourcec                 ó0  — t        |||||«      \  }}dj                  |«      }t        | |«       t        d|«       t	        | «      \  }	}
|	t
        v rt        |	|
d «      S t        |
||j                  d«      «      \  }}|st        d«      ‚t        |	|
|«      S )Nz
zrequest headerÚsubprotocolszInvalid WebSocket Header)
Ú_get_handshake_headersÚjoinÚsendÚdumpÚ_get_resp_headersr
   r   Ú	_validater   ÚWebSocketException)Úsockr   r   r    r!   Úoptionsr   ÚkeyÚ
header_strr   ÚrespÚsuccessÚsubprotos                r   r	   r	   2   s›   € Ü)¨(°C¸À4ÈÓQ�L€GˆSà—‘˜WÓ%€JÜˆˆzÔÜÐ	˜:Ô&ä$ TÓ*�L€FˆDØÔ,Ñ,Ü! &¨$°Ó5Ð5Ü! $¨¨W¯[©[¸Ó-HÓIÑ€GˆXÙÜ Ð!;Ó<Ð<ä˜f d¨HÓ5Ð5r   Úreturnc                 ó   — d| v rd| z   dz   S | S )Nú:ú[ú]r   )r   s    r   Ú_pack_hostnamer7   C   s   € à
ˆh�Ø�X‰~ Ñ#Ð#à€Or   Úhostr,   c                 óP  — dj                  | ¬«      dg}|dk(  s|dk(  rt        |«      }ndj                  t        |«      |¬«      }|j                  d«      r%|j                  d	j                  |d   ¬
«      «       n!|j                  dj                  |¬«      «       |j	                  dd«      \  }}|j                  d«      svd|v r*|d   �%|j                  dj                  |d   ¬«      «       nH|dk(  r"|j                  dj                  |¬«      «       n!|j                  dj                  |¬«      «       t        «       }|j                  d«      rd|d   vr"|j                  dj                  |¬«      «       n|d   d   }|j                  d«      rd|d   vr%|j                  dj                  t        ¬«      «       |j                  d«      s|j                  d«       n|j                  |d   «       |j                  d«      }	|	r0|j                  d j                  d!j                  |	«      ¬"«      «       |j                  d«      }
|
rVt        |
t        «      r5|
j                  «       D ��cg c]  \  }}|�d#j                  ||g«      ‘Œ }
}}|j                  |
«       t        j                  |«      }|j                  d$d «      }d%j                  t        d ||g«      «      }|r!|j                  d&j                  |¬'«      «       |j                  d(«       ||fS c c}}w ))NzGET {resource} HTTP/1.1)r!   zUpgrade: websocketéP   i»  z{h}:{p})ÚhÚpr8   z	Host: {h})r;   z
Host: {hp})Úhpr4   r   Úsuppress_originÚoriginzOrigin: {origin})r?   ÚwsszOrigin: https://{hp}zOrigin: http://{hp}ÚheaderzSec-WebSocket-KeyzSec-WebSocket-Key: {key})r-   zSec-WebSocket-Versionz Sec-WebSocket-Version: {version})ÚversionÚ
connectionzConnection: Upgrader#   z#Sec-WebSocket-Protocol: {protocols}ú,)Ú	protocolsz: Úcookiez; zCookie: {cookie})rF   )Ú rG   )Úformatr7   r   ÚappendÚsplitÚ_create_sec_websocket_keyÚVERSIONr%   Ú
isinstancer   ÚitemsÚextendr   Úfilter)r!   r   r8   r    r,   r   ÚhostportÚschemer-   r#   rA   ÚkÚvÚserver_cookieÚclient_cookierF   s                   r   r$   r$   K   sÝ  € à!×(Ñ(°(Ð(Ó;Øð€Gð ˆr‚z�T˜S’[Ü! $Ó'‰à×#Ñ#¤n°TÓ&:¸dÐ#ÓCˆØ‡{�{�6ÔØ�‰�{×)Ñ)¨G°F©OÐ)Ó<Õ=à�‰�|×*Ñ*¨hÐ*Ó7Ô8ð —)‘)˜C Ó#�K€FˆCØ�;‰;Ð(Ô)Ø�wÑ 7¨8Ñ#4Ð#@Ø�N‰NÐ-×4Ñ4¸GÀHÑ<MÐ4ÓNÕOØ�uŠ_Ø�N‰NÐ1×8Ñ8¸HÐ8ÓEÕFà�N‰NÐ0×7Ñ7¸8Ð7ÓDÔEä
#Ó
%€Cð �;‰;�xÔ Ð$7¸wÀxÑ?PÑ$PØ�‰Ð1×8Ñ8¸SÐ8ÓAÕBà�hÑÐ 3Ñ4ˆà�;‰;�xÔ Ð$;À7È8ÑCTÑ$TØ�‰Ð9×@Ñ@ÌÐ@ÓQÔRà�;‰;�|Ô$Ø�‰Ð,Õ-à�‰�w˜|Ñ,Ô-à—;‘;˜~Ó.€LÙØ�‰Ð<×CÑCÈcÏhÉhÐWcÓNdÐCÓeÔfà�[‰[˜Ó"€FÙÜ�fœdÔ#ð #ŸL™L›N÷á�A�qØ�=ð —	‘	˜1˜a˜&Õ!ðˆFñ ð
 	�‰�vÔä—M‘M $Ó'€MØ—K‘K ¨$Ó/€Mà�Y‰Y”v˜d ]°MÐ$BÓCÓD€FáØ�‰Ð)×0Ñ0¸Ð0Ó?Ô@à‡N�N�8ÔØ�Cˆ<Ðùó!s   É3L"Úsuccess_statusesc                 óÔ   — t        | «      \  }}}||vrR|j                  d«      }|r| j                  t        |«      «      }nd }t	        dj                  ||||¬«      ||||«      ‚||fS )Nzcontent-lengthz@Handshake status {status} {message} -+-+- {headers} -+-+- {body})r   Úmessager   Úbody)Úread_headersr   Úrecvr   ÚWebSocketBadStatusExceptionrH   )r+   rW   r   Úresp_headersÚstatus_messageÚcontent_lenÚresponse_bodys          r   r(   r(   Ž   s¬   € Ü+7¸Ó+=Ñ(€FˆL˜.ØÐ%Ñ%Ø"×&Ñ&Ð'7Ó8ˆÙØ ŸI™I¤c¨+Ó&6Ó7‰Mà ˆMÜ)Ð*l×*sÑ*sð  |Bð  LZð  dpð  wDÐ*só  +Eð  GMð  O]ð  _kð  mzó  {ð  	{Ø�<ÐÐr   Ú	websocketÚupgrade)rc   rC   r-   c                 óT  — d }t         j                  «       D ][  \  }}| j                  |d «      }|s y|j                  d«      D �cg c]   }|j	                  «       j                  «       ‘Œ" }}||vsŒ[ y |rj| j                  dd «      }|r.|j                  «       |D �cg c]  }|j                  «       ‘Œ c}vrt        dt        |«      z   «       y|j                  «       }| j                  dd «      }	|	sy|	j                  «       }	t        |	t        «      r|	j                  d«      }	|dz   j                  d«      }
t        t        j                  |
«      j                  «       «      j	                  «       j                  «       }t        j                  ||	«      }|rd|fS yc c}w c c}w )	N)FNrD   zsec-websocket-protocolzInvalid subprotocol: zsec-websocket-acceptúutf-8z$258EAFA5-E914-47DA-95CA-C5AB0DC85B11T)Ú_HEADERS_TO_CHECKrN   r   rJ   ÚstripÚlowerÚerrorÚstrrM   ÚencodeÚbase64encodeÚhashlibÚsha1ÚdigestÚhmacÚcompare_digest)r   r-   r#   r1   rS   rT   ÚrÚxÚsÚresultÚvalueÚhashedr0   s                r   r)   r)       sp  € Ø€HÜ!×'Ñ'Ó)ò ‰ˆˆ1Ø�K‰K˜˜4Ó ˆÙÙØ()¯©°«Ö5 1ˆQ�W‰W‹Y�_‰_ÕÐ5ˆÐ5Ø�AŠ:Ùðñ Ø—;‘;Ð7¸Ó>ˆÙ˜8Ÿ>™>Ó+À|Ö3TÀ!°A·G±GµIÒ3TÑTÜÐ)¬C°Ó,=Ñ=Ô>ØØ—>‘>Ó#ˆà�[‰[Ð/°Ó6€FÙØØ�\‰\‹^€Fä�&œ#ÔØ—‘˜wÓ'ˆàÐ9Ñ9×AÑAÀ'ÓJ€EÜœ'Ÿ,™, uÓ-×4Ñ4Ó6Ó7×=Ñ=Ó?×EÑEÓG€FÜ×!Ñ! &¨&Ó1€GáØ�Xˆ~Ðàùò5 6ùò 4Us   Á%F ÂF%c                  ó|   — t        j                  d«      } t        | «      j                  d«      j	                  «       S )Né   re   )ÚosÚurandomrl   Údecoderg   )Ú
randomnesss    r   rK   rK   Ã   s.   € Ü—‘˜B“€JÜ˜
Ó#×*Ñ*¨7Ó3×9Ñ9Ó;Ð;r   )%Ú__doc__rm   rp   rz   Úbase64r   rl   Úhttpr   Ú
HTTPStatusÚ
_cookiejarr   Ú_exceptionsÚ_httpÚ_loggingÚ_socketÚ__all__rL   ÚMOVED_PERMANENTLYÚFOUNDÚ	SEE_OTHERr
   ÚSWITCHING_PROTOCOLSÚSUCCESS_STATUSESr   r   rj   r   r	   r7   r   r$   Útupler(   rf   r)   rK   r   r   r   ú<module>rŽ      s!  ðñó$ Û Û 	Ý .Ý %Ý 'Ü Ü Ü Ü â
L€ð €à)×;Ñ;¸Z×=MÑ=MÈz×OcÑOcÐeÐ Ø.°*×2PÑ2PÐ1RÑRÐ áÓ€	÷1ñ 1ð6˜ð 6¨ð 6°3ð 6À#ó 6ð"˜Sð  Só ð@ Sð @¨sð @¸#ð @ÀSð @ÐSWó @ðF 7Gñ 	 ¨eð 	 È5ó 	 ð ØñÐ ð ˜Có  ðF< 3ô <r   