backuprestore0.2

This commit is contained in:
Hassan Hashmi
2022-06-13 13:47:44 +05:00
parent ffd8bf7c21
commit a59e02fb30
5 changed files with 884 additions and 648 deletions

View File

@@ -2263,12 +2263,13 @@ $parameters = array(
try:
from managePHP.phpManager import PHPManager
import json
logging.writeToFile("WPCreateBackup ....... start" )
self.tempStatusPath = self.extraArgs['tempStatusPath']
logging.statusWriter(self.tempStatusPath, 'Creating BackUp...,10')
wpsite = WPSites.objects.get(pk=self.extraArgs['WPid'])
Adminobj = Administrator.objects.get(pk=self.extraArgs['adminID'])
Backuptype = self.extraArgs['Backuptype']
website = wpsite.owner
PhpVersion = website.phpSelection
@@ -2280,6 +2281,7 @@ $parameters = array(
php = PHPManager.getPHPString(PhpVersion)
FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
if Backuptype == "1":
logging.statusWriter(self.tempStatusPath, 'Getting database...,20')
@@ -2331,7 +2333,7 @@ $parameters = array(
config['Webpackage_id'] = website.package_id
config['Webadmin_id'] = website.admin_id
config['name'] = 'backup-' + websitedomain + "-" + time.strftime("%m.%d.%Y_%H-%M-%S")
config['Backuptype'] = "Both Website and DataBase"
###############Create config.Json file
#command = "sudo -u %s touch /home/cyberpanel/config.json" % (VHuser)
#ProcessUtilities.executioner(command)
@@ -2393,6 +2395,204 @@ $parameters = array(
result = ProcessUtilities.outputExecutioner(command)
backupobj = WPSitesBackup(owner=Adminobj, WPSiteID=wpsite.id, WebsiteID=website.id, config=json_object)
backupobj.save()
if os.path.exists(ProcessUtilities.debugPath):
logging.writeToFile(result)
command = f'rm -rf {self.tempPath}'
ProcessUtilities.executioner(command)
logging.statusWriter(self.tempStatusPath, 'Completed.[200]')
return 1, f"/home/backup/{config['name']}.tar.gz"
elif Backuptype == "2":
###Onlye website data
### Create secure folder
ACLManager.CreateSecureDir()
RandomPath = str(randint(1000, 9999))
self.tempPath = '%s/%s' % ('/usr/local/CyberCP/tmp', RandomPath)
command = f'mkdir -p {self.tempPath}'
ProcessUtilities.executioner(command)
command = f'chown -R {wpsite.owner.externalApp}:{wpsite.owner.externalApp} {self.tempPath}'
ProcessUtilities.executioner(command)
### Make directory for backup
logging.statusWriter(self.tempStatusPath, 'Creating Backup Directory...,40')
command = f"mkdir -p {self.tempPath}/public_html"
ProcessUtilities.executioner(command, VHuser)
config = {}
config['WPtitle'] = wpsite.title
config['WPAutoUpdates'] = wpsite.AutoUpdates
config['WPFinalURL'] = wpsite.FinalURL
config['WPPluginUpdates'] = wpsite.PluginUpdates
config['WPThemeUpdates'] = wpsite.ThemeUpdates
config['WPowner_id'] = wpsite.owner_id
config["WPsitepath"] = wpsite.path
config["DatabaseName"] = "Not availabe"
config["DatabaseUser"] = "Not availabe"
config['RandomPath'] = RandomPath
config["WebDomain"] = websitedomain
config['WebadminEmail'] = website.adminEmail
config['WebphpSelection'] = website.phpSelection
config['Webssl'] = website.ssl
config['Webstate'] = website.state
config['WebVHuser'] = website.externalApp
config['Webpackage_id'] = website.package_id
config['Webadmin_id'] = website.admin_id
config['name'] = 'backup-' + websitedomain + "-" + time.strftime("%m.%d.%Y_%H-%M-%S")
config['Backuptype'] = "Website Backup"
###############Create config.Json file
# command = "sudo -u %s touch /home/cyberpanel/config.json" % (VHuser)
# ProcessUtilities.executioner(command)
###### write into config
json_object = json.dumps(config, indent=4)
configPath = "/home/cyberpanel/" + str(randint(1000, 9999))
file = open(configPath, "w")
file.write(json_object)
file.close()
os.chmod(configPath, 0o600)
command = f"cp -R {configPath} {self.tempPath}"
ProcessUtilities.executioner(command, VHuser)
command = f"rm -r {configPath}"
ProcessUtilities.executioner(command)
logging.statusWriter(self.tempStatusPath, 'Copying website data.....,50')
############## Copy Public_htnl to backup
command = "sudo -u %s cp -R %s* %s/public_html" % (VHuser, WPsitepath, self.tempPath)
result = ProcessUtilities.outputExecutioner(command)
if os.path.exists(ProcessUtilities.debugPath):
logging.writeToFile(result)
command = "sudo -u %s cp -R %s.[^.]* %s/public_html/" % (VHuser, WPsitepath, self.tempPath)
result = ProcessUtilities.outputExecutioner(command)
if os.path.exists(ProcessUtilities.debugPath):
logging.writeToFile(result)
######## Zip backup directory
logging.statusWriter(self.tempStatusPath, 'Compressing backup files.....,80')
websitepath = "/home/%s" % websitedomain
FinalZipPath = '%s/%s.zip' % (websitepath, RandomPath)
command = 'mkdir -p /home/backup/'
ProcessUtilities.executioner(command)
command = f"tar -czvf /home/backup/{config['name']}.tar.gz -P {self.tempPath}"
result = ProcessUtilities.outputExecutioner(command)
backupobj = WPSitesBackup(owner=Adminobj, WPSiteID=wpsite.id, WebsiteID=website.id,
config=json_object)
backupobj.save()
if os.path.exists(ProcessUtilities.debugPath):
logging.writeToFile(result)
command = f'rm -rf {self.tempPath}'
ProcessUtilities.executioner(command)
logging.statusWriter(self.tempStatusPath, 'Completed.[200]')
return 1, f"/home/backup/{config['name']}.tar.gz"
else:
###only backup of data base
logging.statusWriter(self.tempStatusPath, 'Getting database...,20')
command = f'{FinalPHPPath} -d error_reporting=0 /usr/bin/wp config get DB_NAME --skip-plugins --skip-themes --path={WPsitepath}'
stdoutput = ProcessUtilities.outputExecutioner(command, VHuser)
DataBaseName = stdoutput.rstrip("\n")
command = f'{FinalPHPPath} -d error_reporting=0 /usr/bin/wp config get DB_USER --skip-plugins --skip-themes --path={WPsitepath}'
stdoutput = ProcessUtilities.outputExecutioner(command, VHuser)
DataBaseUser = stdoutput.rstrip("\n")
### Create secure folder
ACLManager.CreateSecureDir()
RandomPath = str(randint(1000, 9999))
self.tempPath = '%s/%s' % ('/usr/local/CyberCP/tmp', RandomPath)
command = f'mkdir -p {self.tempPath}'
ProcessUtilities.executioner(command)
command = f'chown -R {wpsite.owner.externalApp}:{wpsite.owner.externalApp} {self.tempPath}'
ProcessUtilities.executioner(command)
### Make directory for backup
logging.statusWriter(self.tempStatusPath, 'Creating Backup Directory...,40')
config = {}
config['WPtitle'] = wpsite.title
config['WPAutoUpdates'] = wpsite.AutoUpdates
config['WPFinalURL'] = wpsite.FinalURL
config['WPPluginUpdates'] = wpsite.PluginUpdates
config['WPThemeUpdates'] = wpsite.ThemeUpdates
config['WPowner_id'] = wpsite.owner_id
config["WPsitepath"] = wpsite.path
config["DatabaseName"] = DataBaseName
config["DatabaseUser"] = DataBaseUser
config['RandomPath'] = RandomPath
config["WebDomain"] = websitedomain
config['WebadminEmail'] = website.adminEmail
config['WebphpSelection'] = website.phpSelection
config['Webssl'] = website.ssl
config['Webstate'] = website.state
config['WebVHuser'] = website.externalApp
config['Webpackage_id'] = website.package_id
config['Webadmin_id'] = website.admin_id
config['name'] = 'backup-' + websitedomain + "-" + time.strftime("%m.%d.%Y_%H-%M-%S")
config['Backuptype'] = "DataBase Backup"
###############Create config.Json file
# command = "sudo -u %s touch /home/cyberpanel/config.json" % (VHuser)
# ProcessUtilities.executioner(command)
###### write into config
json_object = json.dumps(config, indent=4)
configPath = "/home/cyberpanel/" + str(randint(1000, 9999))
file = open(configPath, "w")
file.write(json_object)
file.close()
os.chmod(configPath, 0o600)
command = f"cp -R {configPath} {self.tempPath}"
ProcessUtilities.executioner(command, VHuser)
command = f"rm -r {configPath}"
ProcessUtilities.executioner(command)
logging.statusWriter(self.tempStatusPath, 'Copying DataBase.....,70')
##### SQLDUMP database into new directory
command = "mysqldump %s --result-file %s/%s.sql" % (DataBaseName, self.tempPath, DataBaseName)
result = ProcessUtilities.outputExecutioner(command)
if os.path.exists(ProcessUtilities.debugPath):
logging.writeToFile(result)
######## Zip backup directory
logging.statusWriter(self.tempStatusPath, 'Compressing backup files.....,80')
websitepath = "/home/%s" % websitedomain
FinalZipPath = '%s/%s.zip' % (websitepath, RandomPath)
command = 'mkdir -p /home/backup/'
ProcessUtilities.executioner(command)
command = f"tar -czvf /home/backup/{config['name']}.tar.gz -P {self.tempPath}"
result = ProcessUtilities.outputExecutioner(command)
backupobj = WPSitesBackup(owner=Adminobj, WPSiteID=wpsite.id, WebsiteID=website.id, config=json_object)
backupobj.save()
if os.path.exists(ProcessUtilities.debugPath):
@@ -2440,9 +2640,14 @@ $parameters = array(
WebOwnerobj = Administrator.objects.get(pk=config['Webadmin_id'])
WebOwner = WebOwnerobj.userName
#####Check Backup Type
BackupType = config['Backuptype']
if BackupType == 'DataBase Backup':
pass
elif BackupType == 'Website Backup':
pass
else:
#### Methode of Restoring
############## Existing site
if (DomainName == "" and int(self.extraArgs['DesSiteID']) != -1):
@@ -2455,14 +2660,13 @@ $parameters = array(
#### Check If sub dir in web site
try:
abc = newWPpath.split("/")
newpath = abc[4]
oldpath = config['WPsitepath']
abc = oldpath.split("/")
pathexta = abc[4]
home = "0"
except BaseException as msg:
home = "1"
### get WPsite Database name and usr
php = PHPManager.getPHPString(PhpVersion)
FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
@@ -2510,17 +2714,25 @@ $parameters = array(
ProcessUtilities.outputExecutioner(command)
###first empty the Existing site phblichtml folder
command = "sudo -u %s rm -r %s/*"%(VHuser, newWPpath)
result = ProcessUtilities.outputExecutioner(command)
logging.statusWriter(self.tempStatusPath, 'Copying Data File...,50')
###Copy backup content to newsite
if home == "0":
unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/" % (self.tempPath, oldtemppath)
###make dir of sub folder in existing site
command = "sudo -u %s mkdir %s%s"%(VHuser, newWPpath, pathexta)
ProcessUtilities.executioner(command)
Webnewpath = str(newWPpath)+str(pathexta)
else:
unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/public_html/" % (self.tempPath, oldtemppath)
command = "sudo -u %s cp -R %s* %s" % (VHuser, unzippath, newWPpath)
Webnewpath = newWPpath
command = "sudo -u %s cp -R %s* %s" % (VHuser, unzippath, Webnewpath)
result = ProcessUtilities.outputExecutioner(command)
command = "sudo -u %s cp -R %s.[^.]* %s" % (VHuser, unzippath, Webnewpath)
result = ProcessUtilities.outputExecutioner(command)
@@ -2551,7 +2763,7 @@ $parameters = array(
command = 'sudo -u %s /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp search-replace --skip-plugins --skip-themes --allow-root --path=%s "https://www.%s" "http://%s"' % (VHuser, newWPpath, newurl, newurl)
ProcessUtilities.outputExecutioner(command)
##Remove temppath
# ##Remove temppath
command = f'rm -rf {self.tempPath}'
ProcessUtilities.executioner(command)
@@ -2559,8 +2771,6 @@ $parameters = array(
from plogical.installUtilities import installUtilities
installUtilities.reStartLiteSpeed()
############## New Site
elif(DomainName != "" and int(self.extraArgs['DesSiteID']) == -1):
###############Create New WordPressSite First
@@ -2580,13 +2790,11 @@ $parameters = array(
DataToPass['package'] = packegs
try:
oldpath = config['WPsitepath']
logging.writeToFile("old path..:%s"%oldpath)
abc = oldpath.split("/")
newpath = abc[4]
newurl = "%s/%s"%(DomainName,newpath)
home = "0"
except BaseException as msg:
logging.writeToFile("path error: %s"%msg)
newpath = ""
newurl = DomainName
home = "1"
@@ -2674,9 +2882,6 @@ $parameters = array(
VHuser, self.tempPath, BackUpFileName, self.tempPath)
ProcessUtilities.outputExecutioner(command)
###first empty the Existing site phblichtml folder
command = "sudo -u %s rm -r %s/*" % (VHuser, newWPpath)
result = ProcessUtilities.outputExecutioner(command)
logging.statusWriter(self.tempStatusPath, 'Copying Data File...,60')
###Copy backup content to newsite
@@ -2688,6 +2893,10 @@ $parameters = array(
command = "sudo -u %s cp -R %s* %s" % (VHuser, unzippath, newWPpath)
result = ProcessUtilities.outputExecutioner(command)
command = "sudo -u %s cp -R %s.[^.]* %s" % (VHuser, unzippath, newWPpath)
result = ProcessUtilities.outputExecutioner(command)
# dump Mysql file in unzippath path
unzippath2 = "%s/ab/usr/local/CyberCP/tmp/%s/%s" % (self.tempPath, oldtemppath, DumpFileName)
command = "mysql -u root %s < %s" % (Finaldbname, unzippath2)

View File

@@ -1429,6 +1429,7 @@ app.controller('WPsiteHome', function ($scope, $http, $timeout, $compile, $windo
$scope.currentStatus = "Starting creation Backups..";
var data = {
WPid: $('#WPid').html(),
Backuptype: $('#backuptype').val()
}
var url = "/websites/WPCreateBackup";

View File

@@ -101,6 +101,8 @@
</th>
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">Website
</th>
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">BackUp Tpye
</th>
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">Action
</th>
@@ -119,6 +121,9 @@
<td style="padding: 13px;">
{{ sub.title }}
</td>
<td style="padding: 13px;">
{{ sub.Backuptype }}
</td>
<td style="padding: 13px;">
<a href="{% url 'RestoreHome' %}?BackupID={{ sub.id }}"

View File

@@ -365,6 +365,18 @@
<div class="tab-pane" id="tab5">
<h2>Create Backup Now</h2>
<div class="col-sm-12" style="margin-top: 1%">
<div class="col-sm-12">
<label class="col-sm-3 control-label">{% trans "Select Backip type" %}</label>
<div class="col-sm-6">
<select id="backuptype" class="form-control">
<option value="1">Website and DataBase Both</option>
<option value="2">Only Website Data</option>
<option value="3">Only DataBase</option>
</select>
</div>
</div>
<div class="col-sm-12 center-div" style="margin-top: 4%">
<button id="createbackupbutton" type="button"
ng-click="CreateBackup()"
class="btn btn-primary btn-lg center-div">{% trans "Create Backup" %}</button>

View File

@@ -176,12 +176,19 @@ class WebsiteManager:
try:
wpsite = WPSites.objects.get(pk=sub.WPSiteID)
web = wpsite.title
config = sub.config
conf = json.loads(config)
Backuptype = conf['Backuptype']
except:
web = "Website Not Found"
Backuptype = "Backup type not exists"
Data['job'].append({
'id': sub.id,
'title': web,
'Backuptype': Backuptype
})
@@ -752,6 +759,7 @@ class WebsiteManager:
admin = Administrator.objects.get(pk=userID)
WPManagerID = data['WPid']
Backuptype = data['Backuptype']
wpsite = WPSites.objects.get(pk=WPManagerID)
@@ -764,6 +772,7 @@ class WebsiteManager:
extraArgs = {}
extraArgs['adminID'] = admin.pk
extraArgs['WPid'] = WPManagerID
extraArgs['Backuptype'] = Backuptype
extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))