idb ,UdZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z mZmZmZmZmZmZmZmZddlmZddlmZdd lmZdd lmZd ZGd d e ZdeDZ eee!e"d<Gdde Z#dZ$ee%e"d<e dj&Z'e dj&Z(e dj)Z*e dj+Z,e dj+Z-e dj+Z.e dj+Z/dZ0ee!e"d<dZ1ee!e"d<ej2dgdZ3Gdd e3Z4e4e#j5ddZ6e4e#j7ddZ8Gd!d"e9Z:Gd#d$e9Z;ej<Z=ee>e"d%<d&e?d'DZ@eee%e"d(<d)e%d*eAd+dfd,ZBereBZCn dd-lDmEZEeEZCn #eF$reBZCYnwxYwe%gd.ZGee%e"d/<ejHd0ZIeee>e"d1<ejHd2ZJeee>e"d3<dBd5ee>d6eKd+ee!eKffd7ZL dCd9e!d6eKd:eKd+e>fd;ZMGd<d=e ZNGd>d?ZOGd@dAZPdS)Dz%WebSocket protocol versions 13 and 8.N)IntEnum)Struct) AnyCallableListOptionalPatternSetTupleUnioncast) BaseProtocol) NO_EXTENSIONS) DataQueue)Final) WS_CLOSED_MESSAGEWS_CLOSING_MESSAGEWS_KEYWebSocketReaderWebSocketWriter WSMessageWebSocketError WSMsgType WSCloseCodecBeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdS)riiiiiiiiiiiiN)__name__ __module__ __qualname__OK GOING_AWAYPROTOCOL_ERRORUNSUPPORTED_DATAABNORMAL_CLOSURE INVALID_TEXTPOLICY_VIOLATIONMESSAGE_TOO_BIGMANDATORY_EXTENSIONINTERNAL_ERRORSERVICE_RESTARTTRY_AGAIN_LATER BAD_GATEWAYK/opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/http_websocket.pyrr sS BJNLONOOKKKr/rc,h|]}t|Sr.)int).0is r0 r50s'D'D'D1A'D'D'Dr/ALLOWED_CLOSE_CODEScReZdZdZdZdZdZdZdZdZ dZ d Z eZ eZ eZeZeZe Ze Ze Zd S) rrr iiN)rrr CONTINUATIONTEXTBINARYPINGPONGCLOSECLOSINGCLOSEDERRORtextbinarypingpongcloseclosingclosederrorr.r/r0rr3seL D F D D EG F E D F D D EG F EEEr/rs$258EAFA5-E914-47DA-95CA-C5AB0DC85B11rz!Hz!Qz!BBz!BBHz!BBQi@MSG_SIZE DEFAULT_LIMIT_WSMessageBase)typedataextrac@eZdZejddeegefdefdZdS)r)loadsrVreturnc"||jS)zAReturn parsed JSON data. .. versionadded:: 0.22 )rS)selfrVs r0jsonzWSMessage.json]s uTYr/N)rrr rZrVrrr.r/r0rr\sP48J   XseSj1 3      r/rc<eZdZdZdededdffd ZdefdZxZS)rz WebSocket protocol parser error.codemessagerWNcZ||_t||dSN)r\super__init__)rYr\r] __class__s r0razWebSocketError.__init__ls*  w'''''r/cBtt|jdS)Nr)r strargsrYs r0__str__zWebSocketError.__str__psC1&&&r/) rrr __doc__r2rdrarg __classcell__)rbs@r0rriss**(S(3(4(((((('''''''''r/rceZdZdZdS)WSHandshakeErrorz#WebSocket protocol handshake error.N)rrr rhr.r/r0rkrkts----r/rknative_byteorderc`g|]*tfdtdD+S)c3"K|] }|z V dSr_r.)r3abs r0 z.|s''B'B!A'B'B'B'B'B'Br/r<)bytesrange)r3rps @r0 rt|s<!W!W!Wq%'B'B'B'BuSzz'B'B'B"B"B!W!W!Wr/r< _XOR_TABLEmaskrSrWct|ts J|t|dks J||rd|D\}}}}|ddd||ddd<|ddd||ddd<|ddd||ddd<|ddd||ddd<dSdS)awWebsocket masking function. `mask` is a `bytes` object of length 4; `data` is a `bytearray` object of any length. The contents of `data` are masked with `mask`, as specified in section 5.3 of RFC 6455. Note that this function mutates the `data` argument. This pure-python implementation may be replaced by an optimized version when available. c30K|]}t|VdSr_)ru)r3ns r0rqz)_websocket_mask_python..s&22jm222222r/Nrr8) isinstance bytearraylen translate)rvrSrorpcds r0_websocket_mask_pythonrs dI & &,,,,, t99>>>4>>> -22T222 1a1I''**SSqS !$Q$Z))!,,QTT !$Q$Z))!,,QTT !$Q$Z))!,,QTT --r/)_websocket_mask_cython)rrr_WS_DEFLATE_TRAILINGz^(?:;\s*(?:(server_no_context_takeover)|(client_no_context_takeover)|(server_max_window_bits(?:=(\d+))?)|(client_max_window_bits(?:=(\d+))?)))*$ _WS_EXT_REzpermessage-deflate([^,]+)?_WS_EXT_RE_SPLITFextstrisserverc|sdSd}d}t|D]0}|d}|sd}nt|}|rd}|r_|dr1t |d}|dks|dkrd}|drd}n|d r=t |d }|dks|dkrt d |d rd}n)|s%t d |dz2||fS) N)rFrFrrxr9TzInvalid window sizer8z#Extension for deflate not supported)rfinditergrouprmatchr2rk)rrcompress notakeoverextdefextrs r0 ws_ext_parsers xHJ((00(Y(Y1 H E  (( ! YH ;;q>>!"5;;q>>22H  "}}1 #$ ;;q>>&!%J;;q>>F"5;;q>>22H  "}}1 ./DEEE;;q>>&!%J Y"#H399UV<<#WXX X Y Z r/rrserver_notakeoverc|dks|dkrtddg}|s|d|dkr%|dt|z|r|dd|S) Nr9rzCCompress wbits must between 9 and 15, zlib does not support wbits=8zpermessage-deflateclient_max_window_bitszserver_max_window_bits=server_no_context_takeoverz; ) ValueErrorappendrdjoin)rrr enabledexts r0 ws_ext_genrs !||x"}} T   ''J 42333"}}3c(mmCDDD86777 99Z  r/ceZdZdZdZdZdZdS) WSParserStaterr8r{rxN)rrr READ_HEADERREAD_PAYLOAD_LENGTHREAD_PAYLOAD_MASK READ_PAYLOADr.r/r0rrs$KLLLr/rc eZdZ ddeedededdfdZddZd e de ee ffd Z d e de ee ffd Z d e de e eeeeeeffd ZdS)rTqueue max_msg_sizerrWNc8||_||_d|_t|_t j|_d|_d|_ d|_ t|_ d|_ d|_ d|_d|_d|_d|_d|_||_dS)NFr/r)r _max_msg_size_excr}_partialrr_state_opcode _frame_fin _frame_opcode_frame_payload_tail _has_mask _frame_mask_payload_length_payload_length_flag _compressed_decompressobj _compress)rYrrrs r0razWebSocketReader.__init__s )-1 !  #/ &* ,0'kk ,0 $%!+/#'!r/c8|jdSr_)rfeed_eofrfs r0rzWebSocketReader.feed_eofs r/rSc|jrd|fS ||S#t$r,}||_|j|Yd}~dSd}~wwxYw)NT)Tr/)r _feed_data Exceptionr set_exception)rYrSexcs r0 feed_datazWebSocketReader.feed_datasv 9 :  ??4(( (   DI J $ $S ) ) )99999 s" A!AAc : ||D]\}}}}|r,|js%tjtj |_|t jkr!t|dkrt|ddd}|dkr&|tvrttj d| |dd d}n-#t$r }ttjd|d}~wwxYwt!t j||} n@|r#ttj d|d |d |t!t jdd } |j| dh|t jkrC|jt!t j|d t||t jkrC|jt!t j|d t||t jt jfvr$|jttj d ||s|t jkr||_|j||jrbt|j|jkrEttjd t|j|j|jr=|t jkr-ttj d ||t jkr|jJ|j}d|_|j||jrbt|j|jkrEttjd t|j|j|r|jt<|j|j|j} |jj rTt|jj } ttjd|j| z|jntC|j} |j"|t jkr | d} |jt!t j| d t| #t$r }ttjd|d}~wwxYw|jt!t j| d t| dS)N)wbitsr8ri zInvalid close code: utf-8zInvalid UTF-8 text messagezInvalid close frame:  zUnexpected opcode=z Message size {} exceeds limit {}zr?rr=rextendrr(formatr decompressunconsumed_tailrrclear) rYrSfinopcodepayload compressed close_code close_messagermsgpayload_mergedleftrFs r0rzWebSocketReader._feed_data&s040@0@0F0Fv v  ,C* P$"5 P&*&8&O&O&O#((w<<1$$!272A2;!?!?!BJ!D((Z?R-R-R,'6?:??#(/ (:(:7(C(C -###,'46R"##$IOZOOCC<(#2JJJfJJwJJ $IOQ;;C $$S!,,,,9>)) $$ingr::CLL9>)) $$ingr::CLL y~y/?@@@L($.0OV0O0O G!777'- M((111)c$-.@.@DDV.V.V,'7>EE #DM 2 2D4F}!Y%;;;"0 + :!77=vf~~## !777#|777!%'+ M((111)c$-.@.@DDV.V.V,'7>EE #DM 2 2D4F"> ,,-ABBB)-)<)G)G M4+=** .>#&t':'J#K#KD"0 + ; O V V$($6$=t?Q!"!"##*/t})=)=M'')))//'#1#8#8#A#AD J00 )).$ C CSYY 2'''"0 + 8:V###&''  ,,%i&6KK// zs1:C D"C==DAT++ U5UUbufcg}|jr|j|zdc}|_d}t|} |jtjkrF||z dkr:|||dz}|dz }|\}}|dz dz}|dz dz} |dz dz} |d z dz} |d z} | s | s | r!|jst tjd | dkr |dkrt tjd |dz dz} |d z}| dkr |dkrt tjd|j s|j | rdnd|_ n| rt tjd t||_ | |_ t| |_ ||_tj|_nn\|jtjkr|j}|dkr^||z dkrS|||dz}|dz }t!|d}||_|j r tjn tj|_nn|dkr^||z dkrS|||dz}|dz }t)|d}||_|j r tjn tj|_n-nx||_|j r tjn tj|_|jtjkr4||z d kr)|||d z|_|d z }tj|_nn|jtjkr|j}|j}||z }||kr*||z |_|||d|}n,d|_|||||z||z}|jdkrr|j r|jJt1|j|||j |j ||j ft5|_tj|_nn||d|_|S)z&Return the next frame from the socket.r/rTr8rrrxrz*Received frame with non-zero reserved bitsz!Received fragmented control frame}z5Control frame payload cannot be larger than 125 bytesNF~r;)rr~rrrrrrr#rrboolrrrr UNPACK_LEN2rrr UNPACK_LEN3rrr_websocket_maskrr})rYrframes start_pos buf_lengthrS first_byte second_byterrsv1rsv2rsv3rhas_masklengthr chunk_lens r0rzWebSocketReader.parse_frames : 4"j3.OC XX J {m777 )Q..y9q=89DNI.2+J %?a/C&!Oq0D&!Oq0D&!Oq0D'#-FtT^,'6H ||q,'6? !,q 0A5H(4/F|| ,'6V$*:*B37+B44U((,'6H '+3iiDO)/D&%)(^^DN06D-"/"CDKK{m???2S==!I-22"9y1}#<=!Q !,T!2!21!5/5, $~8 77*7K{m=== )Q..'*9y1}+D'ED$NI"/"sU! "  )  $  !%r/r]rcK|jr|tjzstdd}|s|jr|dkr|r"t jt j| }n9|js+t jt j|j |_|j}||}|| |j r t j n t j z}| tr |dd}|dz}t|}|j}|rd}nd}|d krt#d|z|z||z} n;|d krt%d|z|zd |z|} nt'd|z|zd |z|} |r|dd } | d d} t-|}t/| ||| | z|z|xjt| t| zt|zz c_nt|t4kr+|| ||n|| |z|xjt| t|zz c_|j|jkr(d|_|jd{VdSdS)>!Z00D==E**D((G D' * * * KK / 0 0 0   Vs4yy!83w< !T^%>%>%@%@ !&'JKK K T"""""r/r/cKt|tr|d}||tjd{VdS)zSend pong message.rN)r|rdencoderrrArYr]s r0rIzWebSocketWriter.pongY gs # # .nnW--Gw 77777777777r/cKt|tr|d}||tjd{VdS)zSend ping message.rN)r|rdrrrr@rs r0rHzWebSocketWriter.pingrr/rGcKt|tr|d}|r)||tj|d{VdS||tj|d{VdS)rrN)r|rdrrrr?r>)rYr]rGrs r0sendzWebSocketWriter.sends gs # # .nnW--G  F""7I,r9s`+++ RRRRRRRRRRRRRRRRRRRRRR''''''""""""      '    (E'D 'D'D'DU3s8_DDD0?e >>>fTll& fTll& F4LL' F5MM  F6NN  F6NN  &,,#%*! uSz!!!('(8:S:S:STT        Ii.d;;Yy0$=='''''Y'''.....y... #}%*,,,"X!WEERUJJ!W!W!W E$u+ WWW--i-D----01,OO16666660 11101&+U+C+C+C%D%DeElDDD#-"*/## E'#, )3 3P(Q(Q% %QQQ0 0 #0 $0 5dCS0 0 0 0 hKP!!!"&!CG!!!!!,G{{{{{{{{| @!@!@!@!@!@!@!@!@!@!sGG('G(