HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib64/python3.10/site-packages/websocket/__pycache__/_abnf.cpython-310.pyc
o

�h18�@sJddlZddlZddlZddlZddlmZddlmZmZm	Z	ddl
mZmZddl
mZ	zddlmZdejd	ejd
efdd�ZWney]ejZdejd	ejd
efd
d�ZYnwgd�ZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%eeeeeeee e!e"e#e$fZ&Gdd�d�Z'Gd d!�d!�Z(Gd"d#�d#�Z)dS)$�N)�Lock)�Callable�Optional�Union�)�WebSocketPayloadException�WebSocketProtocolException)�
validate_utf8)�XorMaskerSimple�
mask_value�
data_value�returncCst|��|�}|S�N)r
�process)rr�mask_result�r�B/usr/local/CyberCP/lib/python3.10/site-packages/websocket/_abnf.py�_mask%srcCsHt|�}t�|t�}t�||d|d|d�t�}||A�|t�S)N�)�len�int�
from_bytes�native_byteorder�to_bytes)rr�datalen�int_data_value�int_mask_valuerrrr-s�)�ABNF�continuous_frame�frame_buffer�
STATUS_NORMAL�STATUS_GOING_AWAY�STATUS_PROTOCOL_ERROR�STATUS_UNSUPPORTED_DATA_TYPE�STATUS_STATUS_NOT_AVAILABLE�STATUS_ABNORMAL_CLOSED�STATUS_INVALID_PAYLOAD�STATUS_POLICY_VIOLATION�STATUS_MESSAGE_TOO_BIG�STATUS_INVALID_EXTENSION�STATUS_UNEXPECTED_CONDITION�STATUS_BAD_GATEWAY�STATUS_TLS_HANDSHAKE_ERRORi�i�i�i�i�i�i�i�i�i�i�i�i�i�i�c@sVeZdZdZdZdZdZdZdZdZ	eeeeee	fZ
eded	ed
edede	d
iZdZdZ
dZddddeddfdededededededeeedfddfdd�Zd/deddfdd �Zed!edefd"d#��Zdefd$d%�Zed0deeefdededdfd&d'��Zdefd(d)�Zd*eeefdefd+d,�Zed*eeefdeeefdefd-d.��ZdS)1rz}
    ABNF frame class.
    See http://tools.ietf.org/html/rfc5234
    and http://tools.ietf.org/html/rfc6455#section-5.2
    rr���	�
�cont�text�binary�close�ping�pong�~il��fin�rsv1�rsv2�rsv3�opcoder�dataNr
cCsB||_||_||_||_||_||_|durd}||_tj|_	dS)zG
        Constructor for ABNF. Please check RFC for arguments.
        Nr8)
r9r:r;r<r=rr>�os�urandom�get_mask_key)�selfr9r:r;r<r=rr>rrr�__init__�s
z
ABNF.__init__F�skip_utf8_validationcCs�|js	|js	|jr
td��|jtjvrtd|j��|jtjkr&|js&td��|jtj	krnt
|j�}|s5dS|dks=|dkrAtd��|dkrT|sTt|jdd��sTtd��d	t
|jd
�t
|jd�}|�|�sptd|��dSdS)z�
        Validate the ABNF frame.

        Parameters
        ----------
        skip_utf8_validation: skip utf8 validation.
        zrsv is not implemented, yetzInvalid opcode %rzInvalid ping frame.Nrr7zInvalid close frame.r-�rzInvalid close opcode %r)r:r;r<rr=r�OPCODES�OPCODE_PINGr9�OPCODE_CLOSErr>r	r�_is_valid_close_status)rBrD�l�coderrr�validate�s&
 

�
z
ABNF.validaterKcCs |tvpd|ko
dkSS)Ni�i�)�VALID_CLOSE_STATUS)rKrrrrI�s zABNF._is_valid_close_statuscCsd|j�d|j�d|j��S)Nzfin=z opcode=z data=)r9r=r>�rBrrr�__str__�szABNF.__str__cCs2|tjkrt|t�r|�d�}t|ddd|d|�S)a�
        Create frame to send text, binary and other data.

        Parameters
        ----------
        data: str
            data to send. This is string value(byte array).
            If opcode is OPCODE_TEXT and this value is unicode,
            data value is converted into unicode string, automatically.
        opcode: int
            operation code. please see OPCODE_MAP.
        fin: int
            fin flag. if set to 0, create continue fragmentation.
        �utf-8rr)r�OPCODE_TEXT�
isinstance�str�encode)r>r=r9rrr�create_frame�s
zABNF.create_framecCs`tdd�|j|j|j|jfD��rtd��|jtjvrtd��t	|j
�}|tjkr-td��t|jd>|jd>B|jd>B|jd	>B|jB��
d
�}|tjkr]|t|jd>|B��
d
�7}n2|tjkry|t|jd>dB��
d
�7}|t�d|�7}n|t|jd>d
B��
d
�7}|t�d|�7}|js�t|j
t�r�|j
�
d�|_
||j
S|�d	�}||�|�S)zR
        Format this object to string(byte array) to send data to server.
        css�|]}|dvVqdS))rrNr)�.0�xrrr�	<genexpr>�s�zABNF.format.<locals>.<genexpr>z
not 0 or 1zInvalid OPCODEzdata is too long���r�latin-1r7�!H��!QrP)�anyr9r:r;r<�
ValueErrorr=rrFrr>�	LENGTH_63�chrrT�LENGTH_7r�	LENGTH_16�struct�packrRrSrA�_get_masked)rB�length�frame_header�mask_keyrrr�format�sB"

������



zABNF.formatrkcCs*t�||j�}t|t�r|�d�}||S)NrP)r�maskr>rRrSrT)rBrk�srrrrhs

zABNF._get_maskedcCsN|durd}t|t�r|�d�}t|t�r|�d�}tt�d|�t�d|��S)z�
        Mask or unmask data. Just do xor for each byte

        Parameters
        ----------
        mask_key: bytes or str
            4 byte mask.
        data: bytes or str
            data to mask/unmask.
        Nr8r\�B)rRrSrTr�array)rkr>rrrrms



z	ABNF.mask)F)r)�__name__�
__module__�__qualname__�__doc__�OPCODE_CONTrQ�
OPCODE_BINARYrHrG�OPCODE_PONGrF�
OPCODE_MAPrdrerbrrrS�bytesrC�boolrL�staticmethodrIrOrUrlrhrmrrrrrjsv��
��������	
�&#,rc@s�eZdZdZdZdeegefdeddfdd�Zdd	d
�Z	defdd�Z
dd
d�Zdeeeffdd�Z
defdd�Zddd�Zdefdd�Zddd�Zdefdd�Zdedefdd�ZdS)rr[rZ�recv_fnrDr
NcCs&||_||_g|_|��t�|_dSr)�recvrD�recv_buffer�clearr�lock)rBr|rDrrrrC+s
zframe_buffer.__init__cCsd|_d|_d|_dSr)�headerrirrNrrrr6s
zframe_buffer.clearcC�
|jduSr)r�rNrrr�has_received_header;�
z frame_buffer.has_received_headercCs~|�d�}|d}|d?d@}|d?d@}|d?d@}|d?d@}|d@}|d}|d?d@}	|d	@}
||||||	|
f|_dS)
Nr-rrYrrZr[r�r^)�recv_strictr�)rBr��b1r9r:r;r<r=�b2�has_mask�length_bitsrrr�recv_header>s
zframe_buffer.recv_headercCs|jsdS|jtj}|S)NF)r�r�_HEADER_MASK_INDEX)rB�
header_valrrrr�Lszframe_buffer.has_maskcCr�r)rirNrrr�has_received_lengthRr�z frame_buffer.has_received_lengthcCsn|jtj}|d@}|dkr|�d�}t�d|�d|_dS|dkr2|�d�}t�d|�d|_dS||_dS)Nr^r7r-r]rr.r_)r�r�_HEADER_LENGTH_INDEXr�rf�unpackri)rB�bitsr��vrrr�recv_lengthUs


zframe_buffer.recv_lengthcCr�r)rrNrrr�has_received_maskar�zframe_buffer.has_received_maskcCs"|��r|�d�|_dSd|_dS)Nrr8)r�r�rrNrrr�	recv_maskds"zframe_buffer.recv_maskc	Cs�|j�R|��r|��|j\}}}}}}}|��r|��|j}|��r)|��|j	}	|�
|�}
|r9t�|	|
�}
|�
�t|||||||
�}|�|j�Wd�|S1sXwY|Sr)r�r�r�r�r�r�rir�r�rr�rrmrrLrD)rBr9r:r;r<r=r��_rir�payload�framerrr�
recv_framegs(

��zframe_buffer.recv_frame�bufsizecCs�|ttt|j��}|dkr&|�td|��}|j�|�|t|�8}|dksd�|j�}|dkr5g|_|S||d�g|_|d|�S)Nri@�)�sum�maprr~r}�min�append�join)rBr��shortage�bytes_�unifiedrrrr��s�zframe_buffer.recv_strict)r
N)rqrrrsr�r�rrrzrCrr�r�rr�r�r�r�r�rr�ryr�rrrrr's(��
�



rc@sreZdZdededdfdd�Zdeddfdd	�Zdeddfd
d�Zdedeee	ffdd
�Z
dedefdd�ZdS)r�fire_cont_framerDr
NcCs||_||_d|_d|_dSr)r�rD�	cont_data�recving_frames)rBr�rDrrrrC�s
zcontinuous_frame.__init__r�cCsB|js
|jtjkr
td��|jr|jtjtjfvrtd��dSdS)Nz
Illegal frame)r�r=rrurrQrv�rBr�rrrrL�s
��zcontinuous_frame.validatecCsX|jr|jd|j7<n|jtjtjfvr|j|_|j|jg|_|jr*d|_dSdS)Nr)r�r>r=rrQrvr�r9r�rrr�add�s
�zcontinuous_frame.addcCs|jp|jSr)r9r�r�rrr�is_fire�szcontinuous_frame.is_firecCsZ|j}d|_|d|_|js'|dtjkr'|js't|j�s'tdt|j�����|d|fS)Nrrzcannot decode: )	r�r>r�rrQrDr	r�repr)rBr�r>rrr�extract�s
���zcontinuous_frame.extract)
rqrrrsrzrCrrLr�rrr��tupler�rrrrr�s	r)*rpr?rf�sys�	threadingr�typingrrr�_exceptionsrr�_utilsr	�wsaccel.xormaskr
ryr�ImportError�	byteorderr�__all__r r!r"r#r$r%r&r'r(r)r*�STATUS_SERVICE_RESTART�STATUS_TRY_AGAIN_LATERr+r,rMrrrrrrr�<module>sb�
�>u