Files
CyberPanel/backup/views.pyc

393 lines
33 KiB
Plaintext
Raw Normal View History

2017-12-14 06:56:27 -05:00
<03>
<EFBFBD>T2Zc@s(ddlmZddlmZmZddlmZddlmZddl m
Z
ddl Z ddl m Z mZmZmZddljZdd lmZddlZddlZddljZdd
lmZddlZddlZddlZddl Z dd l!m"Z"dd l#m$Z$dd l%m&Z&d<00>Z'd<00>Z(d<00>Z)d<00>Z*d<00>Z+d<00>Z,d<00>Z-d<00>Z.d<00>Z/d<00>Z0d<00>Z1d<00>Z2d<00>Z3d<00>Z4d<00>Z5d<00>Z6d<00>Z7d<00>Z8d <00>Z9d!<00>Z:d"<00>Z;d#<00>Z<d$<00>Z=d%<00>Z>d&<00>Z?d'<00>Z@dS((i<><69><EFBFBD><EFBFBD>(tunicode_literals(trendertredirect(t HttpResponsei(tDBUsers(t AdministratorN(tWebsitestBackupstdesttbackupSchedules(t loadLoginPage(trmtree(tversion(tvirtualHostUtilities(trandintcCszy[|jd}tjjd|<00>}d}|jdkrCd}nt|di|d6<>SWntk
rutt<00>SXdS(NuuserIDtpkiiiubackup/index.htmlu
viewStatus( tsessionRtobjectstgetttypeRtKeyErrorRR
(trequesttvaltadmint
viewStatus((s"/usr/local/CyberCP/backup/views.pytloadBackupHomes   c CsTy5|jd}y<>tjjd|jd<19>}|jdkr<>d}tjj|<00>sct|d<00>Sg}d}d|}t j
|<00>}t j |<00>}tj |<00>} x-| D]%}
|
j|<00>r<>|j|
<00>q<>q<>Wt|di|d6<>Sn
td <00>SWn6tk
r3} tjjt| <00><00>tt| <00><00>SXWntk
rOtt<00>SXdS(
NuuserIDRiu /home/backupubackup/restore.htmlu.tar.gzu%sudo chown -R cyberpanel:cyberpanel ubackupsu(You should be admin to perform restores.(RRRRRtostpathtexistsRtshlextsplitt
subprocesstcalltlistdirtendswithtappendRt BaseExceptiontloggingtCyberCPLogFileWritert writeToFiletstrRRR
( RRRRt all_filestexttcommandtcmdtrestfilestfilenametmsg((s"/usr/local/CyberCP/backup/views.pyt restoreSite)s0  
  c
Cs<>y<>|jd}y\tjjd|jd<19>}|jdkrwtjj<00>}g}x<>|D]}|j|j<00>qZWn<57>|jdkr|j j<00>}tjj
d|j <00>}g}x|D]}|j|j<00>q<>Wx}|D]6}|j j<00>}x|D]}|j|j<00>q<>Wq<57>Wn<g}tjj
d|<00>}x|D]}|j|j<00>q:Wt |di|d6<>SWn6t k
r<>} tjjt| <00><00>tt| <00><00>SXWntk
r<>tt<00>SXdS( NuuserIDRiitownerRubackup/backup.htmlu websiteList(RRRRRRtallR#tdomaint websites_settfilterRRR$R%R&R'R(RRRR
(
RRRtwebsitest websitesNametitemstadminstwebstwebR0((s"/usr/local/CyberCP/backup/views.pyt
backupSiteMs:       cCs<>y<>|jd}y:|jdkrItj|j<00>}|d}tjjd|<00>}|jj <00>}d}d}x<>|D]<5D>}|j
dkr<>d} nd} i|j d 6|j d
6|j d 6|jd 6| d 6}
|dkr<>|tj|
<00>}d}qu|dtj|
<00>}quW|d}tjidd6dd6|d6<>} t| <00>SWnCtk
r<>} idd6t| <00>d6} tj| <00>} t| <00>SXWn;tk
r<>idd6dd6} tj| <00>} t| <00>SXdS(NuuserIDuPOSTuwebsiteToBeBackedR4u[iuPendingu Completeduidufileudateusizeustatusiu,u]u fetchStatusuNoneu error_messageudatau6Not Logged In, please refresh the page or login again.(RtmethodtjsontloadstbodyRRRt backups_setR3tstatustidtfileNametdatetsizetdumpsRR$R(R(RRtdatat backupDomaintwebsitetbackupst json_datatcheckerR9RCtdict
final_jsonR0t final_dic((s"/usr/local/CyberCP/backup/views.pytgetCurrentBackupsusD 
   



  
$ c Cs<>y^|jdkr]tj|j<00>}|d}tjjd|<00>}d|d}|jd<00>}d|dd tj d
<00>}||}d t
t d d <00><00>}t |d<00>} | j |d|jd|jd<17>|jj<00>}
|jj<00>} | j d<00>x8|
D]0} | j | jd| jd| jd<17>q
W| j d<00>xP| D]H} tjjd| j<00>} | j | jd| jd| jd<17>qRW| j<00>dtjd}|d|d|d|d|}tjtj|<00><00>td|d|dtj d
<00>dddd<00>}|j <00>tj!idd 6d!d"6|d#6<>}t"|<00>SWnCt#k
r<>}idd 6t
|<00>d"6}tj!|<00>}t"|<00>SXdS($NuPOSTuwebsiteToBeBackedR4u/home/u/backup/u.ubackup-iu-u%I-%M-%S-%a-%b-%Yu/home/cyberpanel/i<>i'uwu--u
uChild Domains
u
Databases
tuseru sudo python u/plogical/backupUtilities.pyu( submitBackupCreation --tempStoragePath u --backupName u --backupPath u --metaPath RKRERFRGRCiu
metaStatusuNoneu error_messageu tempStorage($R>R?R@RARRRRttimetstrftimeR(Rtopentwritet phpSelectiont externalApptchilddomains_setR3t databases_setR4RRtdbUsertdbNametpasswordtcloseR t
cyberPanelRtPopenRRtsaveRHRR$(RRIRJRKt
backupPatht
domainUsert
backupNamettempStoragePathtmetaPathtmetaFilet childDomainst databasesR9tdbusertexecPatht newBackupRPR0RQ((s"/usr/local/CyberCP/backup/views.pytsubmitBackupCreation<6F>sD

'  .  .
&!
$c Cs<>y<>y!|jdkr#tj|j<00>}|d}d|d}y4d|d}d|}tjtj|<00><00>}Wn d}nXtj j
|<00>r<>d|}tjtj|<00><00>}|j d<00>d kr<>d
|}tj|<00>}tj |<00>}t jjd |<00>} d | _yMttttj jd|d |d<17><00>d<15><00>d| _| j<00>WnBtttj jd|d |d<17><00><00>| _| j<00>nXtjid d6dd6|d6d d6|d6<>}
t|
<00>S|j d<00>d kr<>yKd
|}tj|<00>}tj |<00>}t jjd |<00>} | j<00>Wn-tk
ro} tjjt| <00>d<17>nXtjid d6|d6dd6|d6d d6<>}
t|
<00>Stjid d6dd6|d6|d6dd6<>}
t|
<00>Sq#tjidd6dd6dd6dd6<>}
t|
<00>SnWn]tk
r<>} idd6t| <00>d6} tj| <00>}
tjjt| <00>d<17>t|
<00>SXWnUtk
r<>idd6dd6} tj| <00>}
tjjt| <00>d<17>t|
<00>SXdS(NuPOSTuwebsiteToBeBackedu/home/u/backup/statusu/backup/backupFileNameu sudo cat u
Fetching..u completedi<64><69><EFBFBD><EFBFBD>u sudo rm -f REiu/backup/u.tar.gzg<00>@uMBu backupStatusuNoneu error_messageustatusuabortufileNameu[5009]u [backupStatus]iu6Not Logged In, please refresh the page or login again.g0A(R>R?R@RARt check_outputRRRRRtfindR RRRRCR(tinttfloattgetsizeRGRbRHRtdeleteR$R%R&R'R( RRIRJRCtbackupFileNamePathR+RER,R-tbackupObRPR0RQ((s"/usr/local/CyberCP/backup/views.pyt backupStatus<75>sn




 ?12

2
, + c
Cs<>yN|jd}y<>|jdkrtj|j<00>}|d}|d}dtjd}|d|d|}tjt j
|<00><00>y#t j j d |<00>}|j<00>Wn-tk
r<>}tjjt|<00>d
<17>nXtjid d 6d d6dd6<>}t|<00>SWnCtk
rL}idd 6t|<00>d6} tj| <00>}t|<00>SXWn;tk
r<>idd 6dd6} tj| <00>}t|<00>SXdS(NuuserIDuPOSTubackupCancellationDomainufileNameu sudo python u/plogical/backupUtilities.pyu1 cancelBackupCreation --backupCancellationDomain u --fileName REu [cancelBackupCreation]iu abortStatusuNoneu error_messageiustatusu6Not Logged In, please refresh the page or login again.(RR>R?R@RAR R`RR RRRRRRtR$R%R&R'R(RHRR(
RRRItbackupCancellationDomainRERlRvR0RPRQ((s"/usr/local/CyberCP/backup/views.pytcancelBackupCreation>s2 

$ c Csby |jd}y<>|jdkr<>tj|j<00>}|d}tjjd|<00>}|jj }d|d|j
d}d|}t j |<00>}t j|<00>} |j<00>tjid d
6d d 6d d6<>}
t|
<00>SWnCtk
r} id d
6t| <00>d 6} tj| <00>}
t|
<00>SXWn;tk
r]id d
6dd 6} tj| <00>}
t|
<00>SXdS(NuuserIDuPOSTubackupIDRDu/home/u/backup/u.tar.gzu sudo rm -f iu deleteStatusuNoneu error_messageiustatusu6Not Logged In, please refresh the page or login again.(RR>R?R@RARRRRKR4RERRRR RtRHRR$R(R( RRRItbackupIDtbackupt
domainNameRR+R,R-RPR0RQ((s"/usr/local/CyberCP/backup/views.pyt deleteBackupgs. 
 

$ c Csy<>|jdkr<>tj|j<00>}|d}d|}tjj|<00>sW|d}nd}dtjd}|d|d |}t j
t j |<00><00>id
d 6d d 6}tj |<00>}t|<00>SWnCtk
r }idd 6t|<00>d 6}tj |<00>}t|<00>SXdS(NuPOSTu
backupFileu /home/backup/udiruCyberPanelRestoreu sudo python u/plogical/backupUtilities.pyu submitRestore --backupFile u --dir iu restoreStatusuNoneu error_messagei(R>R?R@RARRRR R`RRaRRRHRR$R(( RRIt
backupFilet originalFiletdirRlRQRPR0((s"/usr/local/CyberCP/backup/views.pyt submitRestore<72>s$

 c Cs<>y<>|jdkr<>tj|j<00>}|djd<00>}d|d}tjj|<00>rdd|}n"|d}dt|<00>d|}tjj|<00>rUyOd|d }t j
t j |<00><00>}|j d
<00>d kr2d |}t jt j |<00><00>tjid d6dd6|d6d d6dd6<>}t|<00>S|j d<00>d kr<>d |}t jt j |<00><00>tjid d6dd6|d6d d6dd6dd6<>}t|<00>Stjid d6dd6|d6dd6dd6<>}t|<00>SWq<57>tk
rQ} tjjt| <00><00>d}tjid d6dd6|d6dd6dd6<>}t|<00>SXq<58>tjid d6dd6dd6dd6d d6<>}t|<00>SnWnCtk
r<>} idd6t| <00>d6}
tj|
<00>}t|<00>SXdS(NuPOSTu
backupFileu.tar.gzu /home/backup/udiru/home/backup/transfer-u/u sudo cat u/statusuDonei<65><69><EFBFBD><EFBFBD>u sudo rm -rf iu restoreStatusuNoneu error_messageustatusuabortu Completedurunningu[5009]iualreadyRunninguErroru Running..u Just Startedu OK To RunuHalted(R>R?R@RAtstripRRRR(RRoRRRpR RHRR$R%R&R'( RRIR~RR<>RlRCR+RPR0RQ((s"/usr/local/CyberCP/backup/views.pyt restoreStatus<75>sL 

,

"
222cCsnyO|jd}tjjd|<00>}|jdkrDt|di<00>Std<00>SWntk
ritt <00>SXdS(NuuserIDRiubackup/backupDestinations.htmlu/You should be admin to add backup destinations.(
RRRRRRRRRR
(RRR((s"/usr/local/CyberCP/backup/views.pytbackupDestinations<6E>s  c Cs<>y<>yM|jdkrOtjj}tj|j<00>}|d}|d}d}y|d}WnnXtjj <00>j
<00>dkr<>idd6d d
6}tj |<00>}t |<00>SyFtjj d |<00>}idd6d d
6}tj |<00>}t |<00>SWqOtjj|||<00>} | dd krtjj||<00>y\t|d<00>}
|
j|d<17>|
j|dd<17>|
j<00>td |<00>} | j<00>WnWt|d<00>}
|
j|d<17>|
jd<00>|
j<00>td |<00>} | j<00>nXid d6dd
6}tj |<00>}t |<00>Sidd6| d d
6}tj |<00>}t |<00>SqOXnWnCtk
r<>} idd6t| <00>d
6}tj |<00>}t |<00>SXWnAtk
r<>idd6t| <00>d
6}tj |<00>}t |<00>SXdS(NuPOSTu IPAddressupasswordu22u backupSSHPortiiu
destStatusu1Currently only one remote destination is allowed.u error_messagetdestLocu This destination already exists.iuwu
uNoneu22
(R>t
backupUtiltbackupUtilitiestdestinationsPathR?R@RARRR3tcountRHRRt setupSSHKeystinitiateBackupDirCreationRVt
writelinesR_RbR$R(R( Rt destinationsRIt ipAddressR^tportRQRPtdt setupKeysR'tnewDestR0((s"/usr/local/CyberCP/backup/views.pytsubmitDestinationCreation<6F>sj 



 

 c
Cs~y<|jd}y<>|jdkr<>tjj<00>}d}d}x||D]t}|jdkr_qDni|jd6|jd6}|dkr<>|tj|<00>}d}qD|d tj|<00>}qDW|d
}tjidd 6d d 6|d6<>}t |<00>SWnCt
k
r:}idd 6t |<00>d 6} tj| <00>}t |<00>SXWn;t k
ryidd 6dd 6} tj| <00>}t |<00>SXdS(NuuserIDuPOSTu[iuHomeuiduipiu,u]u fetchStatusuNoneu error_messageudatau6Not Logged In, please refresh the page or login again.( RR>RRR3R<>RDR?RHRR$R(R(
RRtrecordsRMRNR9RORPR0RQ((s"/usr/local/CyberCP/backup/views.pytgetCurrentBackupDestinations1s6      
$ cCsDy<>y<>|jdkr<>tj|j<00>}|d}tjj|<00>}|ddkr<>idd6dd6}tj|<00>}t|<00>Sidd6|dd6}tj|<00>}t|<00>SnWnCt k
r<>}idd6t
|<00>d6}tj|<00>}t|<00>SXWnAt k
r?idd6t
|<00>d6}tj|<00>}t|<00>SXdS(NuPOSTu IPAddressiiu
connStatusuNoneu error_message( R>R?R@RAR<>R<>tcheckConnectionRHRR$R(R(RRIR<>tcheckConRQRPR0((s"/usr/local/CyberCP/backup/views.pytgetConnectionStatusYs*

 c Cs<>y<>y_|jdkratj|j<00>}|d}tjjd|<00>}|j<00>d}|d}t|d<00>j <00>}t|d<00>}x6|D].}|j
|<00>dkr<>q<>q<>|j |<00>q<>W|j <00>d}t|d<00>j <00>}t|d <00>}x6|D].}|j
d
<00>dkrq<>q<>|j |<00>q<>W|j <00>id d 6d d6}tj |<00>} t| <00>SWnCtk
r<>}
id d 6t|
<00>d6}tj |<00>} t| <00>SXWnAtk
r<>id d 6t|
<00>d6}tj |<00>} t| <00>SXdS(NuPOSTu IPAddressR<73>u/usr/local/CyberCP/backup/u destinationsuri<72><69><EFBFBD><EFBFBD>u /etc/crontabuwubackupSchedule.pyiu delStatusuNoneu error_message(R>R?R@RARRRRtRVt readlinesRpR<>R_RHRR$R(R( RRIR<>tdelDestRR<>R'R9RQRPR0((s"/usr/local/CyberCP/backup/views.pytdeleteDestinationwsF


 
 
 cCs<>y<>|jd}tjjd|<00>}|jdkr<>tjj<00>j<00>dkryytdd<00>}|j<00>WqyqyXntjj<00>}g}x|D]}|j |j
<00>q<>Wt |di|d6<>St d<00>SWnt k
r<>tt<00>SXdS( NuuserIDRiR<>uHomeubackup/backupSchedule.htmlu destinationsu(You should be admin to schedule backups.(RRRRRRR3R<>RbR#R<>RRRRR
(RRRthomeDestRLR<>R9((s"/usr/local/CyberCP/backup/views.pytscheduleBackup<75>s$   c
Csvy4|jd}y<>|jdkr<>tjj<00>}d}d}xt|D]l}i|jd6|jjd6|jd6}|dkr<>|t j
|<00>}d}qD|d t j
|<00>}qDW|d
}t j
idd 6d d 6|d6<>}t |<00>SWnCt k
r2}idd 6t |<00>d 6} t j
| <00>}t |<00>SXWn;tk
rqidd 6dd 6} t j
| <00>}t |<00>SXdS(NuuserIDuPOSTu[iuidudestLocu frequencyiu,u]u fetchStatusuNoneu error_messageudatau6Not Logged In, please refresh the page or login again.(RR>R RR3RDRR<>t frequencyR?RHRR$R(R(
RRR<>RMRNR9RORPR0RQ((s"/usr/local/CyberCP/backup/views.pytgetCurrentBackupSchedules<65>s4       
$ c Cs<>y<>|jd}yf|jdkrutj|j<00>}|d}|d}d}y<>tjjd|<00>}|jj |kr<>tj
idd6d d
6<>}t |<00>S|d krx|d krxd }t j |<00>t|d<00>} | j|d<17>| j<00>t j|<00>d}
tjtj|
<00><00>tjjd|<00>} td| d|<00>} | j<00>tj
idd6dd
6<>}t |<00>S|d krQ|dkrQd}t j |<00>t|d<00>} | j|d<17>| j<00>t j|<00>d}
tjtj|
<00><00>tjjd|<00>} td| d|<00>} | j<00>tj
idd6dd
6<>}t |<00>S|d kr*|d kr*d}t j |<00>t|d<00>} | j|d<17>| j<00>t j|<00>d}
tjtj|
<00><00>tjjd|<00>} td| d|<00>} | j<00>tj
idd6dd
6<>}t |<00>S|d kr|dkrd}t j |<00>t|d<00>} | j|d<17>| j<00>t j|<00>d}
tjtj|
<00><00>tjjd|<00>} td| d|<00>} | j<00>tj
idd6dd
6<>}t |<00>SWqu|d kr<>|d kr<>d }t j |<00>t|d<00>} | j|d<17>| j<00>t j|<00>d}
tjtj|
<00><00>tjjd|<00>} td| d|<00>} | j<00>tj
idd6dd
6<>}t |<00>S|d kr<>|dkr<>d}t j |<00>t|d<00>} | j|d<17>| j<00>t j|<00>d}
tjtj|
<00><00>tjjd|<00>} td| d|<00>} | j<00>tj
idd6dd
6<>}t |<00>S|d kr<>|d kr<>d}t j |<00>t|d<00>} | j|d<17>| j<00>t j|<00>d}
tjtj|
<00><00>tjjd|<00>} td| d|<00>} | j<00>tj
idd6dd
6<>}t |<00>S|d krr|dkrrd}t j |<00>t|d<00>} | j|d<17>| j<00>t j|<00>d}
tjtj|
<00><00>tjjd|<00>} td| d|<00>} | j<00>tj
idd6dd
6<>}t |<00>SquXnWn=tk
r<>} tj
idd6t| <00>d
6<>}t |<00>SXWn;tk
r<>tj
idd6t| <00>d
6<>}t |<00>SXdS(NuuserIDuPOSTu
backupDestu
backupFrequ /etc/crontabR<62>iuscheduleStatusuThis schedule already existsu error_messageuHomeuDailyuJ0 3 * * 0-6 root python /usr/local/CyberCP/plogical/backupScheduleLocal.pyuau
usudo systemctl restart crondR<64>RiuNoneuWeeklyuI0 3 * * 3 root python /usr/local/CyberCP/plogical/backupScheduleLocal.py uE0 3 * * 0-6 root python /usr/local/CyberCP/plogical/backupSchedule.pyuD0 3 * * 3 root python /usr/local/CyberCP/plogical/backupSchedule.py (RR>R?R@RAR RRRR<>RHRR tpermissionControlRVR<>R_t leaveControlRR RRRbR$R(R(RRRIt
backupDestt
backupFreqRtscheduleRPtcronJobR'R+t destinationt newScheduleR0((s"/usr/local/CyberCP/backup/views.pytsubmitBackupSchedule<6C>s 


 
 

 
 

 
 

 
 
 
 

 
 

 
 

 
 
# #c Cs<>y?|jd}y<>|jdkr<>tj|j<00>}|d}|d}d}|dkry|dkrytj|<00>t|d<00>j<00>}t|d <00>}xK|D]C}|j d
<00>d kr<>|j d <00>d kr<>q<>q<>|j
|<00>q<>W|j <00>tj |<00>d }t jtj|<00><00>tjjd|<00>} tjjd| d|<00>}
|
j<00>tjidd6dd6<>} t| <00>S|dkr<>|dkr<>tj|<00>t|d<00>j<00>}t|d <00>}xK|D]C}|j d<00>d kr<>|j d <00>d kr<>q<>q<>|j
|<00>q<>W|j <00>tj |<00>d }t jtj|<00><00>tjjd|<00>} tjjd| d|<00>}
|
j<00>tjidd6dd6<>} t| <00>S|dkr<>|dkr<>tj|<00>t|d<00>j<00>}t|d <00>}xK|D]C}|j d
<00>d kr*|j d<00>d kr*q<>q<>|j
|<00>q<>W|j <00>tj |<00>d }t jtj|<00><00>tjjd|<00>} tjjd| d|<00>}
|
j<00>tjidd6dd6<>} t| <00>S|dkr<>|dkr<>tj|<00>t|d<00>j<00>}t|d <00>}xK|D]C}|j d<00>d krU|j d<00>d krUqq|j
|<00>qW|j <00>tj |<00>d }t jtj|<00><00>tjjd|<00>} tjjd| d|<00>}
|
j<00>tjidd6dd6<>} t| <00>SnWn=tk
r=} tjidd6t| <00>d6<>} t| <00>SXWn;tk
r|tjidd6t| <00>d6<>} t| <00>SXdS(NuuserIDuPOSTudestLocu frequencyu /etc/crontabuHomeuDailyuruwu0-6i<36><69><EFBFBD><EFBFBD>ubackupScheduleLocal.pyusudo systemctl restart crondR<64>RR<>iu delStatusuNoneu error_messageuWeeklyu* 3ubackupSchedule.pyi(RR>R?R@RAR R<>RVR<>RpR<>R_R<>RR RRRRRR RtRHRR$R(R( RRRIR<>R<>RR'R9R+R<>R<>RPR0((s"/usr/local/CyberCP/backup/views.pytscheduleDelete<74>s<> 

  *
 

  *
 

  *
 

  *
 
# #cCskyL|jd}tjjd|<00>}|jdkr>td<00>St|d<00>SWntk
rftt <00>SXdS(NuuserIDRiu5You don't have enough priviliges to access this page.ubackup/remoteBackups.html(
RRRRRRRRRR
(RtuserIDR((s"/usr/local/CyberCP/backup/views.pyt remoteBackupsEs 
 cCs<>y[|jdkrPtj|j<00>}|d}|d}ytjidd6|d6<>}d|d}tj|d|d t<00>}tj|j<00>}|d
d krt j
j d d <00>}|d |j kr<>|d|j kr<>qTidd6dd6dd6}tj|<00>}t|<00>Sn<idd6d|dd6dd6}tj|<00>}t|<00>SWnNtk
r<>} idd6dt| <00>d6dd6}tj|<00>}t|<00>SXtjidd6|d6<>}d|d}tj|d|d t<00>}tj|j<00>}|dd kr$|djd<00>}
n/tjidd6d|dd6<>} t| <00>Sdttdd<00><00>} t| d<00>} | j|
<00>| j<00>dtjd }|d!| }tjtj|<00><00>}|jd"<00>d#kr<>n.tjidd6d$d%6|d6<>} t| <00>Sy<53>tjidd6|d6<>}d|d&}tj|d|d t<00>}tj|j<00>}|d'd kr<>|d(}id d6d)d6dd6|d(6}tj|<00>}t|<00>Sidd6d*|dd6dd6}tj|<00>}t|<00>SWqZtk
rL} idd6d*t| <00>d6dd6}tj|<00>}t|<00>SXn
td+<00>SWnDtk
r<>} tjidd6d$d%6t| <00>d6<>} t| <00>SXdS(,NuPOSTu ipAddressupassworduadminuusernameuhttps://u:8090/api/cyberPanelVersionRItverifyu
getVersioniRucurrentVersionubuildiustatusu:Your version does not match with version of remote server.u error_messageuNulludiru;Not able to fetch version of remote server. Error Message: u:8090/api/fetchSSHkeyu pubKeyStatusupubKeyu
uEI am sorry, I could not fetch key from remote server. Error Message: u/home/cyberpanel/i<>i'uwu sudo python u$/plogical/remoteTransferUtilities.pyu writeAuthKey --pathToKey u1,Nonei<65><69><EFBFBD><EFBFBD>u exceptionutypeu':8090/api/fetchAccountsFromRemoteServeru fetchStatusudatauNoneu>Not able to fetch accounts from remote server. Error Message: u#This URL only accepts POST requests(R>R?R@RARHtrequeststposttFalsettextR RRtcurrentVersiontbuildRR$R(R<>RRVRWR_R R`RRoRRRp(RRIR<>R^t finalDataturltrtVersiontdata_retR0tpubKeyRPt pathToKeytvhostRltoutputRM((s"/usr/local/CyberCP/backup/views.pytsubmitRemoteBackupsRs<>

&
 #
 %
 
$


#
*cCs>y<>|jd}y<>|jdkr<>tj|j<00>}|d}|d}|d}y!tjd<00>j}tjidd6|d6|d6|d6<>}d |d
}tj |d |d t
<00>} tj| j<00>}|d dkrCdt |d<19>}
d|
} t j tj| <00><00>tjidd6dd6|dd6<>} t| <00>Stjidd6d|dd6<>} t| <00>SWq<57>tk
r<>} tjidd6dt | <00>d6<>} t| <00>SXnWn=tk
r<>} tjidd6t | <00>d6<>} t| <00>SXWn;tk
r9tjidd6t | <00>d6<>} t| <00>SXdS(NuuserIDuPOSTu ipAddressupassworduaccountsToTransferuhttps://api.ipify.orguadminuusernameuhttps://u:8090/api/remoteTransferRIR<>utransferStatusiu/home/backup/transfer-udiru sudo mkdir uremoteTransferStatusuNoneu error_messageiu1Can not initiate remote transfer. Error message: (RR>R?R@RAR<>RR<>RHR<>R<>R(RR RRRR$R(RRRIR<>R^taccountsToTransfertownIPR<50>R<>R<>tlocalStoragePathR+RPR0((s"/usr/local/CyberCP/backup/views.pytstarRemoteTransfer<65>sB 


+
(
%# #c
Cs)y<>|jdkr<>tj|j<00>}|d}|d}|d}d}tji|d6|d6|d6<>}tjd|dd |d
t<00>}tj|j<00>}|d d kr<>|d j d<00>dkr id d6dd6|d d 6d d6}tj|<00>}t
|<00>S|d j d<00>dkrZidd6|d d6dd6}tj|<00>}t
|<00>Sid d6dd6|d d 6dd6}tj|<00>}t
|<00>Sq<53>idd6|dd6dd6}tj|<00>}t
|<00>SnWnJt k
r$} idd6t | <00>d6dd6}tj|<00>}t
|<00>SXdS(NuPOSTu ipAddressupasswordudiruadminuusernameuhttps://u#:8090/api/FetchRemoteTransferStatusRIR<>u fetchStatusiustatusu2Backups are successfully generated and received oni<6E><69><EFBFBD><EFBFBD>uremoteTransferStatusuNoneu error_messageu backupsSentu[5010]i( R>R?R@RARHR<>R<>R<>R<>RpRR$R((
RRIR<>R^R<>tusernameR<65>R<>RMR0((s"/usr/local/CyberCP/backup/views.pytgetRemoteTransferStatuss@


$#&



 
!c CsOy|jd}y<>|jdkr<>tj|j<00>}|d}dt|<00>}dtjd}|d|dt|<00>}tj t
j |<00><00>id d
6d d 6}tj |<00>}t |<00>SWnCtk
r}id d
6t|<00>d 6}tj |<00>}t |<00>SXWnBtk
rJid d
6dd 6d d6}tj |<00>}t |<00>SXdS(NuuserIDuPOSTu backupDiru/home/backup/transfer-u sudo python u$/plogical/remoteTransferUtilities.pyu) remoteBackupRestore --backupDirComplete u --backupDir iuremoteRestoreStatusuNoneu error_messageiunot logged in as adminu existsStatus(RR>R?R@RAR(R R`RRaRRRHRR$R( RRRIt backupDirtbackupDirCompleteRlRMR0R<>((s"/usr/local/CyberCP/backup/views.pytremoteBackupRestore/s* 
 c
Cs y<>|jdkr<>tj|j<00>}|d}d|dd}dt|<00>}tjj|<00>rvd|}tj t
j |<00><00>}|j d<00>dkr<>d |}id
d 6d d 6|d6d
d6}tj |<00>}t|<00>S|j d<00>dkr8d |}idd 6|d 6d d6dd6}tj |<00>}t|<00>Sid
d 6d d 6|d6dd6}tj |<00>}t|<00>Sq<53>idd 6dd 6d d6dd6}tj |<00>}t|<00>SnWnQtk
r} idd 6t| <00>d 6d d6dd6}tj |<00>}t|<00>SXdS(NuPOSTu backupDiru/home/backup/transfer-u/u
backup_logu sudo cat ucompleted[success]i<><69><EFBFBD><EFBFBD>u sudo rm -rf iuremoteTransferStatusuNoneu error_messageustatusucompleteu[5010]iuNo such log found(R>R?R@RAR(RRtisfileRRoRRRpRHRR$(
RRIR<>t backupLogPatht removalPathR+RCR<>RMR0((s"/usr/local/CyberCP/backup/views.pytlocalRestoreStatusUs<


"


" "(c Cs y<>|jdkr<>tj|j<00>}|d}|d}|d}d}tji|d6|d6|d6<>}tjd|dd |d
t<00>}tj|j<00>}|d d kr<>nt j
j d <00>dt |<00>}t jj|<00>r<>y~|d} t| d<00>j<00>d}
yt jt|
<00>tj<00>Wn-tk
rX} t j
j t | <00>d<17>nXt|<00>Wnt|<00>nXid d 6dd6}tj|<00>} t| <00>Sid d 6dd6}tj|<00>} t| <00>SnWnCtk
r} idd 6t | <00>d6}tj|<00>} t| <00>SXdS(NuPOSTu ipAddressupasswordudiruadminuusernameuhttps://u:8090/api/cancelRemoteTransferRIR<>u cancelStatusiuKSome error cancelling at remote server, see the log file for remote server.u/home/backup/transfer-u/piduriu [cancelRemoteBackup]uNoneu error_message(R>R?R@RARHR<>R<>R<>R<>R%R&R'R(RRRRVR<>tkillRqtsignaltSIGKILLR$R R( RRIR<>R^R<>R<>R<>R<>RtpathpidtpidR0RM((s"/usr/local/CyberCP/backup/views.pytcancelRemoteBackup<75>sF


$#

(At
__future__Rtdjango.shortcutsRRt django.httpRtmodelsRtloginSystem.modelsRR?twebsiteFunctions.modelsRRRR tplogical.CyberCPLogFileWriterR&R%tloginSystem.viewsR
RRTtplogical.backupUtilitiesR<73>R<>tshutilR RRR<>R<>tbaseTemplate.modelsR tplogical.virtualHostUtilitiesR trandomRRR1R=RRRnRwRyR}R<>R<>R<>R<>R<>R<>R<>R<>R<>R<>R<>R<>R<>R<>R<>R<>R<>R<>(((s"/usr/local/CyberCP/backup/views.pyt<module>sZ "        $ ( 4 D Q ) & : = (  :  & <09> <09> { 7 + & -