PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Notice: ob_end_clean(): Failed to delete buffer. No buffer to delete in /home/telusvwg/public_html/da754d/index.php on line 8
$#$#$#

Dir : /opt/cloudlinux/venv/lib/python3.11/site-packages/ssa/__pycache__/
Server: Linux premium279.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
IP: 66.29.132.192
Choose File :

Url:
Dir : //opt/cloudlinux/venv/lib/python3.11/site-packages/ssa/__pycache__/db.cpython-311.pyc

�

4C�iJ ��B�ddlZddlZddlZddlmZmZddlmZmZmZm	Z	m
Z
mZmZm
Z
mZddlmZddlmZddlmZddlmZddlmZd	Zed
zZdZe��ZGd�d
e��Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$dd�Z%d�Z&d�Z'd�Z(ej)defd���Z*dS)�N)�datetime�	timedelta)	�Column�Boolean�DateTime�Integer�String�
create_engine�event�func�text)�declarative_base)�	Inspector)�Session)�close_all_sessions)�
DatabaseErrorz/var/lve/ssa.dbz.old�c���eZdZdZdZeed���Zeedd���Z	eedd���Z
eed���Zeed���Zee
d���Zee
d���Zeed���Zeed���Zee
d���Zeed���ej��d�	��Zeed���ej��ej���
��ZdS)�
RequestResultay
    Describes processed request stored in database file.

    E.g.
    {
        "timestamp": "1650008727",
        "url": "http://mydomain.com/index.php",
        "duration": 162077,
        "hitting_limits": false,
        "throttled_time": 0,
        "io_throttled_time": 0,
        "wordpress": true
    }

    Note: created_at, updated_at is saved in local TZ format
    �
scrape_resultT)�primary_keyF)�index�nullable)r)�timezone)�server_defaultr)�onupdaterN)�__name__�
__module__�__qualname__�__doc__�
__tablename__rr�idr	�domain�path�	timestamp�durationr�is_slow_request�hitting_limits�throttled_time�io_throttled_time�	wordpressrr�now�
created_at�
updated_at���=/opt/cloudlinux/venv/lib64/python3.11/site-packages/ssa/db.pyrr%sR�������� $�M�	���T�	*�	*�	*�B�
�V�F�$��
7�
7�
7�F��6�&��u�5�5�5�D���w��/�/�/�I��v�g��.�.�.�H��f�W�u�5�5�5�O��V�G�e�4�4�4�N��V�G�e�4�4�4�N���w��7�7�7����w��/�/�/�I�����$�/�/�/����
�
�RV�W�W�W�J�����$�/�/�/�(�$�(�*�*�U]�UY�U]�U_�U_�`�`�`�J�J�Jr0rc�^�tj��tt���z
}t	|��5}|�t���tj|k���	��ddd��n#1swxYwYt|��dS)zz
    Removes outdated records from database, saving disk space.
    Runs VACUUM after deletion to reclaim disk space.
    )�daysN)r�todayr�RETENTION_TIME_DAYS�
session_scope�queryr�filterr-�delete�vacuum_database)�engine�
n_days_ago�sessions   r1�cleanup_old_datar>Ks���
��!�!�I�3F�$G�$G�$G�G�J�	�v�	�	��'��
�
�m�$�$�
�V�M�,�z�9�
:�
:�
�V�X�X�X�������������������
�F�����s�AB�B�Bc�^�|���}|j}	d|_|���}|�d��|���n#t
$rYnwxYw||_|���dS#||_|���wxYw)z�
    Run VACUUM command to reclaim disk space after deletions.
    VACUUM must be run outside of a transaction, so we use raw connection.
    N�VACUUM)�raw_connection�isolation_level�cursor�execute�close�	Exception)r;�raw_conn�original_isolation_levelrCs    r1r:r:Ys����$�$�&�&�H�'�7���#'�� ����"�"�����x� � � ����������
�
�
���
����
$<�� ����������$<�� ����������s*�AA"�!B�"
A/�,B�.A/�/B�B,c���d}d}d}	|���5}|�td|�d|�d|�d�����ddd��dS#1swxYwYdS#t$rYdSwxYw)	z�
    Ensure that created_at index exists on existing databases.
    This handles migration for databases created before the index was added.
    Uses CREATE INDEX IF NOT EXISTS for atomicity and race condition safety.
    �ix_scrape_result_created_atrr-zCREATE INDEX IF NOT EXISTS z ON �(�)N)�beginrDr
r)r;�
INDEX_NAME�
TABLE_NAME�COLUMN_NAME�conns     r1�ensure_created_at_indexrRps���/�J� �J��K�

�
�\�\�^�^�	�t��L�L��Y�j�Y�Y�j�Y�Y�;�Y�Y�Y���
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��
�
�
�
�	
���
���s4�A#�-A�	A#�A�A#�A�A#�#
A1�0A1c�f�t|��s!tj�|��dSdS�N)�
is_db_present�Base�metadata�
create_all)r;s r1�create_db_if_not_existrY�s8���� � �)��
� � ��(�(�(�(�(�)�)r0c���tj�t��sdSt	j|��}d�|���D��}t|��dkS)NFc��g|]}|��Sr/r/)�.0�tables  r1�
<listcomp>z!is_db_present.<locals>.<listcomp>�s��
G�
G�
G��e�
G�
G�
Gr0r)�osr$�isfile�SSA_DBr�from_engine�get_table_names�len)r;�database_inspection�tabless   r1rUrU�s^��
�7�>�>�&�!�!���u�#�/��7�7��
G�
G�!4�!D�!D�!F�!F�
G�
G�
G�F��v�;�;��?�r0c�0�|�d��dS)NzPRAGMA journal_mode = WAL)rD)�	dbapi_con�
con_records  r1�setup_wal_moderj�s��
���1�2�2�2�2�2r0c����dt���|r��d���fd�}td|d���}tj|dt��t|��|st
|��|S)Nzfile:z?mode=roc�0��tj�d���S)NT)�uri)�sqlite3�connect)�connection_strings�r1�<lambda>z!_setup_database.<locals>.<lambda>�s���g�o�&7�T�B�B�B�r0�sqlite:////F)�creator�echoro)rar
r�listenrjrYrR)�readonlyrsr;rps   @r1�_setup_databaserw�s����(��(�(���;�0�:�:�:��B�B�B�B�G�
��w�U����F�
�L���N�3�3�3��6�"�"�"��(���'�'�'��Mr0Fc� �t|��SrT)rw)rvs r1�setup_databasery�s���8�$�$�$r0c���tj�t��r-t	��tjtt��t��}|���tdt����}	t|��5}t|��5}|�t���
��t||��ddd��n#1swxYwYddd��n#1swxYwYn#t$rYnwxYwttdztdzfD]5}tj�|��rtj|���6dS)z�
    Restore database by establish connections to old and new databases,
    merge data to new one if possible and delete old one.
    rrNz-walz-shm)r_r$�existsrar�replace�
OLD_SSA_DBry�disposer
r6r7r�first�!merge_unharmed_data_from_databaser�remove)r;�
new_engine�
old_engine�session_old�session_newr$s      r1�restore_databaser��s���

�w�~�~�f���'�����
�
�6�:�&�&�&��!�!�J�
�N�N�����9�Z�9�9�:�:�J�
�
�:�
&�
&�	H�+�}�Z�7P�7P�	H�T_����m�,�,�2�2�4�4�4�-�k�;�G�G�G�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H����
�
�
���
�����V�f�_�f�v�o�>����
�7�>�>�$���	��I�d�O�O�O���sZ�D�D�+=C4�(D�4C8	�8D�;C8	�<D�?D�D�D�D�D�
D$�#D$c��d}d}	|�t���|���|��}	|���}|sdS|D]}|�|���nv#t$rit|��D]V}	|�||z�����}|sn&|�|���G#t$rY�SwxYwYnwxYw|�	��||z
}��)z_
    Scrape all unharmed records from malformed database and merge them into new database.
    r�
TN)
r7r�offset�limit�all�merger�ranger�commit)	r�r�r��
batch_sizer7�records_to_save�record�pos_in_batch�record_to_saves	         r1r�r��sN���F��J���!�!�-�0�0�7�7��?�?�E�E�j�Q�Q��	�#�i�i�k�k�O�"�
���)�
*�
*���!�!�&�)�)�)�)�
*���	�	�	� %�j� 1� 1�
�
���%*�\�\�&�<�2G�%H�%H�%N�%N�%P�%P�N�)�����%�%�n�5�5�5�5��$�����D�������	����	�������*���%sH�A:�A:�:C-�,C�C-�C�C-�
C'�$C-�&C'�'C-�,C-c���tj�t��r=tj�t��rtjt��	t
|��5}|�td����}|�	��}|dddkcddd��S#1swxYwYdS#t$rYdSwxYw)z�
    Try integrity check of database file to see if it is malformed.
    If database unable to execute it, will also count as malformed.
    zPRAGMA integrity_checkr�okNT)r_r$r{r}rar�r6rDr
�fetchallr)r;�db�result�errorss    r1�is_malformed_databaser��s��

�w�~�~�j�!�!��b�g�n�n�V�&<�&<��
�	�*�����
�6�
"�
"�	(�b��Z�Z��%=� >� >�?�?�F��_�_�&�&�F��!�9�Q�<�4�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(�������t�t����s7�#C�2AC�:C�C�C�C�C�
C"�!C"�returnc#��K�t|���}	|V�|���n#|����xYw	|���dS#|���wxYw)zF
    Provide a transactional scope around a series of operations.
    )�bindN)rr��rollbackrE)r;r=s  r1r6r6�s�����
�6�"�"�"�G���
�
�
����������������
����	�
	�
�
��������
�
�������s�-�A�A�A�A4)F)+r_�
contextlibrnrr�
sqlalchemyrrrrr	r
rrr
�sqlalchemy.ext.declarativer�sqlalchemy.engine.reflectionr�sqlalchemy.ormr�sqlalchemy.orm.sessionr�sqlalchemy.excrrar}r5rVrr>r:rRrYrUrjrwryr�r�r��contextmanagerr6r/r0r1�<module>r�s;��
�	�	�	���������(�(�(�(�(�(�(�(�����������������������8�7�7�7�7�7�2�2�2�2�2�2�"�"�"�"�"�"�5�5�5�5�5�5�(�(�(�(�(�(�	��
�f�_�
��������#a�#a�#a�#a�#a�D�#a�#a�#a�L������.
�
�
�.)�)�)�
���3�3�3�
�
�
� %�%�%�%����8���6
�
�
� ���W��������r0