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/676643/root/usr/local/CyberCP/backup/__pycache__/backupManager.cpython-310.pyc
o

��h��@s�ddlZddlZddlZddlmZddlZddlZddlmZddl	m
Z
ej�d�ej
�dd�e��ddlZddlmZddlmZdd	lmZmZmZmZmZmZmZdd
lmZddl Z ddl!Z!ddl"m#Z#m$Z$ddl%m&Z&dd
l'm(Z(ddl)m*Z*ddl+Z+ddl,m-Z.ddl/m0Z0ddl1m2Z2ddl3Z3ddl4Z5ddl6Z7ddl6m8Z8ddlm9Z9m:Z:m;Z;ddl<m=Z=ddl>m?Z?Gdd�d�Z@dS)�N)�StringIO)�ApplicationInstaller)�httpProcz/usr/local/CyberCP�DJANGO_SETTINGS_MODULEzCyberCP.settings)�
ACLManager)�Websites�Backups�dest�backupSchedules�	BackupJob�GDrive�GDriveSites)�virtualHostUtilities)�HttpResponse�render)�
Administrator)�
mailUtilities)�randint)�ProcessUtilities)�Process)�build)�NormalBackupDests�NormalBackupJobs�NormalBackupSites)�IncScheduler)�JsonResponsec@sJeZdZdZdudd�Zdvdd�Zdvdd�Zdvd	d
�Zdvdd�Zdvd
d�Z	dvdd�Z
dvdd�Zdudd�Zdvdd�Z
dvdd�Zdvdd�Zdvdd�Zdvdd�Zdvdd �Zdvd!d"�Zdvd#d$�Zdud%d&�Zdud'd(�Zdud)d*�Zdud+d,�Zdud-d.�Zdud/d0�Zdwd1d2�Zdvd3d4�Zdud5d6�Zdud7d8�Zdud9d:�Zdud;d<�Z dud=d>�Z!dud?d@�Z"dudAdB�Z#dudCdD�Z$dudEdF�Z%dudGdH�Z&dudIdJ�Z'dudKdL�Z(dudMdN�Z)dudOdP�Z*dudQdR�Z+dvdSdT�Z,dudUdV�Z-dvdWdX�Z.dvdYdZ�Z/dvd[d\�Z0dvd]d^�Z1dvd_d`�Z2dvdadb�Z3dvdcdd�Z4dudedf�Z5dvdgdh�Z6dvdidj�Z7dvdkdl�Z8dvdmdn�Z9dvdodp�Z:dvdqdr�Z;dvdsdt�Z<dS)x�
BackupManagerz /home/cyberpanel/localBackupPathNcCs||_||_dS�N)�domain�childDomain)�selfrr�r!�*/usr/local/CyberCP/backup/backupManager.py�__init__*s
zBackupManager.__init__c
CsRzt�|�}t|d|�}|��WSty(}ztt|��WYd}~Sd}~ww)Nzbackup/index.html)r�	loadedACLrr�
BaseExceptionr�str)r �request�userID�data�
currentACL�proc�msgr!r!r"�loadBackupHome.s

��zBackupManager.loadBackupHomecCs>t�|�}t�||�}d}t�|�t|dd|id�}|��S)Nzchmod 755 /home/backupzbackup/backup.html�websiteList�createBackup)rr$�findAllSitesr�executionerrr)r r'r(r)r*�websitesName�commandr+r!r!r"�
backupSite6s

zBackupManager.backupSitecC�Ft�d�rd}nd}t�|�}t�||�}t|d||d�d�}|��S)N�all�rzIncBackups/RestoreV2Backup.html�r.�
BackupStatr/�r�CheckForPremFeaturer$r0rr�r r'r(r)r9r*r2r+r!r!r"�RestoreV2backupSite@s

z!BackupManager.RestoreV2backupSitecC�0t�|�}t�||�}t|dd|id�}|��S)NzIncBackups/CreateV2Backup.htmlr.r/�rr$r0rr�r r'r(r)r*r2r+r!r!r"�CreateV2backupSiteJ�
z BackupManager.CreateV2backupSitecCr>)NzIncBackups/DeleteV2repo.htmlr.r/r?r@r!r!r"�DeleteRepoV2OrBzBackupManager.DeleteRepoV2cCr5)Nr6r7rz IncBackups/ScheduleV2Backup.htmlr8r/r:r<r!r!r"�schedulev2BackupsUs

zBackupManager.schedulev2BackupscCsdt�|�}tjj|d�}g}|j��}|D]}|�|j�qt�	||�}	t
|d||	d�d�}
|
��S)N��pkzbackup/googleDrive.html)�accounts�websitesr/)rr$r�objects�get�
gdrive_setr6�append�namer0rr)r r'r(r)r*�admin�gDriveAcctsList�gDriveAccts�itemsr2r+r!r!r"�gDriveas

�zBackupManager.gDrivec

Cs�zTt�|�}tjj|d�}t�|d�dkrt��WSi}|j�d�|d<|j�d�|d<|j�d�|d	<|j�d
�|d<t||j�d�t	�
|�d
�}|��|�||�WSt
yw}zddt|�d�}t	�
|�}	t|	�WYd}~Sd}~ww)NrEr/r�t�token�r�
refresh_token�to�	token_uri�s�scopes�n)�ownerrM�auth��status�fetchStatus�
error_message)rr$rrIrJ�currentContextPermission�	loadError�GETr�json�dumps�saverRr%r&r)
r r(r'r*rN�
gDriveData�gDr,�	final_dic�
final_jsonr!r!r"�gDriveSetupms&


��zBackupManager.gDriveSetupc
Cs�z�|jd}t�|�}tjj|d�}t�|j�}|d}t	|d�}t	t
|d��d��}tjj|d�}	t�
|	||�dkr>nt�d	d
�WS|	j���d�}
d
dlm}|�t|
�|�}|�||�\}
}|
||
�}
d
}d
}d
}d
dlm}|
D].}|j|jkr�d}nd}||jd�}|d
kr�|t�|�}d}n	|dt�|�}|d}qw|d}d||d�}t�|�}t|�WSty�}zd
t
|�d�}t�|�}t|�WYd}~Sd}~ww)Nr(rE�selectedAccount�
recordsToShow�page�
�rMr7r_r�-id��	S3Backups�[��backupSchedule�INFO�ERROR��type�message�,�]�r_�logs�
pagination�r_ra)�sessionrr$rrIrJre�loads�body�intr&�stripr�checkGDriveOwnership�
loadErrorJson�gdrivejoblogs_setr6�order_by�s3Backups.s3Backupsrt�
getPagination�len�recordsPointer�plogical.backupSchedulerwr_rxr|rfrr%)r r'r(r)r*rNrmrnrorir�rtr��
endPageNumber�finalPageNumber�	json_data�checker�counterrw�logr_�dic�data_retr,r!r!r"�fetchDriveLogs�sV

�



��zBackupManager.fetchDriveLogsc
Cs�z�|jd}t�|�}tjj|d�}t�|j�}|d}t	|d�}t	t
|d��d��}tjj|d�}	t�
|	||�dkr>nt�d	d
�WS|	j��}
d
dlm}|�t|
�|�}|�||�\}
}|
||
�}d}d
}d
}d
d
lm}|D]"}d|ji}|d
kr�|t�|�}d}n	|dt�|�}|d}qt|d}|	j}d|||d�}t�|�}t|�WSty�}zd
t
|�d�}t�|�}t|�WYd}~Sd}~ww)Nr(rErmrnrorprqr7r_rrsrurvrMr}r~)r_rHr��	currentlyr�)r�rr$rrIrJrer�r�r�r&r�rr�r��gdrivesites_setr6r�rtr�r�r�r�rwrrf�runTimerr%)r r'r(r)r*rNrmrnrorirHrtr�r�r��
finalWebsitesr�r�r�rw�websiter�r�r�r,r!r!r"�fetchgDriveSites�sP


�



��zBackupManager.fetchgDriveSitesc

Cs�zX|jd}t�|�}tjj|d�}t�|j�}|d}|d}t	jj|d�}t�
|||�dkr:t�|||�dkr:nt�dd�WSt
||d	�}	|	��ddi}
t�|
�}t|�WStyz}zdt|�d
�}
t�|
�}t|�WYd}~Sd}~ww)Nr(rErm�selectedWebsiterqr7r_r�r\rr�)r�rr$rrIrJrer�r�rr��checkOwnershipr�r
rgrfrr%r&)
r r'r(r)r*rNrmr�ri�gdSiter�r�r,r!r!r"�
addSitegDrives4

��


��zBackupManager.addSitegDrivec
Cs�zC|jd}t�|�}tjj|d�}t�|j�}|d}t	jj|d�}t�
|||�r+nt�dd�WS|��ddi}t�
|�}	t|	�WStye}
zdt|
�d�}t�
|�}	t|	�WYd}
~
Sd}
~
ww)	Nr(rErmrqr_rr7r�)r�rr$rrIrJrer�r�rr�r��deleterfrr%r&)r r'r(r)r*rNrmrir�r�r,r!r!r"�deleteAccountgDrive$s(




��z!BackupManager.deleteAccountgDrivec
Cs�zJ|jd}t�|�}tjj|d�}t�|j�}|d}|d}t	jj|d�}t�
|||�r/nt�dd�WS||_|�
�ddi}	t�|	�}
t|
�WStyl}zdt|�d	�}	t�|	�}
t|
�WYd}~Sd}~ww)
Nr(rErm�backupFrequencyrqr_rr7r�)r�rr$rrIrJrer�r�rr�r�r�rgrfrr%r&)r r'r(r)r*rNrmr�rir�r�r,r!r!r"�changeAccountFrequencygDriveAs,




��z*BackupManager.changeAccountFrequencygDrivec
Cs�zY|jd}t�|�}tjj|d�}t�|j�}|d}|d}t	jj|d�}t�
|||�r/nt�dd�WS|j}	t�|	�}
||
d<t�
|
�|_|��dd	i}t�
|�}t|�WSty{}
zdt|
�d
�}t�
|�}t|�WYd}
~
Sd}
~
ww)Nr(rErm�
Retentiontimerqr_r�FileRetentiontimer7r�)r�rr$rrIrJrer�r�rr�r�r]rfrgrr%r&)r r'r(r)r*rNrmr�ri�conf�configr�r�r,r!r!r"�changeFileRetentionbs2





��z!BackupManager.changeFileRetentionc
Csz_|jd}t�|�}tjj|d�}t�|j�}|d}|d}t	jj|d�}t�
|||�dkr:t�|||�dkr:nt�dd�WSt
jj||d	�}	|	D]}
|
��qKddi}t�|�}t|�WSty�}
zdt|
�d
�}t�|�}t|�WYd}
~
Sd}
~
ww)Nr(rErmr�rqr7r_rr�r�)r�rr$rrIrJrer�r�rr�r�r�r
�filterr�rfrr%r&)r r'r(r)r*rNrmr�ri�sitesrQr�r�r,r!r!r"�deleteSitegDrive�s6

��



��zBackupManager.deleteSitegDrivecCs�tj�dd�}tj�|�st|ddd�}|��Sg}d}d|}t�|�t�|�}	|	D]}
|
�	|�r8|�
|
�q,t|dd|id�}|��S)N�/home�backupzbackup/restore.html�
restoreBackup�.tar.gzz%sudo chown -R  cyberpanel:cyberpanel �backups)�os�path�join�existsrrr�executeCall�listdir�endswithrL)r r'r(r)r�r+�	all_files�extr3�files�filenamer!r!r"�restoreSite�s



�zBackupManager.restoreSitec
CsRz�t�|�}tjj|d�}|d}t�|||�dkrnt�dd�WSt�|||�dkr,nt��WStjj|d�}|j�	�}d}d}	|D]/}
|
j
dkrMd}nd	}|
j|
j|
j
|
j|d
�}|	dkri|t�|�}d}	qC|dt�|�}qC|d}t�ddd
|d��}
t|
�WSty�}zddt|�d�}t�|�}
t|
�WYd}~Sd}~ww)NrE�websiteToBeBackedr7r`r�rru�Pending�	Completed)�id�file�date�sizer_r}r~�None)r_r`rar)r^)rr$rrIrJr�r�r�backups_setr6r_r��fileNamer�r�rerfrr%r&)r r(r)r*rN�backupDomainr�r�r�r�rQr_r�rkr,rjr!r!r"�getCurrentBackups�sJ



�

��zBackupManager.getCurrentBackupsc
Cs*zit�|�}tjj|d�}|d}tjj|d�}t�|||�dkr"nt�dd�WStj	�
d|d�}|d}d	|d
t�d�}	tj	�
||	�}
t
tj|
|	||fd�}|��t�d
�t�ddd|
d��}t|�WSty�}
ztj�t|
��ddt|
�d�}t�|�}t|�WYd}
~
Sd}
~
ww)NrEr�r�r7�
metaStatusrr�zbackup/zbackup-�-z%m.%d.%Y_%H-%M-%S)�target�args�r�)r_r�ra�tempStorage)r_r�ra)rr$rrIrJrr�r�r�r�r��time�strftimer�
backupUtil�submitBackupCreation�start�sleeprerfrr%�logging�CyberCPLogFileWriter�writeToFiler&)r r(r)r*rNr�r��
backupPath�backupDomainName�
backupName�tempStoragePath�prkr,rjr!r!r"r��s8

�
�

��z"BackupManager.submitBackupCreationc
Csh�z|d}tj�d|d�}tj�d|d�}tj�d|d�}tjj|d�}z$d|}t�||j�}	|	�	d�d	krHt
�d
dd
d
d��}
t|
�WWSWnd
}	Ytj�
|�r�d|}t�||j�}|�	d�d	kr�d|}t�||j�d|}t�||j�d|}t�||j�t
�dd|d|	d��}
t|
�WS|�	d�d	kr�z3d|}t�||j�d|}t�||j�d|}t�||j�tjj|	d�}|D]}|��q�WnYt
�d|	d|dd��}
t|
�WSt
�dd|	|d
d��}
t|
�WSt
�d
dd
d
d��}
t|
�WSt�y3}
z d
t|
�d�}t
�|�}
tj�t|
�d�t|
�WYd}
~
Sd}
~
ww)Nr�r�z
backup/statuszbackup/backupFileNamez
backup/pidr��	sudo cat zNo such file or directory���rr�)�backupStatusrar_�abortz
Fetching..r��sudo rm -f r7)r�rar_r�r��[5009]�r�)r�r�rar_r�)r�rar�r_r�)r�raz [backupStatus])r�r�r�rrIrJr�outputExecutioner�externalApp�findrerfrr�r1rr�r�r%r&r�r�r�)r r(r)r�r_�backupFileNamePath�pidrr3r�rk�	backupObsrQr,rjr!r!r"r�s����

���
��


��zBackupManager.backupStatusc

Cs�zY|d}|d}dtjd}|d|d|}t�t�|��z
tjj|d�}|�	�Wnt
yK}ztj�
t|�d�WYd}~nd}~wwt�d	d
dd��}t|�WSt
y{}zdt|�d
�}	t�|	�}t|�WYd}~Sd}~ww)N�backupCancellationDomainr��/usr/local/CyberCP/bin/python �/plogical/backupUtilities.pyz1 cancelBackupCreation --backupCancellationDomain z --fileName r�z [cancelBackupCreation]r7r�r)�abortStatusrar_)r�ra)r�
cyberPanel�
subprocess�call�shlex�splitrrIrJr�r%r�r�r�r&rerfr)
r r(r)r�r��execPath�backupObr,rkrjr!r!r"�cancelBackupCreationks* ��

��z"BackupManager.cancelBackupCreationc

Cs�zP|d}tjj|d�}|jj}t�|�}tjj|d�}t�|||�dkr&nt�	�WSd|d|j
d}d|}	t�|	�|�
�t�ddd	d
��}
t|
�WStys}zddt|�d
�}t�|�}
t|
�WYd}~Sd}~ww)N�backupID)r�rEr7z/home/z/backup/r�r�r�)r_�deleteStatusrar)rrIrJr�rrr$rr�r�r�rr1r�rerfrr%r&)
r r(r)r�r��
domainNamer*rNr�r3rkr,rjr!r!r"�deleteBackup�s*




��zBackupManager.deleteBackupc
Cs�zP|d}d|}tj�|�s|d}nd}t�|�}|ddkr"nt��WSdtjd}|d	|d
|}t�	|�t
�d�ddd
�}t�
|�}	t|	�WStyr}
zdt|
�d
�}t�
|�}	t|	�WYd}
~
Sd}
~
ww)N�
backupFilez
/home/backup/�dir�CyberPanelRestorerNr7z.sudo nice -n 10 /usr/local/CyberCP/bin/python r�z submitRestore --backupFile z --dir �r�)�
restoreStatusrar)r�r�r�rr$r�rr�r�popenExecutionerr�r�rerfrr%r&)r r)r(r�originalFilerr*r�rjrkr,r!r!r"�
submitRestore�s.








��zBackupManager.submitRestorecCsz�|d�d�}tj�dd|d�}tj�|�r!tj�dd|�}ntj�|d�r1|d�d�}n|d}dt|�d|}tj�|�r�z_d|d	}t�|�}|�d
�dkrrd|}t�	|�t
�d
d|d
dd��}t|�WWS|�d�dkr�d|}t�	|�t
�d
d|d
ddd��}t|�WWSt
�d
d|ddd��}t|�WWSt
y�}	z tj�t|	��d}t
�d
d|ddd��}t|�WYd}	~	WSd}	~	wwt
�d
dddd
d��}t|�WSt
�y}	zdt|	�dddd�}
t
�|
�}t|�WYd}	~	Sd}	~	ww)Nrr�r�r�r�/home/backup/transfer-�/r�z/status�Doner��sudo rm -rf r7r�r�)rrar_r��runningr�r�Error)rrar_r��alreadyRunningrz	Running..zJust Startedz	OK To Run�Halted)rrar_rr��)rrar�rr_)r�r�r�r�r�r&rr�r�r1rerfrr%r�r�r�)r r)rr�rr�r_r3rkr,rjr!r!r"r�sv

��
���������

��zBackupManager.restoreStatuscCst|did�}|��S)Nzbackup/backupDestinations.html�addDeleteDestinations�rr�r r'r(r)r+r!r!r"�backupDestinations��z BackupManager.backupDestinationsc
Cs>z�t�|�}t�|d�dkrt�dd�WSi}|ddkr�|d|d<|d|d<z|d	|d
<Wnd|d
<Yz|d|d
<Wnd|d
<Ydtjd}|d|dd|dd|d
d|d
}tj�t	j
�rytj�
|�t	�|�}tj�t	j
�r�tj�
|�|�d�dkr�|d|d|d|d	|dd�}t|dt�|�d�}|��dddd�}	t�|	�}
t|
�WSdd|d�}	t�|	�}
t|
�WS|d|dd�}t|dt�|�d�}|��dddd�}	t�|	�}
t|
�WSt�y}zddt|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)Nrr�
destStatusr{�SFTP�	IPAddress�	ipAddress�password�
backupSSHPort�port�22�userName�user�rootr�r�z' submitDestinationCreation --ipAddress z --password z --port z
 --user %s�1,r�r�)r{�ip�usernamerr�rM)rMr�r7r�)r_rra)r{r�)rr$rbr�rr�r�r�r�r�	debugPathr�r�r�r�r�rrerfrgrr%r&)r r(r)r*�finalDicr��outputr��ndrjrkr,r!r!r"�submitDestinationCreation�sn


���
�
�






��z'BackupManager.submitDestinationCreationc

Cs8zyt�|�}t�|d�dkrt�dd�WStj��}d}d}|D]G}t�|j	�}|d|dkrg|ddkrH|j
|d|d|d	|d
d�}	n|j
|d	d�}	|dkr^|t�|	�}d
}q |dt�|	�}q |d}t�d
d|d��}
t|
�WSt
y�}zdt|�d�}t�|�}
t|
�WYd}~Sd}~ww)Nrrr`rur{rr"r#r�r)rMr"r#r�r)rMr�r7r}r~r�)r_rar)r�)rr$rbr�rrIr6rer�r�rMrfrr%r&)
r r(r)r*�destinationsr�r�rQr�r�rkr,rjr!r!r"�getCurrentBackupDestinations<sD

�	��

��z*BackupManager.getCurrentBackupDestinationsc

Cs�zOt�|�}t�|d�dkrt�dd�WS|d}dtjd}|d|}t�|�}|�d�d	krAd
dd�}t	�
|�}t|�WSd|d�}t	�
|�}t|�WStyq}	zd
t
|	�d�}t	�
|�}t|�WYd}	~	Sd}	~	ww)
Nrr�
connStatusrr�r�z! getConnectionStatus --ipAddress r!r�r7r�)r+ra)rr$rbr�rr�rr1r�rerfrr%r&)
r r(r)r*rr�r&rjrkr,r!r!r"�getConnectionStatusjs*








��z!BackupManager.getConnectionStatusc	
Cs�z5t�|�}t�|d�dkrt�dd�WS|d}|d}tjj|d���dddd	�}t�	|�}t
|�WStyX}zddt|�d	�}t�	|�}t
|�WYd}~Sd}~ww)
Nrr�	delStatus�
nameOrPathr{rqr7r�)r_r-ra)
rr$rbr�rrIrJr�rerfrr%r&)	r r(r)r*r.r{rjrkr,r!r!r"�deleteDestination�s 



��zBackupManager.deleteDestinationc
Cs�z9t�|�}t�|d�dkrt��WStj��}g}|D]}|�|j�qt�	||�}t
|d||d�d�}	|	��WSty]}
zt
j�t|
�d�tdt|
��WYd}
~
Sd}
~
ww)N�scheduleBackupsrzbackup/backupSchedule.html)r)rHz [scheduleBackup]�Error: )rr$rbrcrrIr6rLrMr0rr�	Exceptionr�r�r�r&r)r r'r(r)r*r)�destsr	r2r+r,r!r!r"�scheduleBackup�s$


�
��zBackupManager.scheduleBackupc
Cs�zUt�|�}t�|d�dkrt�dd�WStj��}d}d}|D]#}|j|jj	|j
d�}|dkr:|t�|�}d}q |dt�|�}q |d}t�dd	|d
��}	t
|	�WStyw}
zdt|
�d�}t�|�}	t
|	�WYd}
~
Sd}
~
ww)Nr0rr`ru)r��destLoc�	frequencyr7r}r~r�)r`rar))r`ra)rr$rbr�r
rIr6r�r	r5r6rerfrr%r&)r r(r)r*�recordsr�r�rQr�rkr,rjr!r!r"�getCurrentBackupSchedules�s2

�

��z'BackupManager.getCurrentBackupSchedulesc
Cszd|d}|d}|d}|d}t�|�}t�|d�dkr%t�dd�WStjj|d�}||d	�}	tjj|d��	�}
|
rJ||
_
t�|	�|
_
|
��nt||t�|	�d
�}|��t�ddd��}t|�WSty�}
zt�ddt|
�d
��}t|�WYd}
~
Sd}
~
ww)NrmrMr��backupRetentionr0r�scheduleStatusrq)r6�	retention)r\rMr�r7)r_r:)r_r:ra)rr$rbr�rrIrJrr��firstr\rerfr�rgrr%r&)r r(r)rmrMr�r9r*�nbdr��existing_job�nbjrkr,r!r!r"�submitBackupSchedule�s4
�

��z"BackupManager.submitBackupSchedulec
Cs�z�t�|�}t�|d�dkrt�dd�WS|d}|d}d}|dkr*|dkr*d	}n |dkr5|d
kr5d}n|dkr@|dkr@d	}n
|dkrJ|d
krJd}tj�|�tj�|�d}d
|}t�|��	d�}	dt
tdd��}
t|
d�}|	D]$}|�
|�dkr�|�
d�dks�|�
|�dkr�|�
d�r�qt|�|d�qt|��d|
d|}t�|�d|}t�|�d}t�|�tjj|d�}
tjj|
|d�}|��t�ddd��}t|�WSty�}zt�dt
|�d��}t|�WYd}~Sd}~ww)Nr0rr:r5r6r�Home�Dailyz0 3�Weeklyz0 0z/etc/crontab�cat rp�/home/cyberpanel/���'�wr�zbackupScheduleLocal.pyzbackupSchedule.pyzsudo mv � zchown root:root %szsudo systemctl restart crond)r5)r	r6r7r�)r-ra)rr$rbr�r�r�r�rr�r�r&r�openr��
writelines�closer1r	rIrJr
r�rerfrr%)r r(r)r*�
backupDest�
backupFreq�findTxtr�r3r&�tempCronPathr�rQ�destination�newSchedulerkr,r!r!r"�scheduleDelete�sX





��zBackupManager.scheduleDeletecCst|ddd�}|��S)Nzbackup/remoteBackups.html�
remoteBackupsrrr!r!r"rT2rzBackupManager.remoteBackupsc
Csb�z�t�|�}t�|d�dkrt��WS|d}|d}zYt�d|d��}d|d}tj||d	d
�}t�|j	�}|ddkr_t
|d
�dkrN|ddkrNn&dddd�}	t�|	�}	t|	�WWSdd|ddd�}	t�|	�}	t|	�WWSWn&ty�}
zddt
|
�dd�}	t�|	�}	t|	�WYd}
~
WSd}
~
wwt�d|d��}d|d}tj||d	d
�}t�|j	�}|ddkr�|d�d�}nt�dd|dd��}t|�WSt��dt
tdd��}
t|
d�}|�|�|��dtjd }|d!|
}t�|�}|�d"�d#k�r
n
t�d|d��}t|�WSzNt�d|d��}d|d$}tj||d	d
�}t�|j	�}|d%dk�rT|d&}dd'd|d(�}	t�|	�}	t|	�WWSdd)|ddd�}	t�|	�}	t|	�WWSt�y�}
zdd)t
|
�dd�}	t�|	�}	t|	�WYd}
~
WSd}
~
wwt�y�}
zt�dt
|
�d��}t|�WYd}
~
Sd}
~
ww)*NrTrrrrN)r#r�https://z:8090/api/cyberPanelVersionF�r)�verify�
getVersionr7�currentVersiong�������?rz:Your version does not match with version of remote server.�Null)r_rarz;Not able to fetch version of remote server. Error Message: raz:8090/api/fetchSSHkey�pubKeyStatus�pubKeyrpzEI am sorry, I could not fetch key from remote server. Error Message: r�rErFrGrHr��$/plogical/remoteTransferUtilities.pyz writeAuthKey --pathToKey z1,Noner�z':8090/api/fetchAccountsFromRemoteServerr`r)r�)r_rarr)z>Not able to fetch accounts from remote server. Error Message: )rr$rbr�rerf�requests�postr��text�floatrr%r&r�r�	checkHomerrJ�writerLrr�rr�r�)r r(r)r*rr�	finalData�urlrUr�r,r\rk�	pathToKey�vhostr�r&r�r!r!r"�submitRemoteBackups6s�

�
���
���
��
��




�
��
��
����z!BackupManager.submitRemoteBackupsc
CsX�z	t�|�}t�|d�dkrt�dd�WS|d}|d}|d}z�d}t�|dd�d	}t�|dd�d
}t�|�}|�d�}	zt|	�}
Wnd}	Yt	j
�d
dd�}t|�}|�
�}
t�d||
||	d��}d|d}tj||dd�}t	j
�d�r�d|j}tj�|�t�|j�}|ddkr�t	j
�dd�}t	j
�|�s�d|}t�|�dt|d�}d|}t�|�d|}t�|�t�dd |dd!��}t|�WWSt�dd"|d#d$��}t|�WWSt�y
}zt�dd"t|�d$��}t|�WYd}~WSd}~wwt�y+}zt�dt|�d$��}t|�WYd}~Sd}~ww)%NrTr�remoteTransferStatusrr�accountsToTransferzisudo sed -i 's/^PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config && sudo service ssh restartTzzsudo sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && sudo systemctl restart sshdz7grep -oP '^Port \K\d+' /etc/ssh/sshd_config | head -n 1rprz/etc�
cyberpanel�	machineIPrN)r#rrrjrrUz:8090/api/remoteTransferFrVz/usr/local/CyberCP/debugz%Remote transfer initiation status: %s�transferStatusr7r�r�zsudo mkdir rrzchmod 600 %sr�)rirarz1Can not initiate remote transfer. Error message: ra)rira)rr$rbr�rr1r�r�r�r�r�r�rJ�readrerfr^r_r�r`r�r�r�r�r&rr%)r r(r)r*rrrjr3r&r�portT�ipFile�f�ownIPrdrerUr|�localBackupDir�localStoragePathrkr,r!r!r"�starRemoteTransfer�s�



�



���������z BackupManager.starRemoteTransferc
Cs�z�t�|�}t�|d�dkrt�dd�WS|d}|d}|d}d}t�|||d��}tjd	|d
|dd�}	t�|	j	�}|d
dkr�|d�
d�dkr`dd|ddd�}t�|�}
t|
�WS|d�
d�dkr{d|ddd�}t�|�}
t|
�WSdd|ddd�}t�|�}
t|
�WSd|ddd�}t�|�}
t|
�WSty�}zdt
|�dd�}t�|�}
t|
�WYd}~Sd}~ww)NrTrrirrrrN�rr#rrUz#:8090/api/FetchRemoteTransferStatusFrVr`r7r_z2Backups are successfully generated and received onr�r�)rirar_�backupsSent�[5010])rirarwra)rr$rbr�rerfr^r_r�r`r�rr%r&)r r(r)r*rrrr#rdrUr�r,r!r!r"�getRemoteTransferStatussT
�
�

�


�

�


��z%BackupManager.getRemoteTransferStatusc	
Cs�zJt�|�}t�|d�dkrt�dd�WS|d}dt|�}dtjd}|d|d	t|�}t�|�t	�
d
�ddd
�}t�|�}t
|�WStyl}zdt|�d
�}t�|�}t
|�WYd}~Sd}~ww)NrTrri�	backupDirrr�r]z) remoteBackupRestore --backupDirComplete z
 --backupDir �r7r���remoteRestoreStatusra)rr$rbr�r&rr�rrr�r�rerfrr%)	r r(r)r*rz�backupDirCompleter�r�r,r!r!r"�remoteBackupRestore;s*
�





��z!BackupManager.remoteBackupRestorec

Csrz�t�|�}t�|d�dkrt�dd�WS|d}d|dd}dt|�}t�d�d	|}t�|�}|�	d
�dkrBd}	||	}|�	d
�dkrcd|}t�
|�dd|dd�}
t�|
�}t
|�WS|�	d�dkr�d|}t�
|�d|ddd�}t�|�}t
|�WSdd|dd�}
t�|
�}t
|�WSty�}zdt|�ddd�}t�|�}t
|�WYd}~Sd}~ww)NrTrrirzrr	�
backup_logr{r�r
r�zYThere was an error during the backup process. Please review the log for more information.zcompleted[success]zrm -rf r7r�)rirar_�completerxr)rr$rbr�r&r�r�rr�r�r1rerfrr%)
r r(r)r*rz�
backupLogPath�removalPathr3r_�
Error_findr�r�r,r!r!r"�localRestoreStatusYsH






�




��z BackupManager.localRestoreStatusc
CsBz~t�|�}t�|d�dkrt�dd�WS|d}|d}|d}d}t�|||d��}tjd	|d
|dd�}	t�|	j	�}|dd
krEnt
j�d�dt
|�}
|
d}d|}t�|�}
d|
}t�|�d|
}t�|�d
dd�}t�|�}t|�WSty�}zdt
|�d�}t�|�}t|�WYd}~Sd}~ww)NrTr�cancelStatusrrrrNrvrUz:8090/api/cancelRemoteTransferFrVr7zKSome error cancelling at remote server, see the log file for remote server.rz/pidr�zsudo kill -KILL rr�)r�ra)rr$rbr�rerfr^r_r�r`r�r�r�r&rr�r1rr%)r r(r)r*rrrr#rdrUr��pathpidr3r�r�r,r!r!r"�cancelRemoteBackup�sF
��






��z BackupManager.cancelRemoteBackupcCsDg}tj���d�}|D]}|�|j�qt|dd|id�}|��S)Nrrzbackup/backupLogs.htmlr�rN)rrIr6r�rL�logFilerr)r r'r(r)r��logFilesr�r+r!r!r"�
backupLogs�szBackupManager.backupLogsc
Cs�z�t�|�}|ddkr
nt��WStt|d��d��}t|d�}|d}tjj|d�}|j	�
�}dd	lm}	dd
l
m}
|	�t|�|�}|	�||�\}}
||
|�}d}d}d}|D].}|j|
jkrhd}nd
}||jd�}|dkr~|t�|�}d}n	|dt�|�}|d}q]|d}|j|
jkr�d}nd}dd|||j|j|d�}t�|�}t|�WSty�}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)NrNr7rorprnr�)r�rrsrvrurxry)�LEVEL�Messager}r~�local�remoter�)r_rar�r��jobSuccessSites�jobFailedSites�locationr|)rr$rcr�r&�rstriprrIrJ�backupjoblogs_setr6r�rtr�rwr�r�r�r_rxr|rerfr��LOCALr�r�rr%)r r(r)r*rornr��logJobr�rtrwr�r�r��	finalLogsr�r�r�r�r_r�r�r,r!r!r"�	fetchLogs�sb


�
�



��zBackupManager.fetchLogsc
CsZ�z|jd}t�|�}t�|j�}|d}t|d�}tt|d��d��}t�	|d�dkr6t�
dd�WSz	tjj
|d	�}WntjyRtjj|d	���}Ynw|j��}	dd
lm}
|
�t|	�|�}|
�||�\}}
|	|
|�}d}d}d}ddlm}|D]#}d
|jji}|dkr�|t�|�}d}n	|dt�|�}|d}q�|d}t�|j�}z|tj}Wnd}Yz|tj}Wnd}Yz|tj }Wnd}Yz|tj!}Wnd}Yz|tj"}Wnd}Yd||||||d�}t�|�}t#|�WSt$�y,}zdt|�d�}t�|�}t#|�WYd}~Sd}~ww)Nr(rmrnrorpr0rr:rqrsrurvrMr7r}r~�Never�
Selected OnlyzNot running)r_rHr��lastRun�allSitesr��
currentStatusr�)%r�rr$rer�r�r�r&r�rbr�rrIrJ�MultipleObjectsReturnedr�r<�normalbackupsites_setr6r�rtr�r�r�r�rwrrfr�rr�r�r6r;r�rr%)r r'r(r)r*rmrnror=rHrtr�r�r�r�r�r�r�rwr�r�r�r�r�r6r;r�r�r,r!r!r"�fetchgNormalSitess�

�
�
�
	

��zBackupManager.fetchgNormalSitesc

Cs�zK|jd}t�|�}t�|j�}|d}tjj|d�}t�	|d�dkr+t�
dd�WS|j��}g}|D]}	|�
|	j�q4d|d�}
t�|
�}t|�WStym}zdt|�d	�}
t�|
�}t|�WYd}~Sd}~ww)
Nr(rmrqr0rr:r7)r_�jobsr�)r�rr$rer�r�rrIrJrbr��normalbackupjobs_setr6rLrMrfrr%r&)
r r'r(r)r*rmr=�allJobs�alljbsrQr�r�r,r!r!r"�fetchNormalJobshs*






��zBackupManager.fetchNormalJobsc
Cs�z�|jd}t�|�}t�|j�}t�|d�dkr t�dd�WS|d}|d}z	tj	j
|d�}WntjyDtj	j|d��
�}Ynw|dkr�t�|j�}z'|tjdkrud	|tj<t�|�|_|��d
di}	t�|	�}
t|
�WWSWnY||tj<t�|�|_|��d
di}	t�|	�}
t|
�WS|d}tj	j
|d
�}z
tj	j
||d�Wnt||d���Yd
di}	t�|	�}
t|
�WSty�}
zdt|
�d�}	t�|	�}
t|
�WYd}
~
Sd}
~
ww)Nr(r0rr:�selectedJobr{rqr6r�r_r7r�r�r�r�)r�rr$rer�r�rbr�rrIrJr�r�r<r�rr�rfrgrrrr%r&)r r'r(r)r*r�r{r?r�r�r�r�r�r,r!r!r"�
addSiteNormal�s^

�

�





��zBackupManager.addSiteNormalc
Cszj|jd}t�|�}t�|j�}|d}|d}z	tjj|d�}Wntj	y5tjj
|d���}Ynwtjj|d�}t�
|d�dkrLt�dd�WSztjj||d	���WnYd
di}	t�|	�}
t|
�WSty�}zdt|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)
Nr(r�r�rqr�r0rr:r�r_r7r�)r�rr$rer�r�rrIrJr�r�r<rrbr�rr�rfrr%r&)r r'r(r)r*r�r�r?r�r�r�r,r!r!r"�deleteSiteNormal�s6

�


��zBackupManager.deleteSiteNormalc
CsBz~|jd}t�|�}tjj|d�}t�|j�}|d}|d}z	t	jj|d�}Wnt	j
y<t	jj|d���}Ynwt�
|d�dkrLt�dd�WSt�|j�}	||	tj<z|d	}
|
|	tj<WnYt�|	�|_|��d
di}t�|�}t|�WSty�}
zdt|
�d�}t�|�}t|�WYd}
~
Sd}
~
ww)
Nr(rEr�r�rqr0rr:r9r_r7r�)r�rr$rrIrJrer�r�rr�r�r<rbr�r�rr6r;rfrgrr%r&)r r'r(r)r*rNr�r�r?r�r9r�r�r,r!r!r"�changeAccountFrequencyNormal�s@

�



��z*BackupManager.changeAccountFrequencyNormalc

Cs�zR|jd}t�|�}t�|j�}|d}z	tjj|d�}Wntj	y1tjj
|d���}Ynwt�|d�dkrAt�
dd�WS|��ddi}t�|�}t|�WStyt}	zdt|	�d	�}t�|�}t|�WYd}	~	Sd}	~	ww)
Nr(r�rqr0rr:r_r7r�)r�rr$rer�r�rrIrJr�r�r<rbr�r�rfrr%r&)
r r'r(r)r*r�r?r�r�r,r!r!r"�deleteAccountNormals,

�


��z!BackupManager.deleteAccountNormalc
Cs�z�|jd}t�|�}tjj|d�}t�|j�}|d}t	|d�}t	t
|d��d��}t�|d�dkr<t�
d	d�WSz	tjj|d
�}	WntjyXtjj|d
���}	Ynw|	j���d�}
ddlm}|�t|
�|�}|�||�\}
}|
||
�}
d
}d}d}ddlm}|
D].}|j|jkr�d}nd}||jd�}|dkr�|t�|�}d}n	|dt�|�}|d}q�|d}d||d�}t�|�}t |�WSt!y�}zdt
|�d�}t�|�}t |�WYd}~Sd}~ww)Nr(rEr�rnrorpr0rr:rqrrrsrurvrxryrzr7r}r~rr�)"r�rr$rrIrJrer�r�r�r&r�rbr�rr�r�r<�normalbackupjoblogs_setr6r�r�rtr�r�r�r�rwr_rxr|rfrr%)r r'r(r)r*rNr�rnror?r�rtr�r�r�r�r�r�rwr�r_r�r�r,r!r!r"�fetchNormalLogs/s\

��



��zBackupManager.fetchNormalLogsc
Cs�z�|d}t�|�}tjj|d�}t�|||�dkrnt��WSd|�d�}t�||�r-nddddd	�}t�	|�}t
|�WSt�d
|��
�}	|	d}
|
�d�dkrod
|}t�t�|��ddddd	�}t�	|�}t
|�WS|
�d�dkr�dddt�d
|��
�d�}t�	|�}t
|�WS|
�d�}|d}
z|d}Wnd}Ydd||
d	�}t�	|�}t
|�WSty�}zdddt|�d�}t�	|�}t
|�WYd}~Sd}~ww)NrrEr7rE�_rustic_backup_logr�100zInvalid status file.)r��
installStatus�installationProgressr�rDr�z[200]zrm -f zSuccessfully Created.z[404]�0)r�r�r�rar})rr$rrIrJr�rc�CheckStatusFilleLocrerfrrr��
splitlinesr�r�r�r�r�r%r&)r r(r)rr*rN�
statusFiler�r��
statusData�lastLiner3�progressr�r�r,r!r!r"�CreateV2BackupStatusss`

�

�

�


�


��z"BackupManager.CreateV2BackupStatusc#Cstjj|d�}i}ddl}�zx|j�dd�dk�rr|j�d�}|j�d�}|j�d�}|j�d	�}	|j�d
�}
|j�d�}ddlm}|d
krJ|}
n|	}
�z|j��}gd�}|D]}|�	|d�}qYddl
m}|||||
|
||�d|�d�����d�}|�
�ddl}ddl}d}|t�d�|jt��|d�}ddi}|�|�}|j|||d�}|jdk�r;|��}|�d�dk�r$|jj||d�}d|_|�
�i}|�d�|d<d|d<d |d!<|j|d"<d#|d$<d%|d&<|j|d'<t�}|�||�}|�|j�d(��}|�d�dk�rd|d<d)|�d*���|d+<td,|�d*��n4d|d<n/d|d<d-|�d*���|d+<td,|�d*��ntd.|j�td/|j�d|d<d0|j��|d+<Wn0t�yq}zd1|d<t |�|d+<WYd}~nd}~ww|j�dd�d2k�r�d|d<nd3|d<Wn t�y�}zd|d<d4t |���|d+<WYd}~nd}~wwd5}z|�|�}|�!�|��|d6<Wn5|j"j#�y�} z
td7| ���WYd} ~ nd} ~ wt$�y�}!z
td8|!���WYd}!~!nd}!~!ww|j%�&�|d9<t'|d:|d;�}"|"�(�S)<NrErr_�none�success�planName�months�monthlyPrice�yearlyPrice�customer�subscription��OneClickBackups�1)rIr	�\�@�!�#�$�%�^�&�*�(�)�+�=�{�}rur~�:�;�"�'�<�>r}�?�|�`�~r�_�)r\r�r��pricer�r��sftpUser�:http://platform.cyberpersons.com/Billing/CreateSFTPAccount�cat /root/.ssh/cyberpanel.pub��sub�keyr��serverIPr��Content-Type�application/json��headersr)��r7)r\r�rr�
NOT-NEEDEDrrrrrr{�	cpbackupsr�rM�utf-8z%[2109] Failed to create sftp account rar|zFailed to create SFTP account:z%[1985] Failed to create sftp account z-Failed to connect to the server. Status code:z	Response:�%[1991] Failed to create sftp account r�	cancelledr�z@[2038] Unkown error occured in purchase process. Error message: z:https://platform.cyberpersons.com/Billing/FetchBackupPlans�planszHTTP error occurred: zOther error occurred: �bPlanszbackup/oneClickBackups.htmlr))rrIrJr^rd�IncBackups.modelsr�r�lower�replace�plogical.randomPassword�randomPassword�
generate_passrgrerr�r�r�fetchIPrfr_�status_code�staterr(r��content�decode�printr`r%r&�raise_for_status�
exceptions�	HTTPErrorr2�oneclickbackups_setr6rr)#r r'r(r)rr^�	plan_namer��
monthly_price�yearly_pricer�r�r�r�r�not_allowed_charactersrQr��backup_planrere�payloadr��dataRet�response�
response_data�ocbkupr%�wm�response_inner�response_data_innerr,�http_err�errr+r!r!r"r��s�
�	�	


��
���
���
���zBackupManager.OneClickBackupsc
Cs�|jd}t�|�}tjj|d�}ddlm}|jj|j�d�|d�}t	jj|j
d�g}g}	|D]}
|	�|
j�q0t�
||�}t|dt	jj|j
d�j|d	�d
�}|��S)Nr(rErr�r��rFr\rqz"backup/OneClickBackupSchedule.html)rQrHr0)r�rr$rrIrJr�r�rdrr�rLrMr0rr)
r r'r(r)r*rNr��ocbr)r3r	r2r+r!r!r"�ManageOCBackups=s

�zBackupManager.ManageOCBackupscCs�zT|jd}t�|�}tjj|d�}|ddkrnt��WSddlm}|j	�d�}|s7ddl
m}|d	�WSz
|jj||d
�}	Wn|jyRt�dd�YWSwWn$t
yx}
ztj�t|
�d�td
t|
��WYd}
~
Sd}
~
wwg}ztjj|	jd�}t�|j�d}
Wn't
y�}ztj�dt|��d��tdt|����WYd}~Sd}~wwt��}|�t����z�z�d}t�d|�d����}|dkr�tj�d|�d��td|�d��WWz|��WSYSt�d|���� d�}|�r|�!d��r&tj�d|�d��td|�d��WWz|��WSYSt"|�}d}ztj#�$|�}Wn3z
|�%d�tj&�$|�}Wn!z
|�%d�tj'�$|�}Wn|�%d�tj(�$|�}YYY|j)|
|	j|dd �d!}|�*|�\}}}|�+��,���}|d"k�s�|�s�g}n|�-�}|D]}|�r�d#|v�r�|�.|�/d#�d��q�Wn�tj0�y�}z"tj�d$t|��d��td%�WYd}~Wz|��WSYSd}~wtj1�y}z'tj�d&t|��d��td't|����WYd}~Wz|��WSYSd}~wt
�yC}z'tj�d(t|��d��td)t|����WYd}~Wz|��WSYSd}~wwWz|��WnYnz|��WwYwt2|d*d+|id,�}|�3�S)-Nr(rErNr7rr�r�)�redirectz/backup/ManageOCBackupsrrz [RestoreOCBackups]r1rqr"z"Failed to get backup destination: z7Error: Failed to get backup destination configuration. �/root/.ssh/cyberpanelztest -f z& && echo "EXISTS" || echo "NOT_EXISTS"�
NOT_EXISTSzSSH key not found at zError: SSH key not found at z8. Please ensure One-click Backup is properly configured.r�rpzcat:zFailed to read SSH key at z!Error: Could not read SSH key at z. Please check permissions.�)r#�pkey�timeoutz6ls -d cpbackups/*/ 2>/dev/null || echo 'NO_DIRS_FOUND'�
NO_DIRS_FOUNDr	zSSH Authentication failed: zSError: SSH Authentication failed. Please check your One-click Backup configuration.zSSH Connection failed: z+Error: Failed to connect to backup server: z'Unexpected error during SSH operation: z'Error: Failed to retrieve backup list: zbackup/restoreOCBackups.html�directoriesr0)4r�rr$rrIrJr�r�r�rd�django.shortcutsr�DoesNotExistr2r�r�r�r&rrr�rer�r��paramiko�	SSHClient�set_missing_host_key_policy�
AutoAddPolicyrr�r�rLr��
startswithr�RSAKey�from_private_key�seek�
Ed25519Key�ECDSAKey�DSSKey�connect�exec_commandrnr�r�rLr��AuthenticationException�SSHExceptionrr)r r'r(r)r*rNr��	backup_idrrr,�	finalDirsr=r"�e�ssh�private_key_path�check_exists�key_content�key_filer�r3�stdin�stdout�stderrr&r�	directoryr+r!r!r"�RestoreOCBackupsNs�



������;�4�


�����������zBackupManager.RestoreOCBackupsc
Cs�z�|jd}t�|�}t�|j�}|d}|d}tjj|d�}ddl	m
}|jj||d�}	tjj|	jd�}
t�|
j
�d	}t��}|�t���d
}
t�d|
����d�}t|�}tj�|�}|j||	j|d
�d|�d�}|�|�\}}}|������}g}|D]}|�|�d�d�q�d|d�}t�|�}t |�WSt!y�}zdt"|�d�}t�|�}t |�WYd}~Sd}~ww)Nr(�idValue�folderrErr�rrqr"rrDrp)r#rzls -d cpbackups/z/*r	r�r7)r_r/r�)#r�rr$rer�r�rrIrJr�r�rr�r�rr r!r"rr�r�rr$r%r*r+rnr�r�rLr�rfrr%r&)r r'r(r)r*r�r<rNr�rr=r"r1r2r4r5r�r3r6r7r8rr/r9r�r�r,r!r!r"�fetchOCSites�sB





��zBackupManager.fetchOCSitesc
Cs(zq|jd}t�|�}|ddkrnt��WSt�|j�}|d}|d}|d}i}||d<||d<||d<||d<dttd	d
��|d<t	|dd�}	|	�
d
�|	��td|�}
|
�
�ddd|dd�}t�|�}t|�WSty�}
zdt|
�d�}t�|�}t|�WYd}
~
Sd}
~
ww)Nr(rNr7r;r<�
backupfiler�rErFrG�tempStatusPathrHzRestore started..�StartOCRestorer�)r_r�rar?rr�)r�rr$r�rer�r�r&rrJrKrLrr�rfrr%)r r'r(r)r*r�r<r>�	extraArgsr��
backgroundr�r�r,r!r!r"r@�s@




�


��zBackupManager.StartOCRestorecCs�tjj|d�}|jd}t�|�}ddl}|�|j�}|d}ddl	m
}|jj||d�}	i}ddl}
ddl}d}|	jt
�d�|	jt��|	jd	�}d
di}
|�|�}|
j||
|d�}|jd
k�rO|��}|�d�dkr�d|	_|	��td�i}|�d�|d<d|d<d|d<|	j|d<d|d<d|d<|	j|d<t�}|�||�}|�|j�d��}|�d�dkr�d|�d�d�}|�|�}t|�Sddi}|�|�}t|�S|�d�d k�r>d|	_|	��td�i}|�d�|d<d|d<d|d<|	j|d<d|d<d|d<|	j|d<t�}|�||�}|�|j�d��}|�d�dk�r1d|�d�d�}|�|�}t|�Sddi}|�|�}t|�Sd|�d�d�}|�|�}t|�Sd!|j��|d"<d|jd�}|�|�}t|�S)#NrEr(rr�r�rr�r�r�r�r�r�r�r_r7z"SFTP account created successfully.rrr�rrrrrr{r�r�rMr�rar�zAlready deployed.r�r|)rrIrJr�rr$rer�r�r�r�r^r�rr�r�r�r�rfr_r�r�rgr�rr(r�r�rr`)r r'r(r)rr*rer�r�rr^rerr�r	r
rr%r
rrr�r�r!r!r"�
DeployAccount!	s�

�











zBackupManager.DeployAccountc
Cs�z�|stddd��WS|d}|d}|d}|d}|d}ddl}	ddl}
d	}|t�d
�t��|d|dd
�}ddi}
|	j||
|
�|�d�}|j	dkr�|��}|�
d�dkr�ddlm}|t
jj
|d�||dkrmdnd||||�
d�dd�}|��|�
d�dd|�
d�dd|�
d�d �}t�}|�||�}|
�|j�d!��}|�
d�dkr�td|�
d"�d��WStddi�WStd|�
d"�d��WStdd#|j��d��WSty�}ztdt|�d��WYd}~Sd}~ww)$NrzNo data providedr��subscription_id�customer_idr�amount�intervalz@http://platform.cyberpersons.com/Billing/ReconfigureSubscriptionr��email�code)rDr�r�rHrIr�r�r�r�r_r7r�rE�monthr��12r�)r\r�r�r�r�r�r�r�rr�rrr�)rrrrr{r�rMr�razPlatform API error: )rr^rerr�rr�r_rfr�rJr�r�rrIrgrr(r�r�r�r`r2r&)r r'r(r)rDrErrFrGr^rererr�r
rr�rr%r
rrr0r!r!r"�ReconfigureSubscription�	sl�
�
�
��z%BackupManager.ReconfigureSubscription)NN)NNNr)=�__name__�
__module__�__qualname__�localBackupPathr#r-r4r=rArCrDrRrlr�r�r�r�r�r�r�r�r�r�r�r�r�rrrr(r*r,r/r4r8r@rSrTrhruryrr�r�r�r�r�r�r�r�r�r�r�r�r�rr:r=r@rCrLr!r!r!r"r'sx












B
>
 

!
)
"

1
'
S



<

A
.



!
$
>

{
]
-

3
.

F
`

;
#
,

D
8


w
5
'vr)Ar��os.path�sys�ior�djangor�plogical.applicationInstallerr�plogical.httpProcrr�rL�environ�
setdefault�setupre�plogical.aclr�plogical.CyberCPLogFileWriterr�r��websiteFunctions.modelsrrr	r
rrr
�plogical.virtualHostUtilitiesrr�r�rrr�loginSystem.modelsr�plogical.mailUtilitiesr�randomrr��plogical.backupUtilities�backupUtilitiesr��plogical.processUtilitiesr�multiprocessingrr^�google.oauth2.credentials�google�googleapiclient.discovery�googleapiclientrrrr�plogical.IncSchedulerr�django.httprrr!r!r!r"�<module>sD$