mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 22:06:05 +01:00
backuprestore0.2
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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 }}"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user