Skip to content

Commit

Permalink
bug fix: inc backups
Browse files Browse the repository at this point in the history
  • Loading branch information
usmannasir committed Dec 16, 2019
1 parent db444c7 commit fde41d4
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 92 deletions.
2 changes: 1 addition & 1 deletion IncBackups/IncBackupsControl.py
Original file line number Diff line number Diff line change
Expand Up @@ -718,7 +718,7 @@ def createBackup(self):
if not os.path.exists(self.passwordFile):
password = randomPassword.generate_pass()
command = 'echo "%s" > %s' % (password, self.passwordFile)
ProcessUtilities.executioner(command, self.website.externalApp)
ProcessUtilities.executioner(command, self.website.externalApp, True)

command = 'chmod 600 %s' % (self.passwordFile)
ProcessUtilities.executioner(command)
Expand Down
90 changes: 4 additions & 86 deletions IncBackups/IncScheduler.py
Original file line number Diff line number Diff line change
@@ -1,98 +1,16 @@
#!/usr/local/CyberCP/bin/python2
import os
import os.path
import argparse
import sys
sys.path.append('/usr/local/CyberCP')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")

import django
try:
django.setup()
except:
pass
from IncBackupsControl import IncJobs
from IncBackups.models import BackupJob
from random import randint
import argparse
try:
from plogical.virtualHostUtilities import virtualHostUtilities
from plogical.mailUtilities import mailUtilities
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
except:
pass

class IncScheduler():
logPath = '/home/cyberpanel/incbackuplogs'

@staticmethod
def startBackup(type):
try:
logging.statusWriter(IncScheduler.logPath, 'Starting Incremental Backup job..', 1)
tempPath = "/home/cyberpanel/" + str(randint(1000, 9999))
for job in BackupJob.objects.all():
logging.statusWriter(IncScheduler.logPath, 'Job Description:\n\n Destination: %s, Frequency: %s.\n ' % (job.destination, job.frequency), 1)
if job.frequency == type:
for web in job.jobsites_set.all():
logging.statusWriter(IncScheduler.logPath, 'Backing up %s.' % (web.website), 1)
extraArgs = {}
extraArgs['website'] = web.website
extraArgs['tempPath'] = tempPath
extraArgs['backupDestinations'] = job.destination

if job.websiteData == 1:
extraArgs['websiteData'] = True
else:
extraArgs['websiteData'] = False

if job.websiteDatabases == 1:
extraArgs['websiteDatabases'] = True
else:
extraArgs['websiteDatabases'] = False

if job.websiteDataEmails == 1:
extraArgs['websiteEmails'] = True
else:
extraArgs['websiteEmails'] = False

extraArgs['websiteSSLs'] = False

startJob = IncJobs('createBackup', extraArgs)
startJob.start()

### Checking status

while True:
if os.path.exists(tempPath):
result = open(tempPath, 'r').read()

if result.find("Completed") > -1:

### Removing Files

os.remove(tempPath)

logging.statusWriter(IncScheduler.logPath, 'Backed up %s.' % (web.website), 1)
break
elif result.find("[5009]") > -1:
## removing status file, so that backup can re-runn
try:
os.remove(tempPath)
except:
pass

logging.statusWriter(IncScheduler.logPath, 'Failed backup for %s, error: %s.' % (web.website, result), 1)
break
except BaseException, msg:
logging.writeToFile(str(msg))

from plogical.processUtilities import ProcessUtilities

def main():

parser = argparse.ArgumentParser(description='CyberPanel Installer')
parser.add_argument('function', help='Specific a function to call!')
args = parser.parse_args()

IncScheduler.startBackup(args.function)
command = '/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py %s' % (args.function)
ProcessUtilities.normalExecutioner(command)


if __name__ == "__main__":
Expand Down
19 changes: 19 additions & 0 deletions IncBackups/templates/IncBackups/backupSchedule.html
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,25 @@ <h3 class="title-hero">
</tr>
</tbody>
</table>
<div class="row">

<div class="col-sm-4 col-sm-offset-8">

<nav aria-label="Page navigation">
<ul class="pagination">

<li ng-repeat="page in pagination"
ng-click="getFurtherWebsitesFromDB($index+1)" id="webPages"><a
href="">{$ $index + 1 $}</a></li>

</ul>
</nav>


</div>


</div>
</div>
</div>

Expand Down
96 changes: 96 additions & 0 deletions plogical/IncScheduler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#!/usr/local/CyberCP/bin/python2
import os.path
import sys
sys.path.append('/usr/local/CyberCP')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
import django
django.setup()
from IncBackups.IncBackupsControl import IncJobs
from IncBackups.models import BackupJob
from random import randint
import argparse
try:
from plogical.virtualHostUtilities import virtualHostUtilities
from plogical.mailUtilities import mailUtilities
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
except:
pass

class IncScheduler():
logPath = '/home/cyberpanel/incbackuplogs'

@staticmethod
def startBackup(type):
try:
logging.statusWriter(IncScheduler.logPath, 'Starting Incremental Backup job..', 1)
tempPath = "/home/cyberpanel/" + str(randint(1000, 9999))
for job in BackupJob.objects.all():
logging.statusWriter(IncScheduler.logPath, 'Job Description:\n\n Destination: %s, Frequency: %s.\n ' % (job.destination, job.frequency), 1)
if job.frequency == type:
for web in job.jobsites_set.all():
logging.statusWriter(IncScheduler.logPath, 'Backing up %s.' % (web.website), 1)

extraArgs = {}
extraArgs['website'] = web.website
extraArgs['tempPath'] = tempPath
extraArgs['backupDestinations'] = job.destination

if job.websiteData == 1:
extraArgs['websiteData'] = True
else:
extraArgs['websiteData'] = False

if job.websiteDatabases == 1:
extraArgs['websiteDatabases'] = True
else:
extraArgs['websiteDatabases'] = False

if job.websiteDataEmails == 1:
extraArgs['websiteEmails'] = True
else:
extraArgs['websiteEmails'] = False

extraArgs['websiteSSLs'] = False

startJob = IncJobs('createBackup', extraArgs)
startJob.start()

### Checking status

while True:
if os.path.exists(tempPath):
result = open(tempPath, 'r').read()

if result.find("Completed") > -1:

### Removing Files

os.remove(tempPath)

logging.statusWriter(IncScheduler.logPath, 'Backed up %s.' % (web.website), 1)
break
elif result.find("[5009]") > -1:
## removing status file, so that backup can re-runn
try:
os.remove(tempPath)
except:
pass

logging.statusWriter(IncScheduler.logPath, 'Failed backup for %s, error: %s.' % (web.website, result), 1)
break

except BaseException, msg:
logging.writeToFile(str(msg))


def main():

parser = argparse.ArgumentParser(description='CyberPanel Installer')
parser.add_argument('function', help='Specific a function to call!')
args = parser.parse_args()

IncScheduler.startBackup(args.function)


if __name__ == "__main__":
main()
14 changes: 9 additions & 5 deletions plogical/processUtilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,13 @@ def stopLitespeed():
logging.writeToFile(str(msg) + "[stopLitespeed]")

@staticmethod
def normalExecutioner(command):
def normalExecutioner(command, shell=False):
try:
res = subprocess.call(shlex.split(command))
if shell == False:
res = subprocess.call(shlex.split(command))
else:
res = subprocess.call(command, shell=shell)

if res == 0:
return 1
else:
Expand Down Expand Up @@ -217,10 +221,10 @@ def sendCommand(command, user=None):
return "0" + str(msg)

@staticmethod
def executioner(command, user=None):
def executioner(command, user=None, shell=False):
try:
if getpass.getuser() == 'root':
ProcessUtilities.normalExecutioner(command)
ProcessUtilities.normalExecutioner(command, shell)
return 1

ret = ProcessUtilities.sendCommand(command, user)
Expand All @@ -241,7 +245,7 @@ def executioner(command, user=None):
def outputExecutioner(command, user=None):
try:
if getpass.getuser() == 'root':
return subprocess.check_output(shlex.split(command))
return subprocess.check_output(command, shell=True)

if type(command) == str or type(command) == unicode:
pass
Expand Down

0 comments on commit fde41d4

Please sign in to comment.