Viewing File: /opt/hc_python/lib/python3.12/site-packages/dns/quic/__pycache__/_common.cpython-312.pyc

�

`��gi*���ddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	ddl
ZddlZddl
ZddlZddlZdZdZedzZGd�de�ZGd�d	�ZGd
�d�ZGd�d
�ZGd�de�ZGd�d�ZGd�de�Zy)�N)�Any�Optionali��c��eZdZy)�
UnexpectedEOFN)�__name__�
__module__�__qualname__���?/opt/hc_python/lib/python3.12/site-packages/dns/quic/_common.pyrrs��r
rc�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�Bufferc� �d|_d|_y)Nr
F)�_buffer�	_seen_end��selfs r�__init__zBuffer.__init__s�������r
c�\�|jry|xj|z
c_|rd|_yy)NT)rr�r�data�is_ends   r�putz
Buffer.put#s)���>�>���������!�D�N�r
c�Z�t|j�|k\ry|jrt�y)NTF)�lenrrr)r�amounts  r�havezBuffer.have*s&���t�|�|���&���>�>���r
c��|jS�N)rrs r�seen_endzBuffer.seen_end1����~�~�r
c�r�|j|�sJ�|jd|}|j|d|_|Sr!)rr)rrrs   r�getz
Buffer.get4s;���y�y�� � � ��|�|�G�V�$���|�|�F�G�,����r
c�P�|j�sJ�|j}d|_|S)Nr
)r"r)rrs  r�get_allzBuffer.get_all:s%���}�}�����|�|������r
N)	r	r
rrrrr"r%r'rr
rrrs ���"����r
rc�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zdd�Z	d�Z
d	�Zd
�Zy)
�BaseQuicStreamc�h�||_||_t�|_d|_d|_d|_y�Nr)�_connection�
_stream_idrr�
_expecting�_headers�	_trailers)r�
connection�	stream_ids   rrzBaseQuicStream.__init__Bs/��%���#����x��������
���r
c��|jSr!)r-rs r�idzBaseQuicStream.idJs�����r
c��|jSr!)r/rs r�headerszBaseQuicStream.headersMs���}�}�r
c��|jSr!)r0rs r�trailerszBaseQuicStream.trailersPr#r
c�@�|�tj�|z}|Sd}|Sr!)�time)r�timeout�
expirations   r�_expiration_from_timeoutz'BaseQuicStream._expiration_from_timeoutSs-��������w�.�J����J��r
c�T�|�#t|tj�z
d�}|Sd}|S)Ng)�maxr:)rr<r;s   r�_timeout_from_expirationz'BaseQuicStream._timeout_from_expirationZs2���!��*�t�y�y�{�2�C�8�G����G��r
c	��|jj�std��tjj|�}|jj�}|rd}n,d}|dtj|�jd�zz
}d|fd|jj�fd|jj�fd	|fd
g}|r5|jddtt|��j�fg�|jj!|j"||�|r(|jj%|j"|d
�yy)Nz%cannot send H3 to a non-H3 connectionsPOSTsGETs?dns=�=s:methods:schemes
:authoritys:path)saccept�application/dns-message)scontent-typerCscontent-lengthT)r,�is_h3�SyntaxError�urllib�parse�urlparse�path�encode�base64�urlsafe_b64encode�rstrip�scheme�netloc�extend�strr�send_headersr-�	send_data)r�url�datagram�post�	url_partsrI�methodr6s        r�send_h3zBaseQuicStream.send_h3gs7�����%�%�'��E�F�F��L�L�)�)�#�.�	��~�~�$�$�&����F��F��H�v�7�7��A�H�H��N�N�N�D�
�� �
��)�)�0�0�2�3�
�I�,�,�3�3�5�6�
�t��3�
����N�N�A�&��C��M�(:�(A�(A�(C�D��
�	
���%�%�d�o�o�w�D��I�����&�&�t����$�G�r
c��|jj�r|St|�}tjd|�|zS)Nz!H)r,rDr�struct�pack)rrU�ls   r�_encapsulatezBaseQuicStream._encapsulate�s8�����!�!�#��O���M���{�{�4��#�h�.�.r
c��|jj||�	|jdkDxr%|jj|j�xs|jjS#t
$rYywxYw)NrT)rrr.rr"rrs   r�_common_add_inputz BaseQuicStream._common_add_input�sj��������v�&�	����!�#�J����(9�(9�$�/�/�(J�'����&�&�
'���	��	�s�A
A,�,	A8�7A8c��|jj|j�|jj	dd�y)Nr
T)r,�close_streamr-rrrs r�_closezBaseQuicStream._close�s.�����%�%�d�o�o�6�������d�#r
N�T)
r	r
rrr4r6r8r=r@rYr^r`rcrr
rr)r)As5��������H�8/��$r
r)c�D�eZdZ			d	d�Zd�Zd�Zd
d�Zd
d�Zdd�Zd�Z	y)�BaseQuicConnectionNc�H�d|_||_||_||_d|_||_i|_|j�r0tjjj|d�|_nd|_tjj|�|_tjj#||f�|_|�K|dk7rF|j t&j(k(rd}n&|j t&j*k(rd}nt,�|r
||f|_yd|_y)NFrz0.0.0.0z::)�_doner,�_address�_port�_closed�_manager�_streamsrD�aioquic�h3r1�H3Connection�_h3_conn�dns�inet�af_for_address�_af�low_level_address_tuple�_peer�socket�AF_INET�AF_INET6�NotImplementedError�_source)rr1�address�port�source�source_port�managers       rrzBaseQuicConnection.__init__�s�����
�%�����
���
������
���
��=�=�?�#�J�J�1�1�>�>�z�5�Q�D�M� �D�M��8�8�*�*�7�3����X�X�5�5�w��o�F��
��>�k�Q�.��x�x�6�>�>�)�"�����V�_�_�,���)�)��"�K�0�D�L��D�Lr
c��|jduSr!)rqrs rrDzBaseQuicConnection.is_h3�s���}�}�D�(�(r
c��|j|=yr!)rm)rr2s  rrbzBaseQuicConnection.close_stream�s���M�M�)�$r
c�>�|jj|||�yr!)rqrR)rr2r6rs    rrRzBaseQuicConnection.send_headers�s���
�
�"�"�9�g�v�>r
c�>�|jj|||�yr!)rqrS)rr2rrs    rrSzBaseQuicConnection.send_data�s���
�
���	�4��8r
c���tj�}|jj�}|�|dz}t||z
d�}|jr|rt|d�}||fS)Nirg�������?)r:r,�	get_timerr?rk�min)r�closed_is_special�nowr<�intervals     r�_get_timer_valuesz$BaseQuicConnection._get_timer_values�sd���i�i�k���%�%�/�/�1�
����t��J��z�C�'��+���<�<�-��8�T�*�H��H�%�%r
c�n�tj�}||kr|jj|�yyr!)r:r,�handle_timer)rr<r�s   r�
_handle_timerz BaseQuicConnection._handle_timer�s.���i�i�k��������)�)�#�.�r
)NrN)Frd)
r	r
rrrDrbrRrSr�r�rr
rrfrf�s1�����  �D)�%�?�9�&�/r
rfc�$�eZdZddeedefd�Zy)�AsyncQuicConnectionNr;�returnc��K�y�wr!r)rr;s  r�make_streamzAsyncQuicConnection.make_stream�s	�����s�r!)r	r
rr�floatrr�rr
rr�r��s��
��%��
�C�
r
r�c�@�eZdZ	dd�Z					d	d�Zd�Zd�Zd�Zd�Zy)
�BaseQuicManagerNc��i|_||_i|_i|_||_|�_d}t|t�r|}d}|rdg}nddg}tjjj|||��}|�|j|�||_y)NTro�doqzdoq-i03)�alpn_protocols�verify_mode�server_name)
�_connections�_connection_factory�_session_tickets�_tokens�_h3�
isinstancerQrn�quic�
configuration�QuicConfiguration�load_verify_locations�_conf)r�confr��connection_factoryr�ro�verify_pathr�s        rrzBaseQuicManager.__init__�s������#5�� � "����������<��K��+�s�+�)��"���"&���"'��!3���<�<�-�-�?�?�-�'�'�@��D�
�&��*�*�;�7���
r
c�V�|jj||f�}|�|dfS|j}|r\	|jj	||f�}	tj
|�}|	|_tj|j||�}
nd}
|r\	|jj	||f�}tj
|�}||_tj|j||�}nd}tjj j#||
|��}
t$j&j)||f�}|
j+|t-j,��|j/|
|||||�}||j||f<|dfS#t$rY��,wxYw#t$rY��wxYw)NF)r��session_ticket_handler�
token_handlerT)r�r%r�r��pop�copy�session_ticket�KeyError�	functools�partial�save_session_ticketr��token�
save_tokenrnr�r1�QuicConnectionrrrsrv�connectr:r�)rr}r~rr��want_session_ticket�
want_tokenr1r�r�r�r�r��qconn�	lladdresss               r�_connectzBaseQuicManager._connect�s����&�&�*�*�G�T�?�;�
��!���&�&��z�z���
�!%�!6�!6�!:�!:�G�T�?�!K���y�y����&4��#�&/�%6�%6��(�(�'�4�&�"�&*�"��
����(�(�'�4��9���y�y����"��
�
&�-�-�d�o�o�w��M�M� �M����'�'�6�6��#9�'�7�
��
�H�H�4�4�g�t�_�E�	�
�
�
�i�����-��-�-��7�D�&�+�t�
�
�.8����7�D�/�*��D�!�!��G�
��
�� �
��
�s#�9F�9F�	F�F�	F(�'F(c�B�	|j||f=y#t$rYywxYwr!)r�r�)rr}r~s   r�closedzBaseQuicManager.closed1s+��	��!�!�7�D�/�2���	��	�s��	�c��|jSr!)r�rs rrDzBaseQuicManager.is_h37s���x�x�r
c���t|j�}|tk\r>t|jj	��dt
}|D]}|j|=�||j||f<yr+)rr��MAX_SESSION_TICKETS�list�keys�SESSIONS_TO_DELETE)rr}r~�ticketr]�keys_to_delete�keys       rr�z#BaseQuicManager.save_session_ticket:sj��
��%�%�&���#�#�!�$�"7�"7�"<�"<�">�?��BT�U�N�%���)�)�#�.�&�17����w��o�.r
c���t|j�}|tk\r>t|jj	��dt
}|D]}|j|=�||j||f<yr+)rr�r�r�r�r�)rr}r~r�r]r�r�s       rr�zBaseQuicManager.save_tokenEsb��
�������#�#�!�$�,�,�"3�"3�"5�6�q�9K�L�N�%���L�L��%�&�(-����g�t�_�%r
)NF)�UNrTT)	r	r
rrr�r�rDr�r�rr
rr�r��s5��JO��:��� ��6"�p��	8�	.r
r�c��eZdZdd�Zy)�AsyncQuicManagerNc��t�r!)r{)rr}r~rr�s     rr�zAsyncQuicManager.connectRs��!�!r
)r�Nr)r	r
rr�rr
rr�r�Qs��"r
r�)rKr�r�rxr[r:rF�typingrr�aioquic.h3.connectionrn�aioquic.h3.events�aioquic.quic.configuration�aioquic.quic.connection�dns.inetrr�QUIC_MAX_DATAGRAMr�r��	Exceptionrrr)rfr�r�r�rr
r�<module>r�s������
�
��
� ���!�������)�A�-��	�I�	� � �FS$�S$�l?/�?/�D
�,�
�
p.�p.�f"��"r
Back to Directory File Manager