@@ -176,8 +176,9 @@ def fetchAWSKeys(self):
176176
177177 aws_access_key_id = data [1 ].split (' ' )[2 ].strip (' ' ).strip ('\n ' )
178178 aws_secret_access_key = data [2 ].split (' ' )[2 ].strip (' ' ).strip ('\n ' )
179+ region = data [3 ].split (' ' )[2 ].strip (' ' ).strip ('\n ' )
179180
180- return aws_access_key_id , aws_secret_access_key
181+ return aws_access_key_id , aws_secret_access_key , region
181182
182183 def fetchBuckets (self ):
183184 try :
@@ -191,12 +192,13 @@ def fetchBuckets(self):
191192 return proc .ajax (0 , 'Only administrators can use AWS S3 Backups.' )
192193
193194
194- aws_access_key_id , aws_secret_access_key = self .fetchAWSKeys ()
195+ aws_access_key_id , aws_secret_access_key , region = self .fetchAWSKeys ()
195196
196197 s3 = boto3 .resource (
197198 's3' ,
198199 aws_access_key_id = aws_access_key_id ,
199- aws_secret_access_key = aws_secret_access_key
200+ aws_secret_access_key = aws_secret_access_key ,
201+ region_name = region
200202 )
201203
202204 json_data = "["
@@ -232,8 +234,28 @@ def createPlan(self):
232234
233235 admin = Administrator .objects .get (pk = userID )
234236
237+ ## What to backup
238+
239+ WTB = {}
240+ try :
241+ WTB ['data' ] = int (self .data ['data' ])
242+ except :
243+ WTB ['data' ] = 0
244+
245+ try :
246+ WTB ['databases' ] = int (self .data ['databases' ])
247+ except :
248+ WTB ['databases' ] = 0
249+
250+ try :
251+ WTB ['emails' ] = int (self .data ['emails' ])
252+ except :
253+ WTB ['emails' ] = 0
254+
255+ ###
256+
235257 newPlan = BackupPlan (owner = admin , name = self .data ['planName' ].replace (' ' , '' ), freq = self .data ['frequency' ],
236- retention = self .data ['retenion' ], bucket = self .data ['bucketName' ])
258+ retention = self .data ['retenion' ], bucket = self .data ['bucketName' ], config = json . dumps ( WTB ) )
237259 newPlan .save ()
238260
239261 for items in self .data ['websitesInPlan' ]:
@@ -263,12 +285,16 @@ def fetchBackupPlans(self):
263285 checker = 0
264286
265287 for plan in admin .backupplan_set .all ():
288+ config = json .loads (plan .config )
266289 dic = {
267290 'name' : plan .name ,
268291 'bucket' : plan .bucket ,
269292 'freq' : plan .freq ,
270293 'retention' : plan .retention ,
271294 'lastRun' : plan .lastRun ,
295+ 'data' : config ['data' ],
296+ 'databases' : config ['databases' ],
297+ 'emails' : config ['emails' ],
272298 }
273299
274300 if checker == 0 :
@@ -374,9 +400,28 @@ def savePlanChanges(self):
374400
375401 changePlan = BackupPlan .objects .get (name = self .data ['planName' ])
376402
403+ ## What to backup
404+
405+ WTB = {}
406+ try :
407+ WTB ['data' ] = int (self .data ['data' ])
408+ except :
409+ WTB ['data' ] = 0
410+
411+ try :
412+ WTB ['databases' ] = int (self .data ['databases' ])
413+ except :
414+ WTB ['databases' ] = 0
415+
416+ try :
417+ WTB ['emails' ] = int (self .data ['emails' ])
418+ except :
419+ WTB ['emails' ] = 0
420+
377421 changePlan .bucket = self .data ['bucketName' ]
378422 changePlan .freq = self .data ['frequency' ]
379423 changePlan .retention = self .data ['retention' ]
424+ changePlan .config = json .dumps (WTB )
380425
381426 changePlan .save ()
382427
@@ -478,15 +523,17 @@ def forceRunAWSBackup(self):
478523 try :
479524
480525 plan = BackupPlan .objects .get (name = self .data ['planName' ])
526+ logging .writeToFile (plan .config )
481527 bucketName = plan .bucket .strip ('\n ' ).strip (' ' )
482528 runTime = time .strftime ("%d:%m:%Y" )
483529
484- aws_access_key_id , aws_secret_access_key = self .fetchAWSKeys ()
530+ aws_access_key_id , aws_secret_access_key , region = self .fetchAWSKeys ()
485531
486532 client = boto3 .client (
487533 's3' ,
488534 aws_access_key_id = aws_access_key_id ,
489- aws_secret_access_key = aws_secret_access_key
535+ aws_secret_access_key = aws_secret_access_key ,
536+ #region_name=region
490537 )
491538
492539
@@ -533,25 +580,40 @@ def forceRunAWSBackup(self):
533580 BackupLogs (owner = plan , level = 'INFO' , timeStamp = time .strftime ("%b %d %Y, %H:%M:%S" ),
534581 msg = 'Starting backup process..' ).save ()
535582
583+ PlanConfig = json .loads (plan .config )
584+
536585 for items in plan .websitesinplan_set .all ():
537- result = self .createBackup (items .domain )
538- if result [0 ]:
539- key = plan .name + '/' + runTime + '/' + result [1 ].split ('/' )[- 1 ] + ".tar.gz"
586+
587+ from plogical .backupUtilities import backupUtilities
588+ tempStatusPath = "/home/cyberpanel/" + str (randint (1000 , 9999 ))
589+ extraArgs = {}
590+ extraArgs ['domain' ] = items .domain
591+ extraArgs ['tempStatusPath' ] = tempStatusPath
592+ extraArgs ['data' ] = PlanConfig ['data' ]
593+ extraArgs ['emails' ] = PlanConfig ['emails' ]
594+ extraArgs ['databases' ] = PlanConfig ['databases' ]
595+ bu = backupUtilities (extraArgs )
596+ result = bu .CloudBackups ()
597+
598+ finalResult = open (tempStatusPath , 'r' ).read ()
599+
600+ if result [0 ] == 1 :
601+ key = plan .name + '/' + runTime + '/' + result [1 ]
540602 client .upload_file (
541- result [1 ] + ".tar.gz" ,
603+ result [1 ],
542604 bucketName ,
543605 key ,
544606 Config = config ,
545607 )
546608
547- command = 'rm -f ' + result [1 ] + ".tar.gz"
609+ command = 'rm -f ' + result [1 ]
548610 ProcessUtilities .executioner (command )
549611
550612 BackupLogs (owner = plan , level = 'INFO' , timeStamp = time .strftime ("%b %d %Y, %H:%M:%S" ),
551613 msg = 'Backup successful for ' + items .domain + '.' ).save ()
552614 else :
553615 BackupLogs (owner = plan , level = 'ERROR' , timeStamp = time .strftime ("%b %d %Y, %H:%M:%S" ),
554- msg = 'Backup failed for ' + items .domain + '. Error: ' + result [ 1 ] ).save ()
616+ msg = 'Backup failed for ' + items .domain + '. Error: ' + finalResult ).save ()
555617
556618 plan .lastRun = runTime
557619 plan .save ()
0 commit comments