File: //usr/local/CyberCP/lib/python3.10/site-packages/websockets/__pycache__/server.cpython-310.pyc
o
�h=T � @ sl d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl m
Z
mZ d dlm
Z
mZmZ ddlmZmZ ddlmZmZmZmZmZmZmZ ddlmZmZ dd lmZm Z m!Z!m"Z"m#Z# dd
l$m%Z%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z. dd
lm/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 dgZ8G dd� de-�Z9G dd� de9�Z:e(e;� dddddd�d� dS )� )�annotationsN)� Generator�Sequence)�Any�Callable�cast� )�Headers�MultipleValuesError)�InvalidHandshake�
InvalidHeader�InvalidHeaderValue�InvalidMessage�
InvalidOrigin�InvalidUpgrade�NegotiationError)� Extension�ServerExtensionFactory)�build_extension�parse_connection�parse_extension�parse_subprotocol�
parse_upgrade)�Request�Response)�lazy_import)�
CONNECTING�OPEN�SERVER�Protocol�State)�ConnectionOption�ExtensionHeader�
LoggerLike�Origin�
StatusLike�Subprotocol�UpgradeProtocol)�
accept_key�ServerProtocolc s� e Zd ZdZddddeddd�d9� fdd�Zd:dd�Zd;dd�Zd<d"d#�Zd=d%d&�Z d>d(d)�Z
d?d+d,�Zd@d1d2�ZdAd4d5�Z
dB� fd7d8�Z� ZS )Cr) a-
Sans-I/O implementation of a WebSocket server connection.
Args:
origins: Acceptable values of the ``Origin`` header. Values can be
:class:`str` to test for an exact match or regular expressions
compiled by :func:`re.compile` to test against a pattern. Include
:obj:`None` in the list if the lack of an origin is acceptable.
This is useful for defending against Cross-Site WebSocket
Hijacking attacks.
extensions: List of supported extensions, in order in which they
should be tried.
subprotocols: List of supported subprotocols, in order of decreasing
preference.
select_subprotocol: Callback for selecting a subprotocol among
those supported by the client and the server. It has the same
signature as the :meth:`select_subprotocol` method, including a
:class:`ServerProtocol` instance as first argument.
state: Initial state of the WebSocket connection.
max_size: Maximum size of incoming messages in bytes;
:obj:`None` disables the limit.
logger: Logger for this connection;
defaults to ``logging.getLogger("websockets.server")``;
see the :doc:`logging guide <../../topics/logging>` for details.
Ni )�origins�
extensions�subprotocols�select_subprotocol�state�max_size�loggerr* �0Sequence[Origin | re.Pattern[str] | None] | Noner+ �'Sequence[ServerExtensionFactory] | Noner, �Sequence[Subprotocol] | Noner- �LCallable[[ServerProtocol, Sequence[Subprotocol]], Subprotocol | None] | Noner. r r/ �
int | Noner0 �LoggerLike | None�return�Nonec sL t � jt|||d� || _|| _|| _|d ur$t| d|�| | j�� d S d S )N)�sider. r/ r0 r- ) �super�__init__r r* �available_extensions�available_subprotocols�setattr�__get__� __class__)�selfr* r+ r, r- r. r/ r0 �r@ � �D/usr/local/CyberCP/lib/python3.10/site-packages/websockets/server.pyr; L s ���zServerProtocol.__init__�requestr r c
C s z
| � |�\}}}W n� ty9 } z#||_|| _| jr#| jjddd� | �tjj d|� d��W Y d}~S d}~w t
yn } z*||_|| _| jrQ| jjddd� | �tjjd|� d��}d |jd
<