HEX
Server: LiteSpeed
System: Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User: swifizcd (1555)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/ssa/__pycache__/agent.cpython-311.pyc
�

�e�i_���dZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZddl
mZddlmZdd	lmZd
ZGd�d��ZdS)
zH
This module contains contains classes implementing SSA Agent behaviour
�N)�ThreadPoolExecutor)�current_thread�)�
agent_sock)�SSAError)�
create_socket)�RequestProcessor�2c��eZdZdZd�Zd�Zdd�Zehd���Ze	dd	de
fd
���Zede
defd���Zdd
�Zddde
fd�ZdS)�SimpleAgentz 
    SSA Simple Agent class
    c���tjd��|_t��|_tt���|_tj	|j
��|���dS)N�agent)�max_workers)�logging�	getLogger�loggerr	�request_processorr�MAX_WORKERS�executor�atexit�register�	_shutdown�listen��selfs �@/opt/cloudlinux/venv/lib64/python3.11/site-packages/ssa/agent.py�__init__zSimpleAgent.__init__!sW���'��0�0���!1�!3�!3���*�{�C�C�C��
�����'�'�'����
�
�
�
�
�c�<�|j�d���dS)z-Gracefully shutdown the thread pool executor.F)�waitN)r�shutdownrs rrzSimpleAgent._shutdown)s!���
���E��*�*�*�*�*r�returnNc���tt��}	|���\}}|j�|j|��|j�d���R)z(
        Start listening socket
        TzhreadPool] Submitted task)rr�acceptr�submit�handler�debug)r�_socket�
connection�addresss    rrzSimpleAgent.listen-s`�� �
�+�+��	=�")�.�.�"2�"2��J���M� � ���j�9�9�9��K���;�<�<�<�	=r>�url�duration�	timestamp�	wordpress�hitting_limits�throttled_time�io_throttled_timer)�
socket objectc��|�tjtjt	jd����}t	jd|��\}}}|S)z�
        Get the UID of the peer process using SO_PEERCRED.
        :param connection: socket object
        :return: UID of the connecting process
        �3i)�
getsockopt�
socket_module�
SOL_SOCKET�SO_PEERCRED�struct�calcsize�unpack)r)�cred�_pid�uid�_gids     r�
_get_peer_uidzSimpleAgent._get_peer_uid=sP���$�$��$��%��O�D�!�!�
�
��
!�-��d�3�3���c�4��
r�datac��t|t��r|sdSt|�����|jkS)z�
        Validate that input data contains exactly the expected metric fields.
        The PHP extension always sends all 7 fields (see dump.c), so we
        require an exact match to reject both unknown and partial payloads.
        F)�
isinstance�dict�set�keys�_REQUIRED_FIELDS)�clsrAs  r�_validate_inputzSimpleAgent._validate_inputLs@���$��%�%�	�T�	��5��4�9�9�;�;���3�#7�7�7rc	��	|�|��}nr#ttjf$rY}|j�dt��jt|����|���Yd}~dSd}~wwxYw|�	d���}	|�
|��}|�|��s�|j�dt��j|t|t��r!t|�����nt#|��j��	|���|���dS|j�|��n�#t*t,jt0f$rD}|j�dt��jt|����Yd}~nTd}~wt2$rD}|j�dt��jt|����Yd}~nd}~wwxYw|���|���dS#|���|���wxYw)z�
        Handle incoming connection
        :param connection: socket object usable to
        send and receive data on the connection
        z'[%s] Failed to get peer credentials: %sN�ignore)�errorsz2[%s] Rejected invalid payload from UID=%d: keys=%szHandled exception in [%s]: %sz Unexpected exception in [%s]: %s)r@�OSErrorr9�errorrr�name�str�close�makefile�
read_inputrI�warningrCrD�sortedrF�type�__name__rr&r�json�JSONDecodeError�
ValueError�	Exception�	exception)rr)�peer_uid�e�fileobj�
input_datas      rr&zSimpleAgent.handleWs���	��)�)�*�5�5�H�H�����&�	�	�	��K���9�� � �%�s�1�v�v�
/�
/�
/�
�������F�F�F�F�F�����	�����%�%�X�%�6�6��	�����1�1�J��'�'�
�3�3�
���#�#�H�"�$�$�)�8�1;�J��1M�1M�l�F�:�?�?�,�,�-�-�-�SW�Xb�Sc�Sc�Sl�n�n�n��
�M�M�O�O�O���������
�"�)�)�*�5�5�5�5���$�.�
�;�	=�	=�	=��K���=�,�.�.�3�S��V�V�
=�
=�
=�
=�
=�
=�
=�
=������	A�	A�	A��K�!�!�"D�"0�"2�"2�"7��Q���
A�
A�
A�
A�
A�
A�
A�
A�����	A����
�M�M�O�O�O����������
�M�M�O�O�O����������s^��B�AB�B�!B F�,F�I �H3�#:G"�I �"
H3�/:H.�)I �.H3�3I � *J
�fileiozfile objectc��|���}|j�dt��jt|�����|��|r(tj|�	��d���SiS)zy
        Read input data and return decoded json
        :param fileio: a file-like object providing read method
        z[%s] I received %i bytes: %sF)�strict)
�readr�inforrO�len�encoderX�loads�strip)rrarAs   rrSzSimpleAgent.read_inputzs{��
�{�{�}�}������7�'�)�)�.��D�K�K�M�M�0B�0B��	�	�	��	��:�d�j�j�l�l�5�9�9�9�9��Ir)r"N)r)r2r"N)rW�
__module__�__qualname__�__doc__rrr�	frozensetrG�staticmethod�intr@�classmethodrD�boolrIr&rS�rrrrs�����������+�+�+�=�=�=�=�!�y�"�"�"����
��/��c�����\���8�4�8�D�8�8�8��[�8�!�!�!�!�F���4������rr)rlrrXr�socketr6r9�concurrent.futuresr�	threadingr�internal.constantsr�internal.exceptionsr�internal.utilsr�modules.processorr	rrrrrr�<module>rzs������
�
�
�������������
�
�
�
�1�1�1�1�1�1�$�$�$�$�$�$�*�*�*�*�*�*�)�)�)�)�)�)�)�)�)�)�)�)�/�/�/�/�/�/���j�j�j�j�j�j�j�j�j�jr