HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //proc/self/root/proc/self/root/usr/local/CyberCP/s3Backups/__pycache__/s3Backups.cpython-310.pyc
o

��h���@sTzzddlZddlZddlmZddlmZddlmZddl	m
Z
ddlZddl
mZddlZddlmZddlZdd	lTdd
lmZddlZddlZddlmZddlZddlZddlmZdd
lmZm Z ddl!m"Z"ddl#m$Z$ddl%m&Z'Wn$ddlZddlmZddlZddlZddlZddlZddl#m$Z$YGdd�dej(�Z)dS)�N)�HttpResponse)�CyberCPLogFileWriter)�httpProc)�
ACLManager)�
mailUtilities)�TransferConfig�)�*)�ceil)�randint)�ProcessUtilities)�Websites�Backups)�virtualHostUtilities)�Processc@sBeZdZdLdd�Zdd�Zedd��Zedd	��Zed
d��Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dS)M�	S3BackupsNcCs"tj�|�||_||_||_dS�N)�multi�Thread�__init__�request�data�function)�selfrrr�r�)/usr/local/CyberCP/s3Backups/s3Backups.pyr#s
zS3Backups.__init__c
Cs�z'|jdkr
|��WdS|jdkr|��WdS|jdkr%|��WdSWdStyC}zt�t|�d�WYd}~dSd}~ww)N�connectAccount�forceRunAWSBackupDO�forceRunAWSBackupMINIOz [S3Backups.run])rrrr�
BaseException�logging�writeToFile�str)r�msgrrr�run)s


� ��z
S3Backups.runcCslt|�t|�}g}d}|dkrd}|�|�|St|�}t|�d}td|�D]}|�|�|d}q(|S)Nrg�?)�float�appendr
�int�range)�records�toShow�pages�
pagination�counter�
finalPages�irrr�
getPagination4s
	�

zS3Backups.getPaginationcCs|||}||}||fSrr)�pager*�finalPageNumber�
endPageNumberrrr�recordsPointerHszS3Backups.recordsPointercCsnd}d}d}|D](}|j|j|j|jd�}|dkr#|t�|�}d}n	|dt�|�}|d}q|d}|S)N�[rr)�id�	timeStamp�level�mesg�,�])r6r7r8r#�json�dumps)�logs�	json_data�checkerr-�items�dicrrr�
getLogsInJsonNs
zS3Backups.getLogsInJsonc
C��zLt|jdd�}|jjd}t�|�}|ddkr |�dd�WSt��d}tj	�
|�s1t�|�|d}t|d�}|�
|jd�|��|�d	d�WStym}zt|jdd�}|�dt|��WYd}~Sd}~ww)
N�userID�adminr�+Only administrators can use AWS S3 Backups.�/home/cyberpanel/.aws�/credentials�w�credDatar�rr�sessionr�	loadedACL�ajaxr�	checkHome�os�path�exists�mkdir�open�writer�closerr"�r�procrE�
currentACLrR�credentials�credFiler#rrrr`s(


��zS3Backups.connectAccountcCs~d}|d}t|d���}|d�d�d�d��d�}|d�d�d�d��d�}|d�d�d�d��d�}|||fS)	NrHrI�rr� ��
�)rU�	readlines�split�strip)rrRr[r�aws_access_key_id�aws_secret_access_key�regionrrr�fetchAWSKeys�s
zS3Backups.fetchAWSKeysc
Cs6zyt|jdd�}|jjd}t�|�}|ddkr |�dd�WS|��\}}}|�d�dkr8tj	d|||d�}ntj	d||d	�}d
}d}	|j
��D]}
d|
ji}|	dkr^|t
�|�}d}	qI|d
t
�|�}qI|d}t
�dd|d��}t|�WSty�}
zt|jdd�}|�dt|
��WYd}
~
Sd}
~
ww)NrErFrrG�http����s3)rerf�endpoint_url)rerfr5�namerr:r;�None��status�
error_messager)rrrMrrNrOrh�find�boto3�resource�buckets�allrmr<r=rrr")rrYrErZrerfrgrkr?r@�bucketrB�
final_jsonr#rrr�fetchBuckets�sF
��

��zS3Backups.fetchBucketsc

Cs�z�t|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|d�}i}zt	|j
d�|d<Wnd|d<Yzt	|j
d�|d<Wnd|d<Yzt	|j
d�|d<Wnd|d<Yt||j
d	�d
d�|j
d|j
d
|j
dt
�|�d�}|��|j
dD]}t||d�}|��q�|�dd�WSty�}	zt�t|	�d�t|jdd�}|�dt|	��WYd}	~	Sd}	~	ww)NrErFrrG��pkr�	databases�emails�planNamer^��	frequency�retenion�
bucketName)�ownerrm�freq�	retentionrw�config�websitesInPlan�r��domainrz
 [createPlan])rrrMrrNrO�
Administrator�objects�getr'r�
BackupPlan�replacer<r=�save�WebsitesInPlanrr r!r")
rrYrErZrF�WTB�newPlanrA�wpr#rrr�
createPlan�sD



�
��zS3Backups.createPlanc
Cs2zwt|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|d�}d}d}|j	�
�D]5}t�|j
�}|j|j|j|j|j|d|d|d	d
�}	|dkr\|t�|	�}d}q0|dt�|	�}q0|d
}t�dd|d��}
t|
�WSty�}zt|jdd�}|�dt|��WYd}~Sd}~ww)NrErFrrGrzr5rr|r})rmrwr�r��lastRunrr|r}rr:r;rnro)rrrMrrNrOr�r�r��backupplan_setrvr<�loadsr�rmrwr�r�r�r=rrr")rrYrErZrFr?r@�planr�rBrxr#rrr�fetchBackupPlans�s@
�
��zS3Backups.fetchBackupPlansc
C�z4t|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|j	dd�}|�
�|�dd�WStyU}zt|jdd�}|�dt|��WYd}~Sd}~ww�NrErFrrGr~�rmr)
rrrMrrNrOr�r�r�r�deleterr"�rrYrErZ�delPlanr#rrr�
deletePlan�
��zS3Backups.deletePlanc
C�zet|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|j	dd�}d}d}|j
��D] }|j|j
d�}|dkrJ|t�|�}d	}q3|d
t�|�}q3|d}t�d	d|d
��}	t|	�WSty�}
zt|jdd�}|�dt|
��WYd}
~
Sd}
~
ww�NrErFrrGr~r�r5)r6r�rr:r;rnro)rrrMrrNrOr�r�r�r�websitesinplan_setrvr6r�r<r=rrr"�rrYrErZr�r?r@�websiterBrxr#rrr�fetchWebsitesInPlan)�2
�
��zS3Backups.fetchWebsitesInPlanc
C��z?t|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|j	dd�}t
jj||j	dd�}|��|�d	d�WSty`}zt|jdd�}|�dt
|��WYd}~Sd}~ww�
NrErFrrGr~r��
domainNamer�r)rrrMrrNrOr�r�r�rr�r�rr"�rrYrErZr��webr#rrr�deleteDomainFromPlanL�
��zS3Backups.deleteDomainFromPlanc
CsXz�t|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|j	dd�}i}zt
|j	d�|d<Wnd|d<Yzt
|j	d�|d<Wnd|d<Yzt
|j	d	�|d	<Wnd|d	<Y|j	d
|_|j	d|_|j	d|_
t�|�|_|��|�d
d�WSty�}zt|jdd�}|�dt|��WYd}~Sd}~ww)NrErFrrGr~r�rr|r}r�r�r�r)rrrMrrNrOr�r�r�rr'rwr�r�r<r=r�r�rr")rrYrErZ�
changePlanr�r#rrr�savePlanChangesas>



��zS3Backups.savePlanChangesc
C�zjt|jdd�}|jjd}t�|�}|ddkr |�dd�WSt|jd�}t|jd�}tj	j
|jdd�}|j���
d	�}t�t|�|�}t�||�\}	}
t�||
|	��}i}||d
<||d<|�dd|�WSty�}
zt|jdd�}|�dt|
��WYd}
~
Sd}
~
ww�
NrErFrrG�
recordsToShowr1r~r�z-idrr,r)rrrMrrNrOr'rr�r�r��backuplogs_setrv�order_byrr0�lenr4rCr�ajaxPrer"�rrYrErZr�r1�
backupPlanr>r,r3r2�jsonDatarr#rrr�fetchBackupLogs��,
��zS3Backups.fetchBackupLogscCsdtjj|d�}tj�d|d�}|j}d|dt�d�}tj�||�}t	t
j||||fd�}|��t�
d�	|}tj�d|d
�}	tj�d|d�}
tj�d|d�}z	t|
d
���}Wnd}Ytj�|	�r�t|	d
���}	|	�d�dkr�d|	}
t�|
�d|
}
t�|
�d|}
t�|
�d	|fS|	�d�dkr�tjj|d�}|D]}|��q�d|	fSq9)N)r�z/homezbackup/zbackup-�-z%m.%d.%Y_%H-%M-%S)�target�argsr_rz
backup/statuszbackup/backupFileNamez
backup/pidr]z
Fetching..�	Completedrjzsudo rm -f z[5009])�fileNamer)r
r�r�rQrR�join�externalApp�time�strftimer�
backupUtil�submitBackupCreation�start�sleeprU�readrSrrr�normalExecutionerr�filterr�)r�virtualHostr��
backupPath�
domainUser�
backupName�tempStoragePath�p�backupDomainrp�backupFileNamePath�pidr��command�	backupObsrArrr�createBackup�sF
�




�zS3Backups.createBackupc
CrD)
NrErFrrGz/home/cyberpanel/.dorIrJrKrrLrXrrr�connectAccountDO�s(


��zS3Backups.connectAccountDOc
Cs�z�t|jdd�}|jjd}t�|�}|ddkr |�dd�WSd}t|d���}|d�d�d�	d	��	d
�}|d�d�d�	d	��	d
�}t
j��}|jd|j
d
d|j
d
d||d�}	|	��}
dd�|
dD�}d}d}
|D]}d|i}|
dkr�|t�|�}d}
qs|dt�|�}qs|d}t�dd|d��}t|�WSty�}zt�t|��t|jdd�}|�dt|��WYd}~Sd}~ww)NrErFrrG� /home/cyberpanel/.do/credentialsr]r�=r^r`r_rk�doRegion�https://�.digitaloceanspaces.com��region_namerlrerfcSsg|]}|d�qS)�Namer)�.0�spacerrr�
<listcomp> sz,S3Backups.fetchBucketsDO.<locals>.<listcomp>�Bucketsr5rmr:r;rnro)rrrMrrNrOrUrbrcrdrs�Session�clientr�list_bucketsr<r=rrr r!r")rrYrErZ�filePathr�accessID�secretrMr��response�spacesr?r@r�rBrxr#rrr�fetchBucketsDOsJ

�
��zS3Backups.fetchBucketsDOc	
Cszdt|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|d�}t	||j
d�dd�|j
d	|j
d
|j
d|j
d|j
d
d�}|��|j
dD]}t
||d�}|��qQ|�dd�WSty�}zt�t|�d�t|jdd�}|�dt|��WYd}~Sd}~ww)NrErFrrGrzr~r^rr�r�r��typerg)r�rmr�r�rwr�rgr�r�r� [createPlanDO])rrrMrrNrOr�r�r��BackupPlanDOrr�r��WebsitesInPlanDOrr r!r")	rrYrErZrFr�rAr�r#rrr�createPlanDO6s0
�
��zS3Backups.createPlanDOc
Cszmt|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|d�}d}d}|j	j
|jdd�D]&}|j|j
|j|j|jd	�}|dkrR|t�|�}d
}q5|dt�|�}q5|d}t�d
d
|d��}	t|	�WSty�}
zt|jdd�}|�dt|
��WYd}
~
Sd}
~
ww)NrErFrrGrzr5r�)r�)rmrwr�r�r�rr:r;rnro)rrrMrrNrOr�r�r��backupplando_setr�rrmrwr�r�r�r<r=rrr"�rrYrErZrFr?r@r�rBrxr#rrr�fetchBackupPlansDOUs8
�
��zS3Backups.fetchBackupPlansDOc
Cr�r�)
rrrMrrNrOr�r�r�rr�rr"r�rrr�deletePlanDO{r�zS3Backups.deletePlanDOc
Cr�r�)rrrMrrNrOr�r�r�r�websitesinplando_setrvr6r�r<r=rrr"r�rrr�fetchWebsitesInPlanDO�r�zS3Backups.fetchWebsitesInPlanDOc
Cr�r�)rrrMrrNrOr'rr�r�r��backuplogsdo_setrvr�rr0r�r4rCrr�r"r�rrr�fetchBackupLogsDO�r�zS3Backups.fetchBackupLogsDOc
Cr�r�)rrrMrrNrOr�r�r�rr�r�rr"r�rrr�deleteDomainFromPlanDO�r�z S3Backups.deleteDomainFromPlanDOc
Cs�zLt|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|j	dd�}|j	d|_
|j	d|_|j	d	|_|j	d
|_
|��|�dd�WStym}zt|jdd�}|�dt|��WYd}~Sd}~ww)NrErFrrGr~r�r�r�r�rgr)rrrMrrNrOr�r�r�rrwr�r�rgr�rr")rrYrErZr�r#rrr�savePlanChangesDO�s$
��zS3Backups.savePlanChangesDOc
Cs�zItjj|jdd�}|j�d��d�}t�d�}d}t|d��	�}|d�
d	�d�d��d�}|d
�
d	�d�d��d�}tj�
�}|jd|jd|jd
||d�}	tddddd�}
z|	jdd|jdd�|jdd|jdidd�gid�Wn!ty�}zt|t�d�dt|�d���WYd}~nd}~ww|jjd}t�|�}
|
d d!kr�t|t�d�d"d#d���Wd!St|d"t�d�d$d%���|j��D]d}|�|j�}|d!�r|jd|d|d�
d�d&d'}|	j|dd'|||
d(�d)|dd'}t �!|�t|d"t�d�d*|jd+d%���q�t|dt�d�d,|jd-|dd%���q�||_"|��t|d"t�d�d.d%���WdSt�y�}z)t#�$t|�d/�tjj|jdd�}t|t�d�dt|�d���WYd}~dSd}~ww)0Nr~r�r`r^�%d:%m:%Yr�r]rr�r_rkr�r�r��d�
T��multipart_threshold�max_concurrency�multipart_chunksize�use_threads�string�Rules)�Days�ExpiredObjectDeleteMarkerr�Prefix�/�Enabled)�
Expiration�IDr�Filter�Status)�Bucket�LifecycleConfiguration�%b %d %Y, %H:%M:%S�ERROR�r�r7r8r#rErFr�INFO�+Unauthorised user tried to run AWS Backups.�Starting backup process..�r�r8r7r#rj�.tar.gz��Config�rm -f �Backup successful for �.�Backup failed for �	. Error: �Backup Process Finished.z  [S3Backups.forceRunAWSBackupDO])%r�r�r�rrwrdr�r�rUrbrcrsrMr�r�rgr�"put_bucket_lifecycle_configurationr�rmr�BackupLogsDOr"r�rrrNr�rvr�r��upload_filer�executionerr�r r!)rr�r��runTimer�rr�r�rMr�r�r#rErZrA�result�keyr�rrrr�s�

���
����
����
��
(
�
���,��zS3Backups.forceRunAWSBackupDOc
Cs�zBt|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|d�}t	||j
d|j
d|j
dd	�}|��|�d
d�WStyl}zt
�t|�d�t|jdd�}|�dt|��WYd}~Sd}~ww)NrErFr�*Only administrators can use MINIO Backups.rz�endPoint�	accessKey�	secretKey)r��endPointURLr-r.rz [addMINIONode])rrrMrrNrOr�r�r��
MINIONodesrr�rr r!r")rrYrErZrF�newNoder#rrr�addMINIONode`s$
���zS3Backups.addMINIONodec
Cszht|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|d�}d}d}|j	�
�D]&}|j|j�
d��
d�d	�}|dkrM|t�|�}d
}q0|dt�|�}q0|d}t�d
d
|d��}	t|	�WSty�}
zt|jdd�}|�dt|
��WYd}
~
Sd}
~
ww)NrErFrr+rzr5r�zhttp://)r-r,rr:r;rnro)rrrMrrNrOr�r�r��minionodes_setrvr-r/�lstripr<r=rrr")rrYrErZrFr?r@�noderBrxr#rrr�fetchMINIONodesxs2
�
��zS3Backups.fetchMINIONodesc
Cr�)NrErFrrGr-�r-r)
rrrMrrNrOr0r�r�rr�rr")rrYrErZ�delNoder#rrr�deleteMINIONode�r�zS3Backups.deleteMINIONodec

Cszct|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|d�}t	jj|j
dd�}t||j
d�d	d
�|j
d|j
d|d
�}|�
�|j
dD]}t||d�}|�
�qP|�dd�WSty�}	zt�t|	�d�t|jdd�}|�dt|	��WYd}	~	Sd}	~	ww)NrErFrrGrz�	minioNoder7r~r^rr�r�)r�rmr�r�r:r�r�rr�)rrrMrrNrOr�r�r�r0r�BackupPlanMINIOr�r��WebsitesInPlanMINIOrr r!r")
rrYrErZrFr:r�rAr�r#rrr�createPlanMINIO�s.

�
��zS3Backups.createPlanMINIOc
Cszit|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|d�}d}d}|j	�
�D]'}|j|jj
|j|j|jd�}|dkrN|t�|�}d}q0|d	t�|�}q0|d
}t�dd|d��}	t|	�WSty�}
zt|jdd�}|�dt|
��WYd}
~
Sd}
~
ww)
NrErFrrGrzr5)rmr:r�r�r�rr:r;rnro)rrrMrrNrOr�r�r��backupplanminio_setrvrmr:r-r�r�r�r<r=rrr"r�rrr�fetchBackupPlansMINIO�s8
�
��zS3Backups.fetchBackupPlansMINIOc
Cr�r�)
rrrMrrNrOr;r�r�rr�rr"r�rrr�deletePlanMINIO�r�zS3Backups.deletePlanMINIOc
Cs�zSt|jdd�}|jjd}t�|�}|ddkr |�dd�WStjj|j	dd�}t
jj|j	d�d��d	�d
�}||_|j	d|_
|j	d|_|��|�d
d�WStyt}zt|jdd�}|�dt|��WYd}~Sd}~ww)NrErFrrGr~r�r:r^r`r7r�r�r)rrrMrrNrOr;r�r�rr0rdr:r�r�r�rr")rrYrErZr�r:r#rrr�savePlanChangesMINIOs$
 ��zS3Backups.savePlanChangesMINIOc
Cs��z
tjj|jdd�}t�d�}|jj}|jj}|jj	}t
j��}|j
d|||dd�}tdddd	d
�}z|j|j��d�Wn#tyb}	zt|dt�d
�t|	�d���WYd}	~	WdSd}	~	ww|jjd}
t�|
�}|ddkr�t|t�d
�ddd���WdSt|dt�d
�dd���|j��D]a}|�|j�}
|
dr�|d|
d�d�dd}|j|
dd|j��||d�d|
dd}t� |�t|dt�d
�d|jdd���q�t|dt�d
�d|jd|
dd���q�||_!|��t|dt�d
�d d���WdSt�yD}	z)t"�#t|	�d!�tjj|jdd�}t|t�d
�dt|	�d���WYd}	~	dSd}	~	ww)"Nr~r�r�rkF)rlrerf�verifyrrTr)rrrrrrErFrrrrrrjrrrrr rr!r"r#z# [S3Backups.forceRunAWSBackupMINIO])$r;r�r�rr�r�r:r/r-r.rsrMr�r�r�
create_bucketrm�lowerr�BackupLogsMINIOr"r�rrrN�websitesinplanminio_setrvr�r�rcr&rr'r�r r!)rr�r(r,r�r�rMr�r�r#rErZrAr)r*r�rrrr"s�

�����
��
�
������z S3Backups.forceRunAWSBackupMINIOc
Cr�r�)rrrMrrNrOr;r�r�rrFrvr6r�r<r=rrr"r�rrr�fetchWebsitesInPlanMINIOlr�z"S3Backups.fetchWebsitesInPlanMINIOc
Cr�r�)rrrMrrNrOr'rr;r�r��backuplogsminio_setrvr�rr0r�r4rCrr�r"r�rrr�fetchBackupLogsMINIO�r�zS3Backups.fetchBackupLogsMINIOc
Cr�r�)rrrMrrNrOr;r�r�rr<r�rr"r�rrr�deleteDomainFromPlanMINIO�r�z#S3Backups.deleteDomainFromPlanMINIO)NNN))�__name__�
__module__�__qualname__rr$�staticmethodr0r4rCrrhryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr2r6r9r=r?r@rArrGrIrJrrrrr"sR



 /0*#,;1&#a#&J#r)*rQ�os.path�django.shortcutsr�plogical.CyberCPLogFileWriterrr �plogical.httpProcr�plogical.aclr�	threadingr�plogical.mailUtilitiesrrs�boto3.s3.transferrr<�models�mathr
�requestsr��randomr�
subprocess�shlex�plogical.processUtilitiesr�websiteFunctions.modelsr
r�plogical.virtualHostUtilitiesr�multiprocessingr�plogical.backupUtilities�backupUtilitiesr�rrrrrr�<module>s>