mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 05:45:59 +01:00
bug fix: inc backups
This commit is contained in:
@@ -718,7 +718,7 @@ class IncJobs(multi.Thread):
|
|||||||
if not os.path.exists(self.passwordFile):
|
if not os.path.exists(self.passwordFile):
|
||||||
password = randomPassword.generate_pass()
|
password = randomPassword.generate_pass()
|
||||||
command = 'echo "%s" > %s' % (password, self.passwordFile)
|
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)
|
command = 'chmod 600 %s' % (self.passwordFile)
|
||||||
ProcessUtilities.executioner(command)
|
ProcessUtilities.executioner(command)
|
||||||
|
|||||||
@@ -1,90 +1,7 @@
|
|||||||
#!/usr/local/CyberCP/bin/python2
|
import argparse
|
||||||
import os
|
|
||||||
import os.path
|
|
||||||
import sys
|
import sys
|
||||||
sys.path.append('/usr/local/CyberCP')
|
sys.path.append('/usr/local/CyberCP')
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
|
from plogical.processUtilities import ProcessUtilities
|
||||||
|
|
||||||
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))
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
@@ -92,7 +9,8 @@ def main():
|
|||||||
parser.add_argument('function', help='Specific a function to call!')
|
parser.add_argument('function', help='Specific a function to call!')
|
||||||
args = parser.parse_args()
|
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__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -135,6 +135,25 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
96
plogical/IncScheduler.py
Normal file
96
plogical/IncScheduler.py
Normal file
@@ -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()
|
||||||
@@ -87,9 +87,13 @@ class ProcessUtilities(multi.Thread):
|
|||||||
logging.writeToFile(str(msg) + "[stopLitespeed]")
|
logging.writeToFile(str(msg) + "[stopLitespeed]")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def normalExecutioner(command):
|
def normalExecutioner(command, shell=False):
|
||||||
try:
|
try:
|
||||||
|
if shell == False:
|
||||||
res = subprocess.call(shlex.split(command))
|
res = subprocess.call(shlex.split(command))
|
||||||
|
else:
|
||||||
|
res = subprocess.call(command, shell=shell)
|
||||||
|
|
||||||
if res == 0:
|
if res == 0:
|
||||||
return 1
|
return 1
|
||||||
else:
|
else:
|
||||||
@@ -217,10 +221,10 @@ class ProcessUtilities(multi.Thread):
|
|||||||
return "0" + str(msg)
|
return "0" + str(msg)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def executioner(command, user=None):
|
def executioner(command, user=None, shell=False):
|
||||||
try:
|
try:
|
||||||
if getpass.getuser() == 'root':
|
if getpass.getuser() == 'root':
|
||||||
ProcessUtilities.normalExecutioner(command)
|
ProcessUtilities.normalExecutioner(command, shell)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
ret = ProcessUtilities.sendCommand(command, user)
|
ret = ProcessUtilities.sendCommand(command, user)
|
||||||
@@ -241,7 +245,7 @@ class ProcessUtilities(multi.Thread):
|
|||||||
def outputExecutioner(command, user=None):
|
def outputExecutioner(command, user=None):
|
||||||
try:
|
try:
|
||||||
if getpass.getuser() == 'root':
|
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:
|
if type(command) == str or type(command) == unicode:
|
||||||
pass
|
pass
|
||||||
|
|||||||
Reference in New Issue
Block a user