HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/ssa/modules/__pycache__/storage.cpython-37.pyc
B

V�d�@s�dZddlZddlmZddlmZmZmZmZddl	Z	ddl	m
Z
mZmZm
Z
mZmZddlmZmZeGdd�d��Zeed	�d
d�Zdd
�Zeeeefd	�dd�ZdS)zF
Represents storage where ssa data is collected, stored and extracted
�N)�	dataclass)�List�Iterator�Tuple�Dict)�func�cast�case�literal_column�distinct�text)�
session_scope�
RequestResultc@s2eZdZUeed<eeed<eed<eed<dS)�
DomainData�domain_name�domain_total_reqs�is_a_wordpress_domain�urls_numberN)�__name__�
__module__�__qualname__�str�__annotations__r�int�bool�rr�D/opt/alt/python37/lib/python3.7/site-packages/ssa/modules/storage.pyrs
r)�returnccs�t|���}|�tjt�dtj�t�tj�t�	tj
�t�ttj
����tjt�dtj���tjt�dtj��}tj|dd�d�}xf|D]^\}}t|�}d}dgd}x,|D]$\}	}
}}}
||t|
�<t	||
�}q�Wt||||d�Vq�WWdQRXdS)	z7
    Iterates data from database domain-by-domain.
    z%HcSs|dS)Nrr)�itemrrr�<lambda>/�z#iter_domains_data.<locals>.<lambda>)�keyr�)rrrrN)r
�queryr�domainr�strftime�
created_at�Count�id�max�	wordpress�countr�path�group_by�order_by�	itertools�groupby�tuplerr)�engine�dbZresults_by_hourZresults_by_hour_groupedr�groupZdomain_results_by_hourrZrequests_number_by_hour�_�hourZrequests_numZis_wordpressZurlsrrr�iter_domains_datas0



r7ccs�t|���x}|�tjt�dtj�t�ttj	t
j���d�t�
tj��d�t�ttjt
j���d���tj|k��ttj�|�jjddid�j���tjt�dtj���tjt�dtj��}d}d	gd
d	gd
d	gd
}}}x�|D]~\}	}
}}}
|�r<||	k�r<|t||||d�fVd	gd
d	gd
d	gd
}}}||t|
�<||t|
�<|
|t|
�<|	}q�W|	t|	|||d�fVWdQRXdS)z6
    Iterates urls data from database url-by-url.
    z%H�url_throttled_reqs�url_total_reqs�
url_slow_reqs�
literal_bindsT)�compile_kwargsNrr")r,r8r9r:)r
r#rr,rr%r&ZSumr�hitting_limits�
sqlalchemy�Integer�labelr'r(�is_slow_request�filterr$r�in_�
expression�compile�stringr-r.�dictr)r2rZ	all_pathsr3�	urls_dataZ
previous_pathr8r9r:r,r6Zurl_throttled_reqZ
url_total_reqZurl_slow_reqrrr�iter_urls_dataCsH"""rIc	csvt|��d}|�tjtj��tj|k��tj�}t�	t
|�dd��}x$|D]\}}|dd�|D�fVqHWWdQRXdS)zA
    Get information about durations of requests url-by-url.
    cSs|dS)Nrr)rrrrr�r z#get_url_durations.<locals>.<lambda>cSsg|]\}}|�qSrr)�.0r5�durationrrr�
<listcomp>�sz%get_url_durations.<locals>.<listcomp>N)r
r#rr,rKrBr$r.r/r0�list)r2rr3rHZdurations_by_pathr!r4rrr�get_url_durations{s
rN)�__doc__r/�dataclassesr�typingrrrrr>rrr	r
rr�ssa.dbr
rrr7rIrrrNrrrr�<module>	s '8