????

Your IP : 216.73.217.84


Current Path : /opt/cloudlinux/venv/lib/python3.11/site-packages/ssa/modules/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/ssa/modules/__pycache__/storage.cpython-311.pyc

�

�j�����dZddlZddlmZddlmZmZmZmZddl	Z	ddl	m
Z
mZmZddl
mZmZeGd�d����Zd	eefd
�Zd�Zd	eeeeffd�ZdS)
zF
Represents storage where ssa data is collected, stored and extracted
�N)�	dataclass)�List�Iterator�Tuple�Dict)�func�cast�distinct)�
session_scope�
RequestResultc�D�eZdZUeed<eeed<eed<eed<dS)�
DomainData�domain_name�domain_total_reqs�is_a_wordpress_domain�urls_numberN)�__name__�
__module__�__qualname__�str�__annotations__r�int�bool���J/opt/cloudlinux/venv/lib64/python3.11/site-packages/ssa/modules/storage.pyrrsF������������C�y� � � ����������rr�returnc#�zK�t|��5}|�tjt	jdtj��t	jtj��t	j	tj
��t	jttj
�������tjt	jdtj�����tjt	jdtj����}t!j|d����}|D]^\}}t%|��}d}dgdz}|D]*\}	}
}}}
||t'|
��<t||
��}�+t)||||���V��_	ddd��dS#1swxYwYdS)z7
    Iterates data from database domain-by-domain.
    �%Hc��|dS�Nrr��items r�<lambda>z#iter_domains_data.<locals>.<lambda>/s
��VZ�[\�V]�r)�keyr�)rrrrN)r�queryr�domainr�strftime�
created_at�Count�id�max�	wordpress�countr
�path�group_by�order_by�	itertools�groupby�tuplerr)�engine�db�results_by_hour�results_by_hour_groupedr�group�domain_results_by_hourr�requests_number_by_hour�_�hour�requests_num�is_wordpress�urlss              r�iter_domains_datarBs�����
�v�	�	�!�"��(�(�� ��M�$�
� 8�9�9��J�}�'�(�(��H�]�,�-�-��J�x�
� 2�3�3�4�4�
�
��(�� ��M�$�
� 8�9�9�
�
��(�� ��M�$�
� 8�9�9�
�
�	�#,�"3�O�I]�I]�"^�"^�"^��"9�	�	��K��%*�5�\�\�"��K�()�c�B�h�#�=S�
5�
5�9��4��|�T�5A�'��D�	�	�2�!�+�t�4�4����'�"9�&2�'�	���
�
�
�
�	�#!�!�!�!�!�!�!�!�!�!�!�!����!�!�!�!�!�!s�FF0�0F4�7F4c
#� K�t|��5}|�tjt	jdtj��t	jttj	tj�����d��t	j
tj���d��t	jttjtj�����d�����tj|k���tj�|�����tjt	jdtj�����tjt	jdtj����}d}dgdzdgdzdgdz}}}|D]q\}	}
}}}
|r/||	kr)|t+||||���fV�dgdzdgdzdgdz}}}||t-|
��<||t-|
��<|
|t-|
��<|	}�r|	t+|	|||���fV�ddd��dS#1swxYwYdS)	z6
    Iterates urls data from database url-by-url.
    r�url_throttled_reqs�url_total_reqs�
url_slow_reqsNrr&)r0rDrErF)rr'rr0rr)r*�Sumr	�hitting_limits�
sqlalchemy�Integer�labelr+r,�is_slow_request�filterr(�in_r1r2�dictr)r6r�	all_pathsr7�	urls_data�
previous_pathrDrErFr0r>�url_throttled_req�
url_total_req�url_slow_reqs              r�iter_urls_datarVCs�����
�v�	�	�1
�"��H�H����M�$�
� 8�9�9��H�T��,�j�.@���
�
��u�)�*�*��J�� �
�
��e�$�%�%��H�T��-�z�/A�C�C�
�
��e�O�$�$�
�
��&�� �K�/�
�
�
�&���"�"�9�-�-�
�
�
�(����
�d�M�4L� M� M�
�
�
�(����
�d�M�4L� M� M�
�
�%	�,�
�
�C�"�H�q�c�B�h���b��-:�N��KT�	!�	!�F�D�$�)�=�,��
1��$�!6�!6�#�T�&�'9�#1�"/�	&�&�&������C�"�H�q�c�B�h���b��5B�N�"�->��s�4�y�y�)�(5�N�3�t�9�9�%�'3�M�#�d�)�)�$� �M�M��D��1�)�'�	
�
�
�
�	
�	
�	
�Y1
�1
�1
�1
�1
�1
�1
�1
�1
�1
�1
�1
����1
�1
�1
�1
�1
�1
s�I$J�J�
Jc#�K�t|��5}|�tjtj���tj|k���tj��}tj	|d���}|D]\}}|d�|D��fV��	ddd��dS#1swxYwYdS)zA
    Get information about durations of requests url-by-url.
    c��|dSr!rr"s rr$z#get_url_durations.<locals>.<lambda>�s
��D��G�rc��g|]\}}|��Srr)�.0r=�durations   r�
<listcomp>z%get_url_durations.<locals>.<listcomp>�s��:�:�:�[�Q���:�:�:rN)
rr'rr0r[rMr(r2r3r4)r6rr7rQ�durations_by_pathr%r:s       r�get_url_durationsr^{s#����
�v�	�	�;�"��H�H����"�
�
��&�� �K�/�
�
�
�(���
�
�	�&�-��+�+�-�-��+�	;�	;�J�C���:�:�E�:�:�:�:�:�:�:�:�	;�;�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;�;�;s�BB7�7B;�>B;)�__doc__r3�dataclassesr�typingrrrrrIrr	r
�ssa.dbrrrrBrVrrr^rrr�<module>rcs,��������!�!�!�!�!�!�.�.�.�.�.�.�.�.�.�.�.�.�����+�+�+�+�+�+�+�+�+�+�/�/�/�/�/�/�/�/������������%��*�!5�%�%�%�%�N5
�5
�5
�p;�d�3��c�
�?�.C�;�;�;�;�;�;r