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: //usr/local/CyberCP/plogical/__pycache__/backupUtilities.cpython-310.pyc
o

��h���@s<ddlZddlZddlZddlZej�d�ddlZej�dd�ze�	�ddl
mZddlm
Z
WnYddlmZddlZddlmZddlZddlZdd	lmZmZdd
lmZddlZddlmZddlZddlmZddl Z zdd
l!m"Z"ddl#m$Z$ddl%m&Z&WnYddl'm(Z(m)Z)ddl*m+Z+ddl,m-Z-ddl.Z.ddlm/Z/ddl0m1Z1ddl2m3Z3z,ddl4m5Z5m6Z6m7Z7m8Z8ddl9m:Z:ddl;m<Z<ddl=m>Z>ddl?m@ZAddlBmCZCWnYdZDdZEGdd�d�ZFd d!�ZGd"d#�ZHd$d%�ZId1d(d)�ZJd*d+�ZKd,d-�ZLd.d/�ZMeNd0k�reM�dSdS)2�Nz/usr/local/CyberCP�DJANGO_SETTINGS_MODULEzCyberCP.settings��ApacheVhost)�
ACLManager)�
generate_pass)�CyberCPLogFileWriter)�make_archive�rmtree)�mysqlUtilities)�Process)�installUtilities)�virtualHostUtilities)�sslUtilities)�
mailUtilities)�Element�
SubElement)�ElementTree)�minidom)�copy)�randint)�ProcessUtilities)�Websites�ChildDomains�Backups�NormalBackupDests)�	Databases)�
Administrator)�DNS)�Domains)�DBUsers�2.4�c@s8eZdZdZdZdZdZdZdZdZ	dZ
d	d
�Zed=dd
��Z
ed>dd��Zed?dd��Zedd��Zedd��Zedd��Zedd��Zed@dd��Zed@dd ��Zed!d"��Zed@d#d$��Zed@d%d&��Zed@d'd(��Zed)d*��Zed+d,��Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Z d7d8�Z!d9d:�Z"d;d<�Z#dS)A�backupUtilitiesz/usr/local/lswsz/home/cyberpanel/.sshz/home/cyberpanel/destinationsz /usr/local/lsws/conf/license.key�10�1000z!/home/cyberpanel/CloudBackup.json�
cCs
||_dS�N)�	extraArgs)�selfr'�r)�./usr/local/CyberCP/plogical/backupUtilities.py�__init__Hs
zbackupUtilities.__init__�c'
CsV�z�tjj|d�}tj��\}}|r&tj�|d�}d|��}	t�	|	|j
�nd}tj�tj�r9t
j�d|�d��td�}
t|
d�}t|_t|
d	�}tt�|_t|
d
�}td�|_t|
d�}||_t|
d
�}|j|_t|
d�}|j
|_|j}t|
d�}|j|_t|
d�}|j|_t|
d�}|j|_t|
d�}|j|_t|
d�}|j|_t|
d�}t|j�|_t|
d�}t|j�|_t|
d�}|j|_t|
d�}t|j �|_t|
d�}t|j!�|_t|
d�}|j"|_t|
d�}t|j#�|_t|
d�}|j$j%|_|j&�'�}
|j(�'�}td�}|
D]'}td�}t|d�}|j)|_t|d
�}|j|_t|d�}|j|_|�*|��q|
�*|�td�}|D]_}td �}t|d!�}t|j+�|_|�,d"|j+�d#��|�-�}|D]7}td$�}t|d%�}|d&|_t|d'�}|d|_t.jj|d&|dd(�}t|d)�}t|j�|_|�*|��qZ|�*|��q9|
�*|�ztd*�}t/�0|�}|D]}t|d+�}||_�q�|
�*|�Wnt1�y�}zt
j�d,t|��WYd}~nd}~wwzEtd-�}t2�3|�}|D]2}td.�}t|d�}|j|_t|d/�}|j%|_t|d0�}|j4|_t|d1�}t|j5�|_|�*|��q�|
�*|�Wnt1�y<}zt
j�d2t|��WYd}~nd}~wwz8td3�}t6jj|d�}|j7�'�} | D]}td4�}!t|!d�}|j|_t|!d)�}|j|_|�*|!��qP|
�*|�Wnt1�y�}zt
j�d5t|��WYd}~nd}~wwd6d7�}"d8tt8d9d:��}#tj�tj��r�t
j�d;|#���|"|
��9d<d=�}$t:|#d>�}%|%�;|$�<��|%�=�t�>|#d?�|�r�t?||t@�Ad@�d&ddA�}&|&�B�dB|��}	t�	|	|j
�ddC|#fWSt1�y*}z*t
j�t|��dD��|�rdE|�dF|��}	t�	|	|j
�d&t|�dCfWYd}~Sd}~ww)GN��domain�statusz echo 'Setting up meta data..' > z/home/cyberpanel/dummyzCreating meta for �.�metaFile�VERSION�BUILD�BackupWholeDirr,�masterDomain�phpSelection�externalApp�userName�userPassword�	firstName�lastName�email�type�owner�token�api�
securityLevel�state�initWebsitesLimit�aclNamerr.�pathr�database�dbNamez)select user,host from mysql.db where db='�'�
databaseUsers�dbUserr�dbHost)�user�host�password�Aliases�aliasz%s. [167:prepMeta]�
dnsrecords�	dnsrecord�name�content�priorityz%s. [158:prepMeta]�emails�emailAccountz%s. [179:prepMeta]cSs"t�|d�}t�|�}|jdd�S)zDReturn a pretty-printed XML string for the Element.
                �utf-8z  )�indent)r�tostringr�parseString�toprettyxml)�elem�rough_string�reparsedr)r)r*�prettify s
z3backupUtilities.prepareBackupMeta.<locals>.prettifyz/tmp/%s���'zPath to meta file �ascii�ignore�wi�z%m.%d.%Y_%H-%M-%S)�website�fileName�date�sizer/zecho 'Meta data is ready..' > �Nonez [207][5009]zecho 'z [207][5009]' > )Cr�objects�getr
�setupConnection�osrE�joinr�executionerr7�exists�	debugPath�loggingr�writeToFilerrr2�text�strr3r6�adminr8rNr:r;r<r=r>r?r@rArBrC�aclrS�childdomains_set�all�
databases_setr.�appendrG�execute�fetchallrr"�
getAliases�
BaseExceptionr�
getDNSRecordsrT�prio�eDomains�
eusers_setr�encode�open�write�decode�close�chmodr�time�strftime�save)'�backupDomain�
backupName�tempStoragePath�
backupPath�	FromInnerrf�
connection�cursorr/�command�metaFileXML�child�siteUser�childDomains�	databases�childDomainsXML�items�childDomainXML�databasesXML�databaseXMLrI�databaseUser�databaseUserXML�dbuser�
aliasesXML�aliases�msg�
dnsRecordsXML�
dnsRecords�dnsRecordXML�emailRecordsXML�eDomain�
emailAccounts�emailRecordXMLr`�metaPath�	xmlprettyr1�	newBackupr)r)r*�prepareBackupMetaKs2






































 ��




 ��


 ��	
�
��z!backupUtilities.prepareBackupMetaNc
Cszz}|�d�}t|d�}|�tt����|��tj�|d�}tj	�
||�tj�|d�}tj	�
|d�tj�|d�}|dkrRt|d�}|�t|d����|��t
�|�}	|	�d�j}
d	d
lm}d|
�d|�d
�}t�|�tj	�
|d�td�Wn0ty�}
z$tj�|d�}tj	�
|dt|
�d�tdt|
��d��WYd}
~
nd}
~
wwzt�|�WdSYdS)N�startBackupre�backupFileNamer/z"Making archive of home directory.
�meta.xml�rr5r)�copytreezdrsync -av --ignore-errors --exclude=.wp-cli --exclude=logs --exclude=backup --exclude=lscache /home/z/ z
/public_html/zBacking up databases..�1,Nonez	Aborted, z
.[365] [5009])r��
writelinesrvrn�getpidr�rErorsr�statusWriterr��readr�parse�findru�shutilr�r�normalExecutioner�printr��remove)r�r�r�r��pidFilert�backupFileNamePathr/�metaPathInBackup�backupMetaData�
domainNamer�r�r�r)r)r*r�Hs>





 ��zbackupUtilities.startBackupc
Cspd|}t|d�}|�tt����|��tj�|d�}tj�|d�}	t�	|	�}
|
�
d�j}d|}tj�|�r�z5t
tj�|d�tj�||d��t
tj�|d	�tj�||d
��t
tj�|d�tj�||d��Wnty�}
ztj�t|
��d
��WYd}
~
nd}
~
wwtj�d|�d�}tj�|�r�t
||�d��ntj�d|�d�}tj�|�r�t
||�d��ddlm}|j|d}tj�|�r�t
||�d��|
�d�}z�|D]�}|�
d�j}|�
d�j}tj�d|�d�}d|�d�}tj�|��rt
||�d|�d��ntj�d|�d�}tj�|��r)t
||�d|�d��|j|d}tj�|��rBt
||�d|�d��d|��}tj�|��r�z5t
tj�|d�tj�||d��t
tj�|d	�tj�||d
��t
tj�|d�tj�||d��Wq�Yq�q�Wnt�y�}
zWYd}
~
nd}
~
ww|
�
d�j}tj�|��s�tj�|�p�tj�|���s�tj�|��r�tj�d�dS|dk�r�tj�|d�nd|��}t�||��z	d|��}tj�|��r�d |�d!|�d"�}t�|�|dk�r
tj�|d#�nd$|��}t�||d%�d&|�d'|�d!|��}t�|�d(|�d)|�d�}t�||d%�d*|�d|�d+|�d,�}t�||d%�d-|��}t�||�d-|��}t�|�tjj|d.�}|�d|�d/�}d0tttj� |�d1��}z|D]
}d2|_!||_"|�#��q~Wn-t�y�}
z tj�d3t|
��|D]
}d2|_!||_"|�#��q�WYd}
~
nd}
~
wwd4tj�||d/�}t�|�|dk�r�tj�|d5�nd6|��}t�||d%�t�$|�WdSt�y7}
z?tj�|d7t|
��|dk�rtj�|d7�nd8|��}t�||�d-|��}t�||�d-|��}t�|�WYd}
~
dSd}
~
ww)9Nz%sBackupRootrer/r�r5�/etc/letsencrypt/live/zcert.pem�	.cert.pemz
fullchain.pem�.fullchain.pemzprivkey.pem�.privkey.pemz. [283:startBackup]�
/conf/vhosts/�/vhost.confz-suspended/vhost.confrr�.conf�/apache.conf�ChildDomains/domainr.rE�/home/cyberpanel/�.vhost.conf�/�.apache.confz
symlinked.zBacking up email accounts..
z%echo 'Backing up email accounts..' > z/home/vmail/zcp -R � z/vmailz%Preparing final compressed package..
z.echo 'Preparing final compressed package..' > Tz	chown -R �:zmv z/* z	tar -czf z.tar.gz -C z .�rm -rf )rg�.tar.gzz%sMBir,z%s. [backupRoot:499]�chmod 600 %sz
Completed
zecho 'Completed' > z%s. [511:BackupRoot][[5009]]
z&echo '%s. [511:BackupRoot][[5009]]' > )%r�r�rvrnr�r�rErorr�r�rurqrr�rsrrtr"�Server_root�ApachController.ApacheVhostsr�configBasePath�findall�islinkr�rrprrk�filter�int�getsizer/rir�r�)r�r�r�r�r7�
CPHomeStorager�rtr/r�r�r��sslStoragePathr��completPathToConfr�finalConfPathApacher��childDomain�actualChildDomain�	childPath�TempConfPath�finalConfPathApacheChildr��	emailPath�	backupObs�filePath�	totalSizer�r)r)r*�
BackupRoot�s�


""&"��

""&��5��0�









����






��zbackupUtilities.BackupRootc
Cs�z$ttj|||fd�}|��t|dd�}|�t|j��|��WdSt	yA}zt
j�t|�d�WYd}~dSd}~ww)N��target�args�pidrez [initiateBackup])
rr"r��startr�r�rvr�r�r�rsrrt)r�r�r��pr�r�r)r)r*�initiateBackups"��zbackupUtilities.initiateBackupc-Cs�z�|�d�}d|��}tj�|�r|}ntj�|�s(|}dt|�d|}nd|��}tjjdd�}t�	tj�
|d��}|�d�j}|�d	�j}|�d
�j}	|�d�j}
|�d�j}z�|�d
�j}z	tjj|d�}
Wnv|�d�j}|�d�j}|�d�j}|�d�j}t
|�d�j�}t
|�d�j�}|�d�j}t
|�d�j�}t
|�d�j�}|�d�j}t
|�d�j�}ddlm}|jj|�d�jd�}t|||||||||||||d�
}
|
��YWntjjdd�}
Ytjj|d���dkr�td��tjj|d���dk�rtd ��t�||
j||	d!d!d|
jd"ddd!�}|ddk�r.t|d!��|�d#�}tjj|d�}|D]|}|�d$�j}|
d%k�sN|
d&k�rUt
|�d!k�sa|
d'k�r�t
|�dk�r�tj�d(�|�d)�} | D](}!|!�d*�j}"tj�||"d+�}#|#dk�r�tj�d,|�t |||"d-�}$|$���q<|�d*�j}"tj�||"d+�dk�r�t�t |||"d-�}$|$���q<|�d.�}%t!�"||�t!�#|�}&|%D]'}'|'�d�j}(|'�d/�j})|'�d0�j}*t
|'�d1�j�}+t!�$|&|)|(|*|+d2��q�Wd3St�y},zdt|,�fWYd},~,Sd},~,ww)4Nr��
/home/backup/�/home/backup/transfer-r�rw�r8r�r5r6r7r2r3r8r9r:r;r<r=r>r?r@rArBrCr)�ACLrD�rS)
r8rNr:rCrxr;r<r=r>r?r@rArBr-zThis website already exists.z,This website already exists as child domain.r,�Default�Databases/databaserG�2.1�2.3r � Backup version 2.1.1+ detected..rIrJ�
cyberpanel�HFailed to restore database %s. But it can be false positive, moving on..�rfrGrJzdnsrecords/dnsrecordrSrTrUi)r,rj)%�striprnrErqrvrrkrlrr�ror�rur��loginSystem.modelsr�r�rr��countr�rr
�createVirtualHostr<r8r�rsrrtr
�createDatabaserr�
createDNSZone�
getZoneObject�createDNSRecord)-�backupFileOrig�dir�
backupFile�originalFilerErwr�r.r6r7r2r3r8r�r9r:r;r<r=r>r?r@rArBrCr�rx�resultr�rfrFrGrIr�rJ�res�newDBrQ�zonerR�
recordType�valuerTr�r�r)r)r*�createWebsiteFromBackup�s�



�
�
�
:

��

��z'backupUtilities.createWebsiteFromBackupcDCs
�zO|dkr|�d�}tj�dd|�}tj�dd|�}n%|dkr(|�d�}|}n|�d�}dt|�d|}dt|�d|}tj�|d�}tj�|�sSt�|�tj�|d	�}tj�	|tt�
���tj�|d
�}tj�	|d�t�|�}|�
|�|��tj�	|d�t�tj�|d
��}	|	�d�j}
|	�d�j}|	�d�j}d}
z|	�d�j}|	�d�j}|	�d�j}d}
Wnd}
Yz
t|	�d�j�}Wnd}Yt�||�}|ddk�rM|d|
d}tj�|��rLd|
}z:tj�|��st�|�t|d|
d|d�t|d|
d|d�t|d|
d|d�t�|
�Wn.t�yK}ztj�dt|��WYd}~nd}~wwntj�	|d|dd�WdStj}tj�|d��r|t|�d�d ����d!�d"k�r|tj}tj�	|d#�|	�d$�j}tj�d|
d%�}|	�d&�}�z�|D�]�}|�d'�j}d(|
}||k�r��q�|�d�j}|�d)�j}t �!|
|||dddd*d�	}|ddk�r=tj�|��r�t"|�dd+l#m$} �ztj�|d|d,��r�|t�%�k�r�tj&d-|d}!|d|d,}"t|"|!�d.}#d/t'�(�d0�}$ddl)}%|%j*|#t+�,|$�d1�}&|&�+�d
}'|'dk�r�|d|d2}(d3})tj�tj-��rKtj�d4|�d5|(���t|"d ���}*|*�d6�d"k�r�tj�|(��r�tj�tj-��rvtj�d7|�d8|(�d9��t �.||t j/|)�t0j1|d:}+tj�|+��r�tj�tj-��r�tj�d;|�d<|+�d=��t|(|+�|d|d}tj�|��r�d|}z:tj�|��s�t�|�t|d|d|d�t|d|d|d�t|d|d|d�t�|�WnYWntj�d>|d?�Yt2|�d@k�st2|�dk�r;|�dA|
�d"k�r;|dk�r;dB|},t�3|,�dC|||f},t�3|,��q�tj�dD|�tj�	|d|ddE�WWdSWn8t�y�}z+ttj�|d
�dF�}|�4dt|�dG�|��tj�t|�dH�WYd}~WdSd}~wwtj�	|dI�|	�dJ�}-|-D]}.t �5|
|.jddKdKd*��q�tj�	|dL�|	�dM�}/z0|/D]+}0|0�dN�j}1|1�6dO�d}2|0�dP�j}3t7�8|
|2|3dQ�}|ddk�r�t|d���q�Wn,t�y}ztj�	|dt|�dR�tj�t|�dH�WYd}~WdSd}~wwtj�	|dS�|	�dT�}4|4D]�}5|5�dU�j}6|dVk�s7|dWk�r>t|�dk�sJ|dXk�r�t|�dk�r�tj�dY�d}7|5�dZ�}8|8D]c}9|9�d[�j}:|9�d\�j};|9�dP�j}3tj�tj-��r�tj�d]|:�tj�d^|;�tj�d_|3�|7�r�d}7t9j9�:|6||3d�}<|<dk�r�tj�d`|6�t9j9�;|6|:|3d|;�t9j9�<|:|3d|;��qY�q%|5�dP�j}3t9j9�:|6||3�dk�r�t��q%tj�	|da�|
�s�t�|�}|�
|�|��n.t2|�d@k�s�t2|�dk�rdB|},t�3|,�|�rdb|�dc|
��},ndd||f},t�3|,�tj�	|de�|
�sXz-tj�||
d�}=tj�ddf|
�}>t�|=�}|�
|>�|��dg|>},t=�>t?�6|,��Wn-Yn(dh|}?tj�|?��rwdi|
},t�3|,�dj|?|
f},t�3|,�dk|
},t�3|,�tj&d-|
d}!tj�|d��r3|t�%�k�r3|d}@t|@|!�d.}#d/t'�(�d0�}$ddl)}%|%j*|#t+�,|$�d1�}&|&�+�d
}'|'dk�r3|dl}Atj�tj-��r�tj�dm|
�d5|A���d3})t|@d ���}*|*�d6�d"k�r3tj�|A��r3tj�tj-��rtj�dn|
�do��t �.|
|t j/|)�t0j1|
d:}+tj�tj-��r'tj�dp|
���tj�|A��r3t|A|+�tj�	|dq�ddrl@mA}B|Bdd�}C|C�B|
�tC�D�WdSt�y�}z#tj�|d
�}tj�	|t|�ds�tj�t|�dH�WYd}~dSd}~ww)tN�CyberPanelRestorer��/home�backup�CLIr�r�zpublic_html.tar.gzr�r/zExtracting Main Archive!z,Creating Accounts,Databases and DNS records!r�r5r2r3rr6r,r4r�r�z	/cert.pemr�z/privkey.pemr�z/fullchain.pemz%s. [555:startRestore]zError Message: zN. Not able to create Account, Databases and DNS Records, aborting. [575][5009]r�r��
ServerName���zCreating Child Domains!r7�public_htmlr�r.zmail.%srErw)�ApacheControllerr�r�z@https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermissionrz)rS�IP)�datar�z/home/cyberpanel/fakePathz%Conf path of apache for child domain z in backup is �proxyApacheBackendSSLzIt seems child domain z is using apache conf and z also exists in backup filer�z,CyberPanel was able to successfully convert z to apache conf as z	 exists..zJWhile restoring backup we had minor issues for rebuilding vhost conf for: z#. However this will be auto healed.g@�/home/%s/public_html�	rm -rf %szcp -R %s/%s-docroot %szError domain %sz9. Not able to create child domains, aborting. [635][5009]rez9. Not able to create child domains, aborting. [638][5009]z [startRestore]zRestoring Domain Aliases!z
Aliases/alias�zRestoring email accounts!zemails/emailAccountr<�@rN�restorez:. Not able to create email accounts, aborting. [671][5009]zRestoring Databases!r�rGr�r�r r�rIrJrKzDatabase user: %szDatabase host: %szDatabase password: %srzExtracting web home data!z
rsync -av z/public_html/ /home/zcp -R %s/public_html %szExtracting email accounts!�vmailzchown -R vmail:vmail z%s/vmailzrm -rf /home/vmail/%szcp -R %s /home/vmail/%sz#chown -R vmail:vmail /home/vmail/%sr�z"Conf path of apache for main site zIt seems main site z is using apache conf.zhApache conf path of main domain exists which means CyberPanel successfully converted site to Apache for �Done��FileManagerz [736][5009])ErrnrErorvrq�mkdirrsrr�r��tarfiler��
extractallr�rr�r�rur�r"rrr�installSSLForDomainr�rtr�OLSr��entr�r
�createDomainr	� ApachController.ApacheControllerr�decideServerr�r�GetServerIP�requests�post�json�dumpsrr�switchServer�apacherr��floatrpr��createAlias�splitr�createEmailAccountr
�restoreDatabaseBackupr�changePassword�
subprocess�call�shlex�filemanager.filemanagerr(�fixPermissionsr�reStartLiteSpeed)Dr�rr��completPathr
�pathToCompressedHomer�r/�tarr�r5r2r3�	twoPointO�version�build�phpSelectionGlobalMainSiter4rr��sslHomer��
CurrentServerr7�websiteHomer�r�r.�
mailDomainr6rE�	retValuesrr��childConfPathinBKUP�urlrr3�response�Status�childConfPathinBKUPApache�tempStatusPath�	childDatar�r�r�r�r�rWr<�usernamerNr�rFrG�firstrIr�rJrKr�pathToCompressedEmails�	emailHome�
emailsPath�confPathMainSite�confPathApacher(�fmr)r)r*�startRestoresJ






 ����� 


�
�
��

��
�


��
�~��	

��	����
:

��� �










�

���


"��zbackupUtilities.startRestorec
Cs\zttj||fd�}|��WdSty-}ztj�t|�d�WYd}~dSd}~ww)Nr�z [initiateRestore])	rr"r`r�r�rsrrtrv)r�rr�r�r)r)r*�initiateRestore�s"��zbackupUtilities.initiateRestore�22�rootc
Csz�t��}|�t���|j|t|�||d�tj�d�rn	d}t	�
|dd�dd}t	�
|�zM|��}z|�d�Wnt
yQz|�d�WnYYnw|�dd�|��z|jd	d
d�\}}}	|j��Wntj�d|�d
��YWn3ty�}
z'tj�d|�dt|
��d��|��dd}t	�
|�ddgWYd}
~
WSd}
~
ww|��dd}t	�
|�ddgWStjy�ddgYStjy�}
zddt|
��d�gWYd}
~
Sd}
~
wt�y}
zddt|
��d�gWYd}
~
Sd}
~
ww)N��portrXrN�/root/.ssh/cyberpanel.pubz0ssh-keygen -f /root/.ssh/cyberpanel -t rsa -N ''rcTr�z.sshz.ssh/authorized_keyszchmod 600 .ssh/authorized_keys���timeoutzCould not set permissions on z, likely SFTP-only serverzCould not upload SSH key to z: z, using password authentication�chmod 644 %sr,rjrz Authentication failed. [sendKey]�SSH error: z
 [sendKey]�General Error: )�paramiko�	SSHClient�set_missing_host_key_policy�
AutoAddPolicy�connectr�rnrErqrrp�	open_sftp�stat�FileNotFoundErrorr)�putr��exec_command�channel�recv_exit_statusrsrrt�	Exceptionrv�AuthenticationException�SSHException)�	IPAddressrNrerL�sshr��sftp�stdin�stdout�stderr�er)r)r*�sendKey|sn
��	
���
��


 � ��zbackupUtilities.sendKeycCs��z t��}|�t���|dk�r|j|t|�||d�d}gd�}|D]\}z6|j|dd�\}}	}
|	j��}|
�	��
�}|dksMd|��vsMd	|��vr\d
}tj
�d|�d��Wn&Wq%ty�}
zd
}tj
�d
|�dt|
��d��WYd}
~
nd}
~
ww|��|s�z1t��}|�t���|j|t|�||d�|��}|��|��tj
�d|���ddgWWSty�}zddt|���gWYd}~WSd}~wwt�||||�}|ddkr�dd}t�|�ddgWSdd}t�|�d|dgWSd}tj|d�}t��}|�t���|j|||d�ddgWStj�y0ddgYStj�yM}zddt|��d�gWYd}~Sd}~wt�yi}zddt|��d�gWYd}~Sd}~ww)Nz
NOT-NEEDEDrdT)z
mkdir -p .sshzrm -f .ssh/tempzrm -f .ssh/authorized_tempz!cp .ssh/authorized_keys .ssh/tempzchmod 700 .sshzchmod g-w ~rgrhrznot allowedzchannel closedFzSSH commands not supported on z , falling back to pure SFTP modezError executing remote command z. Error zPure SFTP mode verified for r,rjzSFTP connection failed: rjrf�/root/.ssh/cyberpanel��filename�rX�pkeyz%Authentication failed. [setupSSHKeys]rkz [setupSSHKeys]rl)rmrnrorprqr�rvrwrxr�r��lowerrsrrtr�rvr�rrryr"r�rrp�RSAKeyrzr{)r|rNrerLr}�ssh_commands_supported�commandsr�rr�r��exit_status�error_outputr��test_sshr~r�r��private_key_path�
keyPrivater)r)r*�setupSSHKeys�s�
	
 
������ ��



 � ��zbackupUtilities.setupSSHKeysc
Cshzt�d|dg��d��d�dkrWdSWdSty3}ztj�t|�d�WYd}~dSd}~ww)	N�pingz-c 1rXz0% packet lossrr,rz[checkIfHostIsUp])	r?�check_outputr�r�r�rsrrtrv)r|r�r)r)r*�checkIfHostIsUps "��zbackupUtilities.checkIfHostIsUpc
Cslz�zddl}tj}|�t|d����}|d}|d}Wnd}Yg}|�d�|�d�|�d�|�tj�|�tj	�d	|d
|d|}t
j�t
j�rYtj�|�tj|dd
�}|�|�}	|	dkr�t�dt|j�g�tj�d|�ddgWS|	dkr�t�dt|j�g�tj�d|�ddgWS|	dkr�t�dt|j�g�ddgWS|	dkr�t�dt|j�g�ddgWSt�dt|j�g�ddgWStj	y�}
ztj�d|d�ddgWYd}
~
Sd}
~
wtj�y}
ztj�d|d�ddgWYd}
~
Sd}
~
wt�y5}
ztj�t|
�d
|d�ddgWYd}
~
Sd}
~
ww)Nrr�rerLrb�	password:z	Password:z
Last loginzAsudo ssh -i /root/.ssh/cyberpanel -o StrictHostKeyChecking=no -p r�r#�rh�killzORemote Server is not able to authenticate for transfer to initiate, IP Address:zCRemote Server is not able to authenticate for transfer to initiate.r,�rjr!zTimeout z [checkConnection]zD371 Timeout while making connection to this server [checkConnection]zEOF z[checkConnection]zY374 Remote Server is not able to authenticate for transfer to initiate. [checkConnection]zY377 Remote Server is not able to authenticate for transfer to initiate. [checkConnection])r5r"�destinationsPath�loadsr�r�r|�pexpect�EOF�TIMEOUTrnrErqrrrrsrrt�spawn�expectr?r@rvr�r�)r|rerLr5�destinationsr�expectationr��	checkConn�indexr�r)r)r*�checkConnection&sj



�
�



����zbackupUtilities.checkConnectionc	
Csz�t�|�d}g}|�d�|�d�tjd||d|dd�}|�|�}|dkrn|�d	�|�d�|�|�g}|�d�|�tj�|�|�}|dkr\|�t	j
�d
dgWS|d
krk|�t	j
�d
dgWSWdS|d
kr�|�d�|�|�g}|�d�|�tj�|�|�}|dkr�|�t	j
�d
dgWS|d
kr�|�t	j
�d
dgWSWdSWdStjy�}ztj
�d�ddgWYd}~Sd}~wtjy�}ztj
�d
�dd
gWYd}~Sd}~wt�y}ztj
�t|�d�dt|�dgWYd}~Sd}~ww)N�hellozcontinue connecting (yes/no)?r�zssh -p r#r�rhr�yesr,rjzTimeout [verifyHostKey]zEOF [verifyHostKey]z [verifyHostKey])r"�host_key_verificationr|r�r�r��sendliner�r��signal�SIGTERMr�rsrrtr�rv)	r|rerLrNr�r�r��
innerIndexr�r)r)r*�
verifyHostKey`sf










�





�����zbackupUtilities.verifyHostKeyc
Cs6z}d|d|d|d}tj�tj�rtj�|�t�	t
�|��}|dkr5tj�d|�d��WdSd|d|d|d	}tj�tj�rPtj�|�t�	t
�|��d|d|d|d
}tj�tj�rstj�|�t�	t
�|��WdSty�}ztj�t
|�d�WYd}~dSd}~ww)Nz(sudo ssh -o StrictHostKeyChecking=no -p z -i /root/.ssh/cyberpanel r#z mkdir ~/backuprzSSH command failed for z7, likely SFTP-only server. Skipping directory creation.r,zB "cat ~/.ssh/authorized_keys ~/.ssh/temp > ~/.ssh/authorized_temp"z6 "cat ~/.ssh/authorized_temp > ~/.ssh/authorized_keys"z [createBackupDir])rnrErqrrrrsrrtr?r@rAr;r�rv)r|rerLr�rr�r)r)r*�createBackupDir�s0
���zbackupUtilities.createBackupDirc
CsZzd|}t�t�|��WdSty,}ztj�t|�d�WYd}~dSd}~ww)Nzsudo ssh-keygen -R r,z [host_key_verification]r)	r?r@rAr;r�rsrrtrv)r|r�r�r)r)r*r��s��z%backupUtilities.host_key_verificationc
Cs|zg}tjj|d�}|j��}|D]}|�|j�q|WSty=}ztj	�
t|�d�td�WYd}~dSd}~ww)Nr-z  [getAliases]r)
rrkrl�aliasdomains_setrzr|�aliasDomainr�rsrrtrvr�)r5r��master�aliasDomainsr�r�r)r)r*r�s
��zbackupUtilities.getAliasescCs�ddl}	tj�dt|jdd���t|jdd��t|j�kr=tj�|jdd|jt	|j
�f�ddl
}|�|j
�ndSq)Nrr,zCurrent CPU percent %s.)�intervalrVzRCurrent CPU usage exceeds %s percent. Backup process will sleep for %s seconds..,0)�psutilrsrrtr��cpu_percent�cpur�r'rvr��sleep)r(r�r�r)r)r*�CheckIfSleepNeeded�s��z"backupUtilities.CheckIfSleepNeededc	
Cszgd|j|_d|j}t�|�d|jd|_|��d|j|j|jf}t�|�i}g}ddl}|j	j
��D]}|�|j
|j|jd��q:||d<d	|jd
f}t|d�}|�|�|��|��WdSty}zdt|�fWYd}~Sd}~ww)
N�%s/data�mkdir -p %s�/home/%sr.�nice -n %s cp -Rp %s %sr)r.rE�phpr�%s/%sz	data.jsonre�r,N)�
BackupPath�BackupDataPathrrpr'�DataPathr��nicer5rfryrzr|r.rEr6r�r�r6r�r�rv)	r(r��DataJson�childsr5r��DataJsonPathrtr�r)r)r*�
BackupData�s.



��zbackupUtilities.BackupDatac
Cs.z~ddlm}m}z
|jj|jd�}WnYWdSd|j|_d|j}t�	|�d|j
d|_|��d	|j
|j|jf}t�	|�i}g}ddl}|j��D]}|�|j|jd
��qS||d<d|jd
f}	t|	d�}
|
�|�|��|
��WdSty�}zdt|�fWYd}~Sd}~ww)Nr�r�EUsers)�domainOwnerr��	%s/emailsr��/home/vmail/%sr.r�)r<rNrVr�zemails.jsonre)�mailServer.modelsrr�rkrlrfr�r�rrpr'r�r�r�r5r�rzr|r<rNr�r�r6r�r�rv)r(rr��emailDomainr�r��
emailsListr5rVr�rtr�r)r)r*�BackupEmailss8



��zbackupUtilities.BackupEmailsc
CsB�zd|j|_d|j}t�|�|��i}g}ddl}|jj��D]�}z
t	j
j|jd�}|j}Wn�znt	j
��j
|jd�}|j}|D]}	|	}tj�|j�}|dks[|dkr^WYq$z	t	j
j|d�}Wn<zt	j
��j
|d�}|D]}	|	}Wn%ty�}
ztj�d|jj|jt|
�f�WYd}
~
YWYq$d}
~
wwYWn#ty�}
ztj�d|jj|jt|
�f�WYd}
~
Yq$d}
~
wwY|�t|j�t|�t|j�d��|��tj�|j|j�q$||d<d	|jd
f}t|d�}|�|�|��|��WdSt�y }
zdt|
�fWYd}
~
Sd}
~
ww)
N�%s/databasesr�r)rLr,zPWhile creating backup for %s, we failed to backup database %s. Error message: %s)�databaseNamer�rNr�r�zdatabases.jsonrer�)r�r�rrpr�r5rfr{rzrrkrlrJr�r
�	fetchuserrGr�rsrrtr.rvr|rN�createDatabaseBackupr�r�r6r�)
r(r�r�r�r5r�r��	userToTry�dbusers�itr�r�rtr)r)r*�BackupDatabasesAs�


�����������"
��zbackupUtilities.BackupDatabasescCs�ddl}tj�tj�r(|�ttjd����}|d|_	|d|_
t|d�|_ntj
|_	tj|_
ttj�|_|jd|_tjj|jdd�|_d	|j}t�|�tj�|jd
d�|jdr�tj�|jd
d
�|��}|ddkr�tj�|jd
d|d�d|jfStj�|jd
d�|jdr�tj�|jd
d�|��}|ddkr�tj�|jd
d|d�d|jfStj�|jd
d�|jdr�tj�|jd
d�|��}|ddkr�tj�|jd
d|d�d|jfStj�|jd
d�tj�|jd
d�d|j	|jd|jd|j�d�df}t�|�d|j}t�|�d|j}d |}t�|�d!|}t�|�|jd"dk�rjtj�|jd
d#�d$|jd"||jd%|jd&f}t�|�tj�|jd
d'�d|jd(fS))Nrr�r�r�r�rEr.r-r�rVzStarting backup generation..,0rz!Generating backup for your data,5z8Failed to generate backups for data. Error: %s. [404], 0r,z%Data backup successfully generated,30rVz$Generating backup for your emails,40z:Failed to generate backups for emails. Error: %s. [404], 0z'Emails backup successfully generated,60r�z'Generating backup for your databases,60z=Failed to generate backups for databases. Error: %s. [404], 0z+Databases backups successfully generated,30zCreating final archive..,80z%nice -n %s tar czf %s.tar.gz -C %s %sz/home/cyberpanel/backups/%sr�rr!z	%s.tar.gzzchown cyberpanel:cyberpanel %szchmod 600:600 %srez'Sending file to destination server..,90zfscp -o StrictHostKeyChecking=no -P %s -i /root/.ssh/cyberpanel %s root@%s:/home/cyberpanel/backups/%s/�ip�destinationDomain�Completed [200].r�)r5rnrErqr"�CloudBackupConfigPathr�r�r�r�r�r�r��NiceDefault�
CPUDefaultr'r�rrkrlrfrrprsrr�r�r�r�r;�outputExecutioner)r(r5rr��	finalPathr)r)r*�CloudBackups�s�



�
�
�
�
�
�
�
�
�
��*





�"
zbackupUtilities.CloudBackupscCs��z$ddl}tj�tj�r*|�ttjd����}|d|_	|d|_
t|d�|_ntj
|_	tj|_
ttj�|_d|jd|jdf|_tjj|jdd	�|_tj�|jd
d�d|jd
|jdf}t�|�tj�|jd
d�d|jd|jd�d�f|_d|j|_d|j|_d|j|_tj�|j��rcz^tj�|jd
d�|�td|jd����d}|D]@}ztjj|dd	�}Wq�tj�|jd
d|d�t �!|jj"|d|d|dddd|jj#j$ddt%t&dd���
Yq�Wnt'�y}ztj�(dt%|��WYd}~nd}~wwd|jj"}d|}t�|�|jd d!k�r=d"|j|jj"d#f}nd$|j|jd d#|jdf}t�|�dd%l)m*}	|	dd�}
|
�+|jj"�tj�|j��rz�tj�|jd
d&�|�td'|jd����d(}dd)l,m-}m.}
|jj|jj"d	�}|D]g}z|
jj||d*d+�}Wn1tj�|jd
d,|d*�|
||d*|d-d.�}d/|jj"|d*�/d0�df|_0|�1�Yd1|jj"}d|}t�|�d2|j|jj"f}t�|�d3|}t�|��q�Wnt'�y}ztj�(dt%|��WYd}~nd}~wwtj�|jd
d4�|�td5|jd����d6}|D]I}tj�|jd
d7|d8�t2j2�3|d8�t2j2�4|d8|d9d:�dk�ret'd;��t5|j|d8|d9d<�}|�1�t2j2�6|d8|j|d-��q:|jd d!k�r|jd |jdk�rz d=}t�7|�}|�8d>�d?k�s�dd@l9m:}|dd�}|�;�Wnt<j=�y�dd@l9m:}|dd�}|�;�YnwdA|jd}dB|jd |jd|f}t�7|�dC|jd |jd|f}t�7|�dC|jd|jd|f}t�7|�d|j}t�|�tj�|jd
dD�WdSt'�yG}ztj�|jd
dEt%|��WYd}~dSd}~ww)FNrr�r�r�r��/home/cyberpanel/backups/%s/%sr.rr-rV�Extracting main archive..,0�tar -xf %s -C %s�/home/cyberpanel/backups/%s/�Main Archive extracted,20r�r�r�r��"Creating child domains if any..,20�%s/data.jsonr�Creating %s,20r�rEr,r�rarb�"%s [SubmitCloudBackupRestore:1533]r�r!�sourceDomainrj�mv %s/%s %srzmv %s/%s %s/%sr'�Creating emails if any..,40�%s/emails.jsonrVr�r<��
emailOwnerr<�Creating %s,40rN�r�r<rN�!maildir:/home/vmail/%s/%s/Maildirr#r��mv %s/%s /home/vmail�chown -R vmail:vmail %s�Restoring databases if any..,70�%s/databases.jsonr��Restoring database %s..,70r�r�r��Failed to create Databases!rz	wp --infozWP-CLI root dir:r)�ApplicationInstallerr z2wp search-replace '%s' '%s' --path=%s --allow-rootz6wp search-replace 'www.%s' '%s' --path=%s --allow-rootr��	%s [404].)>r5rnrErqr"r�r�r�r�r�r�r�r�r�r�r'r�rrkrlrfrsrr�rrp�rstrip�
extractedPath�dataPath�
databasesPathr\rr
r/r.rwr8rvrr�rtrBr(rCr�rr�r;�mailr�r
�submitDBDeletionrrr=r�r��plogical.applicationInstallerr��installWPCLIr?�CalledProcessError)r(r5rr�r�r��chr��homePathr(r_rVrr�r�r<�eu�	emailAcct�
EmailsHomer��dbr�outoutr��airEr)r)r*�SubmitCloudBackupRestore�s

�
� �
�"��	 ��


�
� 


� ���
�

�
�
�
�


*��z(backupUtilities.SubmitCloudBackupRestorecCs~d}|d}t|d���}|d�d�d�d��d�}|d�d�d�d��d�}|d�d�d�d��d�}|||fS)	Nz/home/cyberpanel/.awsz/credentialsr�r,r�r��
r�)r��	readlinesr;r)r(rE�credentialsr�aws_access_key_id�aws_secret_access_key�regionr)r)r*�fetchAWSKeys�s
zbackupUtilities.fetchAWSKeyscCs�z�ddl}tj�tj�r*|�ttjd����}|d|_	|d|_
t|d�|_ntj
|_	tj|_
ttj�|_tj�|jdd�ddl}ddlm}|jj|jd	d
�}|��\}}}|�d�dkrn|jd
|||d�}	n|jd
||d�}	d|jd|jd�d�df|_|	�|j��|jd|j�tj�|jdd�t jj|jdd�|_!tj�|jdd�d|jd|jdf}
t"�#|
�tj�|jdd�d|jd|jd�d�d�$d�f|_%d|j%|_&d|j%|_'d|j%|_(tj�|j&��r�z`tj�|jdd�|�td|j%d����d }|D]B}zt)jj|dd�}
W�qtj�|jdd!|d�t*�+|j!j,|d|d"|d#d$dd|j!j-j.dd%t/t0d&d'���
Y�qWnt1�y|}ztj�2d(t/|��WYd}~nd}~wwd)|j!j,}d*|}
t"�#|
�d+|j&|j!j,d,f}
t"�#|
�dd-l3m4}|dd�}|�5|j!j,�tj�|j(��rjz�tj�|jdd.�|�td/|j%d����d0}dd1l6m7}m8}|jj|j!j,d�}|D]h}z|jj||d2d3�}Wn1tj�|jdd4|d2�|||d2|d5d6�}d7|j!j,|d2�d8�df|_9|�:�Yd9|j!j,}d:|��}
t"�#|
�d;|j(|j!j,f}
t"�#|
�d<|}
t"�#|
��q�Wnt1�yi}ztj�2d(t/|��WYd}~nd}~wwtj�|jdd=�|�td>|j%d����d?}|D]I}tj�|jdd@|dA�t;j;�<|dA�t;j;�=|dA|dBdC�dk�r�t1dD��t>|j!|dA|dBdE�}|�:�t;j;�?|dA|j'|d5��q�d*|j%}
t"�#|
�tj�|jddF�WdSt1�y}ztj�|jddGt/|��WYd}~dSd}~ww)HNrr�r�r�r�rVz"Starting file download from S3..,0)�
BackupPlan�planNamer��httpr�s3)rr�endpoint_url)rrr�r.rr�zFile download completed..,5r-r�r�r�r�r�r�r�r�r�r�rr�r�rEr,r�rarbr�r�r!r�rr'r�r�rVr�r<r�r�rNr�r�r#r�r�r�r�r�r�r�r�r�r�r�r�rr�r�)@r5rnrErqr"r�r�r�r�r�r�r�r�r�r�rsrr�r'�boto3�s3Backups.modelsrrkrlrr��resourcer;r��Bucket�bucket�
download_filerrfrrpr�r�r�r�r\rr
r/r.rwr8rvrr�rtrBr(rCr�rr�rr�r
rrrr=)r(r5rrr�planrrrrr�r�r�rr�rr(r_rVrr�r�r<rrr	r�r
rr)r)r*�SubmitS3BackupRestore�s�

���$��
�*�
�"
��	 ��


�
� 



� ���
�

*��z%backupUtilities.SubmitS3BackupRestore)r,r&)NNN�rbrc)$�__name__�
__module__�__qualname__r��completeKeyPathr��
licenseKeyr�r�r�r�r+�staticmethodr�r�r�r�rr`rar�r�r�r�r�r�r�rr�r�r�r�r�r
rr!r)r)r)r*r">sp}W_




X
DZ
	9A(
	
%)CW&r"c
Cs��z�tj�|d�}ddlm}ddl}ddlm}z-tj	j
|d�}|�|j�d}	|�
�\}
}}t|�t|	�krEd}
t�|
|j�WWdSWnYtj	j
|d�}dtd	���}d
|�d|j�d|j�d
|��}
t�|
dd�d|�d�}d
|��}
t�|
|j�d|��}
t�|
|j�t�||||�}|ddkr�t|d�}|�d�|��dt|d�|f}
t�|
|j�WdSd|j|j|df}
t�|
�tj�|�tj�|�dtjd}|d|d|d|d|d|d}t�||j�}|�d �d!k�rtj�|�t|d�}|�|�|��WdSd"|d��}
t�|
�t �!|d�}|�"d#�}|D].}|�d$�j#}t$j$�%|d%�}|dk�rUtj�d&|�d'|�d(|�d)|�d*�}
t�|
��q9dtjd}|d+|d|d|d|d,|d|jfd-|��}t�|d�d.|d��}
t�|
d/�WdSt&�y�}ztj�t|��d0��WYd}~dSd}~ww)1Nr/r)�IncScheduler)�SystemInformationr-�	DiskUsagez>echo 'Disk space exceeded the website size. [2065][5009]' > %sr�rgz	mkdir -p z
 && chown r�r�rcTr�z-backup.txtztouch re�1325zecho '%s [1084][5009]' > %sr,zchown %s:%s %sr�z.sudo nice -n 10 /usr/local/CyberCP/bin/python z/plogical/backupUtilities.pyz startBackup --tempStoragePath z --backupName z --backupPath z --backupDomain z --metaPath %sz[5009]rzchown cyberpanel:cyberpanel r�rGz/home/cyberpanelzQFailed to create database backup for %s. This could be false positive, moving on.zmv /home/cyberpanel/z.sql r�z.sqlz BackupRoot --tempStoragePath z --metaPath %s --externalApp %sz --CPHomeStorage zrm -f r�z  [submitBackupCreation])'rnrEro�plogical.IncSchedulerr)r5�plogical.getSystemInformationr*rrkrlr��config�GetRemainingDiskUsageInMBsr9rrpr7rr"r�r�r�r�rvrsrrtr
�
cyberPanelr�r�rr�r�rur
r�r�)r�r�r�r�r/r)r5r*rf�DiskUsageOfSite�	used_disk�	free_disk�percent_usedr�r��
schedulerPathrrt�execPath�outputr�r�rFrGrr�r)r)r*�submitBackupCreation/	s�� 




�������




�����
������r9c
Cs�z�d|�d�}t|d���d}zt�t|�tj�Wnty8}ztj	�
t|��d��WYd}~nd}~wwd|�d�}||}z
t�|�d��Wntyj}ztj	�
t|��d��WYd}~nd}~wwzt
|�Wnty�}ztj	�
t|��d��WYd}~nd}~wwt|dd	�}|�d
�|��WdSty�}ztj	�
t|��d��tdt|����WYd}~dSd}~ww)
Nz/home/z/backup/pidr�rz [cancelBackupCreation]z/backup/r�r/rezAborted manually. [1165][5009]�  [cancelBackupCreation]�0, )r�rrnr�r�r��SIGKILLr�rsrrtrvr�r	r�r�r�)�backupCancellationDomainrgrEr�r�r�r�r/r)r)r*�cancelBackupCreation�	sB"��"��"��
� ��r>c
Csvzttj||fd�}|��td�WdSty:}ztj�t	|�d�tdt	|����WYd}~dSd}~ww)Nr�r�r:r;)
rr"r`r�r�r�rsrrtrv)rrr�r�r)r)r*�
submitRestore�	s
� ��r?rbrccCsFt�||||�}|ddkrt�|||�td�dSt|d�dS�Nrr,r�)r"r�r�r�)�	ipAddressrNrerL�	setupKeysr)r)r*�submitDestinationCreation�	s
rCc
Csjzt�|�}|ddkrtd�WdSt|d�WdSty4}z
tt|��WYd}~dSd}~wwr@)r"r�r�r�rv)rA�checkConr�r)r)r*�getConnectionStatus�	s
��rEcCs�d}tj|d�}ddlm}tjj|d�}|jj||d�}tjj|jd�}t	�
|j�d}t��}	|	�
t���|	j||j|d	�d
}
|	�|
�\}}}
|������}|D]}t|�qUdS)Nr�r�r)�OneClickBackupsr�)�pkr>r�r�r�zls -d cpbackups/*/)rmr��IncBackups.modelsrFrrkrlr�sftpUserr5r�r/rnrorprqrvr�r��
splitlinesr�)�idr>r�r�rFrw�ocb�nbdr�r}r�rr�r��directories�	directoryr)r)r*�FetchOCBackupsFolders�	s 
�rPcCs�tjdd�}|jddd�|jddd�|jdd	d�|jd
dd�|jddd�|jddd�|jd
dd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|��}|jd kr�t|j|j|j|j	�dS|jd!kr�t
|j|j�dS|jd"kr�t
|j|j�dS|jd#kr�t|j|j|j|j�dS|jd$k�rt|j�dS|jd%k�rt�|j|j|j|j�dS|jd&k�r2t�|j|j|j|j|j|j�dS|jd'k�rwi}|j	|d(<|j|d)<t|j�|d*<t|j�|d+<t|j�|d,<|j |d-<|j|d.<|j!|d/<|j"|d0<t|�}|�#�dS|jd1k�r�i}|j	|d(<|j|d)<|j|d2<|j$|d3<t|�}|�%�dS|jd4k�r�i}|j	|d(<|j|d)<|j|d2<|j&|d5<t|�}|�'�dS|jd6k�r�t(|j)|j�dSdS)7NzCyberPanel Backup Generator)�description�functionzSpecify a function to call!)�helpz--tempStoragePathr"z--backupName�!z--backupPathz--backupDomainz
--metaPathz--ipAddressz
--passwordz--portz--userz--backupCancellationDomainz
--fileNamez--backupFilez--dirz--dataz--emailsz--databasesz--pathz--ipz--sourceDomainz--destinationDomainz
--planNamez
--externalAppz--CPHomeStoragez--idr9r>r?rCrEr�r��CloudBackupr.rVrrVr�rErer�r�r
rr�r!rrP)*�argparse�ArgumentParser�add_argument�
parse_argsrRr9r�r�r�r�r>r=rgr?rrrCrArNrerLrEr"r�r�r�r7r�r�rrVr�rEr�r�r�r�r
rr!rPrK)�parserr�r'�bur)r)r*�main
s�



$













�r\�__main__r")Or5rn�sysrmrEr|�django�environ�
setdefault�setupr�r�plogical.aclr�plogical.randomPasswordrr��plogicalrrsr?rAr�rr	r
r*�multiprocessingrr��plogical.installUtilitiesrrV�plogical.virtualHostUtilitiesr
�plogical.sslUtilitiesr�plogical.mailUtilitiesr�xml.etree.ElementTreerr�	xml.etreer�xml.domrr�r�randomr�plogical.processUtilitiesr�websiteFunctions.modelsrrrr�databases.modelsrrr�plogical.dnsUtilitiesrr�rr��
backup.modelsrr2r3r"r9r>r?rCrErPr\r#r)r)r)r*�<module>s�"

	 
d
�