From 16a862c92bde481526b597f884f2ac884c9274cc Mon Sep 17 00:00:00 2001
From: Hassan Hashmi <75794688+habbi-hb@users.noreply.github.com>
Date: Wed, 29 Jun 2022 13:35:53 +0500
Subject: [PATCH 1/5] restoreremotebackupupdate
---
plogical/IncScheduler.py | 1 +
.../websiteFunctions/websiteFunctions.js | 63 ++++++++++++++-
.../websiteFunctions/BackupfileConfig.html | 77 ++++++++++++++++++-
websiteFunctions/urls.py | 1 +
websiteFunctions/views.py | 21 +++++
websiteFunctions/website.py | 31 +++++++-
6 files changed, 190 insertions(+), 4 deletions(-)
diff --git a/plogical/IncScheduler.py b/plogical/IncScheduler.py
index 479a0840f..40e0ca245 100644
--- a/plogical/IncScheduler.py
+++ b/plogical/IncScheduler.py
@@ -1090,6 +1090,7 @@ Automatic backup failed for %s on %s.
obj.lastrun = time.time()
obj.save()
except BaseException as msg:
+ print("Error in Sites:%s"%str(msg))
continue
except BaseException as msg:
print("Error: [RemoteBackup]: %s"%str(msg))
diff --git a/websiteFunctions/static/websiteFunctions/websiteFunctions.js b/websiteFunctions/static/websiteFunctions/websiteFunctions.js
index c743a525d..7b10360e8 100755
--- a/websiteFunctions/static/websiteFunctions/websiteFunctions.js
+++ b/websiteFunctions/static/websiteFunctions/websiteFunctions.js
@@ -2049,7 +2049,7 @@ app.controller('RemoteBackupConfig', function ($scope, $http, $timeout, $window)
});
-
+var UpdatescheduleID;
app.controller('BackupSchedule', function ($scope, $http, $timeout, $window) {
$scope.BackupScheduleLoading = true;
$scope.SaveBackupSchedule = function () {
@@ -2108,8 +2108,67 @@ app.controller('BackupSchedule', function ($scope, $http, $timeout, $window) {
}
+ };
+
+
+
+
+ $scope.getupdateid = function (ID) {
+ UpdatescheduleID = ID;
}
+ $scope.UpdateRemoteschedules = function () {
+ $scope.RemoteBackupLoading = false;
+ var Frequency = $scope.RemoteFrequency;
+ var fretention = $scope.RemoteFileretention;
+
+ var data = {
+ ScheduleID:UpdatescheduleID,
+ Frequency: Frequency,
+ FileRetention: fretention
+ }
+ var url = "/websites/UpdateRemoteschedules";
+
+
+ var config = {
+ headers: {
+ 'X-CSRFToken': getCookie('csrftoken')
+ }
+ };
+ $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
+
+
+ function ListInitialDatas(response) {
+ $scope.RemoteBackupLoading = true;
+ if (response.data.status === 1) {
+ new PNotify({
+ title: 'Success!',
+ text: 'Successfully Updated!.',
+ type: 'success'
+ });
+ location.reload();
+
+
+ } else {
+ new PNotify({
+ title: 'Error!',
+ text: response.data.error_message,
+ type: 'error'
+ });
+ }
+ }
+
+ function cantLoadInitialDatas(response) {
+ $scope.RemoteBackupLoading = true;
+ new PNotify({
+ title: 'Operation Failed!',
+ text: response.data.error_message,
+ type: 'error'
+ });
+
+
+ }
+ };
$scope.AddWPsiteforRemoteBackup = function () {
$scope.RemoteBackupLoading = false;
@@ -2163,7 +2222,7 @@ app.controller('BackupSchedule', function ($scope, $http, $timeout, $window) {
}
- }
+ };
});
/* Java script code to create account */
app.controller('createWebsite', function ($scope, $http, $timeout, $window) {
diff --git a/websiteFunctions/templates/websiteFunctions/BackupfileConfig.html b/websiteFunctions/templates/websiteFunctions/BackupfileConfig.html
index c57fb4064..8824c3035 100644
--- a/websiteFunctions/templates/websiteFunctions/BackupfileConfig.html
+++ b/websiteFunctions/templates/websiteFunctions/BackupfileConfig.html
@@ -27,6 +27,7 @@
+
{{ RemoteConfigID }}
@@ -86,6 +87,10 @@
| {{ sub.id }} |
{{ sub.Name }} |
+ {{ sub.Frequency }} |
+ {{ sub.Retention }} |
+ {{ sub.LastRun }} |
{{ sub.RemoteConfiguration }} |
+
Add WordPress Sites
@@ -117,6 +130,68 @@
+
+
diff --git a/websiteFunctions/urls.py b/websiteFunctions/urls.py
index 9d812686a..6a97fe0df 100755
--- a/websiteFunctions/urls.py
+++ b/websiteFunctions/urls.py
@@ -52,6 +52,7 @@ urlpatterns = [
url(r'^SaveBackupConfig', views.SaveBackupConfig, name='SaveBackupConfig'),
url(r'^SaveBackupSchedule', views.SaveBackupSchedule, name='SaveBackupSchedule'),
url(r'^AddWPsiteforRemoteBackup', views.AddWPsiteforRemoteBackup, name='AddWPsiteforRemoteBackup'),
+ url(r'^UpdateRemoteschedules', views.UpdateRemoteschedules, name='UpdateRemoteschedules'),
diff --git a/websiteFunctions/views.py b/websiteFunctions/views.py
index 96bc48d33..7c93504c0 100755
--- a/websiteFunctions/views.py
+++ b/websiteFunctions/views.py
@@ -502,6 +502,27 @@ def AddWPsiteforRemoteBackup(request):
return redirect(loadLoginPage)
+def UpdateRemoteschedules(request):
+ try:
+ userID = request.session['userID']
+
+ result = pluginManager.preWebsiteCreation(request)
+ if result != 200:
+ return result
+
+ wm = WebsiteManager()
+ coreResult = wm.UpdateRemoteschedules(userID, json.loads(request.body))
+
+ result = pluginManager.postWebsiteCreation(request, coreResult)
+ if result != 200:
+ return result
+
+ return coreResult
+
+ except KeyError:
+ return redirect(loadLoginPage)
+
+
def installwpcore(request):
try:
userID = request.session['userID']
diff --git a/websiteFunctions/website.py b/websiteFunctions/website.py
index 30799a0eb..928e471c4 100755
--- a/websiteFunctions/website.py
+++ b/websiteFunctions/website.py
@@ -254,10 +254,15 @@ class WebsiteManager:
allsechedule = RemoteBackupSchedule.objects.filter(RemoteBackupConfig=RemoteConfigobj)
Data['Backupschedule'] = []
for i in allsechedule:
+ lastrun = i.lastrun
+ LastRun = time.strftime('%Y-%m-%d', time.localtime(float(lastrun)))
Data['Backupschedule'].append({
'id': i.pk,
'Name': i.Name,
- 'RemoteConfiguration': i.RemoteBackupConfig.configtype
+ 'RemoteConfiguration': i.RemoteBackupConfig.configtype,
+ 'Retention': i.fileretention,
+ 'Frequency': i.timeintervel,
+ 'LastRun': LastRun
})
proc = httpProc(request, 'websiteFunctions/BackupfileConfig.html',
Data, 'createWebsite')
@@ -1241,6 +1246,30 @@ class WebsiteManager:
return HttpResponse(json_data)
+ def UpdateRemoteschedules(self, userID=None, data=None):
+ try:
+
+ currentACL = ACLManager.loadedACL(userID)
+ admin = Administrator.objects.get(pk=userID)
+ ScheduleID = data['ScheduleID']
+ Frequency = data['Frequency']
+ FileRetention = data['FileRetention']
+
+ scheduleobj = RemoteBackupSchedule.objects.get(pk=ScheduleID)
+ scheduleobj.timeintervel = Frequency
+ scheduleobj.fileretention = FileRetention
+ scheduleobj.save()
+
+ data_ret = {'status': 1, 'error_message': 'None',}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
+ except BaseException as msg:
+ data_ret = {'status': 0, 'error_message': str(msg)}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
+
def installwpcore(self, userID=None, data=None):
try:
From 96bd74d1e5866990da2a8b5320c36365c9eefc8d Mon Sep 17 00:00:00 2001
From: Hassan Hashmi <75794688+habbi-hb@users.noreply.github.com>
Date: Wed, 29 Jun 2022 15:41:05 +0500
Subject: [PATCH 2/5] s3keysaved
---
.../websiteFunctions/websiteFunctions.js | 159 ++++++++++++------
.../websiteFunctions/RemoteBackupConfig.html | 80 ++++++---
websiteFunctions/website.py | 63 ++++++-
3 files changed, 220 insertions(+), 82 deletions(-)
diff --git a/websiteFunctions/static/websiteFunctions/websiteFunctions.js b/websiteFunctions/static/websiteFunctions/websiteFunctions.js
index 7b10360e8..7542b08a8 100755
--- a/websiteFunctions/static/websiteFunctions/websiteFunctions.js
+++ b/websiteFunctions/static/websiteFunctions/websiteFunctions.js
@@ -1961,9 +1961,11 @@ app.controller('RestoreWPBackup', function ($scope, $http, $timeout, $window) {
function DeleteBackupConfigNow(url) {
window.location.href = url;
}
+
function DeleteRemoteBackupsiteNow(url) {
window.location.href = url;
}
+
function DeleteBackupfileConfigNow(url) {
window.location.href = url;
}
@@ -1972,15 +1974,47 @@ function DeleteBackupfileConfigNow(url) {
app.controller('RemoteBackupConfig', function ($scope, $http, $timeout, $window) {
$scope.RemoteBackupLoading = true;
$scope.SFTPBackUpdiv = true;
- $scope.S3backupdiv = true;
+
+ $scope.EndpointURLdiv = true;
+ $scope.Selectprovider = true;
+ $scope.S3keyNamediv = true;
+ $scope.Accesskeydiv = true;
+ $scope.SecretKeydiv = true;
$scope.SelectRemoteBackuptype = function () {
var val = $scope.RemoteBackuptype;
if (val == "SFTP") {
$scope.SFTPBackUpdiv = false;
- $scope.S3backupdiv = true;
- } else {
- $scope.S3backupdiv = false;
+ $scope.EndpointURLdiv = true;
+ $scope.Selectprovider = true;
+ $scope.S3keyNamediv = true;
+ $scope.Accesskeydiv = true;
+ $scope.SecretKeydiv = true;
+ } else if (val == "S3") {
+ $scope.EndpointURLdiv = true;
+ $scope.Selectprovider = false;
+ $scope.S3keyNamediv = false;
+ $scope.Accesskeydiv = false;
+ $scope.SecretKeydiv = false;
$scope.SFTPBackUpdiv = true;
+ } else {
+ $scope.RemoteBackupLoading = true;
+ $scope.SFTPBackUpdiv = true;
+
+ $scope.EndpointURLdiv = true;
+ $scope.Selectprovider = true;
+ $scope.S3keyNamediv = true;
+ $scope.Accesskeydiv = true;
+ $scope.SecretKeydiv = true;
+ }
+ }
+
+ $scope.SelectProvidertype = function () {
+ $scope.EndpointURLdiv = true;
+ var provider = $scope.Providervalue
+ if (provider == 'Backblaze') {
+ $scope.EndpointURLdiv = false;
+ } else {
+ $scope.EndpointURLdiv = true;
}
}
@@ -1991,59 +2025,81 @@ app.controller('RemoteBackupConfig', function ($scope, $http, $timeout, $window)
var Passwd = $scope.Password;
var path = $scope.path;
var type = $scope.RemoteBackuptype;
-
+ var Providervalue = $scope.Providervalue;
+ var data;
if (type == "SFTP") {
- var data = {
+ data = {
Hname: Hname,
Uname: Uname,
Passwd: Passwd,
path: path,
type: type
}
- var url = "/websites/SaveBackupConfig";
-
-
- var config = {
- headers: {
- 'X-CSRFToken': getCookie('csrftoken')
+ } else if (type == "S3") {
+ if (Providervalue == "Backblaze") {
+ data = {
+ S3keyname: $scope.S3keyName,
+ Provider: Providervalue,
+ AccessKey: $scope.Accesskey,
+ SecertKey: $scope.SecretKey,
+ EndUrl: $scope.EndpointURL,
+ type: type
}
- };
- $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
-
-
- function ListInitialDatas(response) {
- $scope.RemoteBackupLoading = true;
- if (response.data.status === 1) {
- new PNotify({
- title: 'Success!',
- text: 'Successfully Saved!.',
- type: 'success'
- });
- location.reload();
-
-
- } else {
- new PNotify({
- title: 'Error!',
- text: response.data.error_message,
- type: 'error'
- });
+ } else {
+ data = {
+ S3keyname: $scope.S3keyName,
+ Provider: Providervalue,
+ AccessKey: $scope.Accesskey,
+ SecertKey: $scope.SecretKey,
+ type: type
}
+
}
- function cantLoadInitialDatas(response) {
- $scope.RemoteBackupLoading = true;
+ }
+ var url = "/websites/SaveBackupConfig";
+
+
+ var config = {
+ headers: {
+ 'X-CSRFToken': getCookie('csrftoken')
+ }
+ };
+ $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
+
+
+ function ListInitialDatas(response) {
+ $scope.RemoteBackupLoading = true;
+ if (response.data.status === 1) {
new PNotify({
- title: 'Operation Failed!',
+ title: 'Success!',
+ text: 'Successfully Saved!.',
+ type: 'success'
+ });
+ location.reload();
+
+
+ } else {
+ new PNotify({
+ title: 'Error!',
text: response.data.error_message,
type: 'error'
});
-
-
}
}
+ function cantLoadInitialDatas(response) {
+ $scope.RemoteBackupLoading = true;
+ new PNotify({
+ title: 'Operation Failed!',
+ text: response.data.error_message,
+ type: 'error'
+ });
+
+
+ }
+
}
@@ -2062,7 +2118,7 @@ app.controller('BackupSchedule', function ($scope, $http, $timeout, $window) {
FileRetention: FileRetention,
Backfrequency: Backfrequency,
ScheduleName: $scope.ScheduleName,
- RemoteConfigID : $('#RemoteConfigID').html(),
+ RemoteConfigID: $('#RemoteConfigID').html(),
BackupType: $scope.BackupType
}
var url = "/websites/SaveBackupSchedule";
@@ -2111,23 +2167,21 @@ app.controller('BackupSchedule', function ($scope, $http, $timeout, $window) {
};
-
-
$scope.getupdateid = function (ID) {
UpdatescheduleID = ID;
}
$scope.UpdateRemoteschedules = function () {
- $scope.RemoteBackupLoading = false;
- var Frequency = $scope.RemoteFrequency;
- var fretention = $scope.RemoteFileretention;
+ $scope.RemoteBackupLoading = false;
+ var Frequency = $scope.RemoteFrequency;
+ var fretention = $scope.RemoteFileretention;
- var data = {
- ScheduleID:UpdatescheduleID,
- Frequency: Frequency,
- FileRetention: fretention
- }
- var url = "/websites/UpdateRemoteschedules";
+ var data = {
+ ScheduleID: UpdatescheduleID,
+ Frequency: Frequency,
+ FileRetention: fretention
+ }
+ var url = "/websites/UpdateRemoteschedules";
var config = {
@@ -2174,10 +2228,9 @@ app.controller('BackupSchedule', function ($scope, $http, $timeout, $window) {
$scope.RemoteBackupLoading = false;
-
var data = {
- WpsiteID: $('#Wpsite').val(),
- RemoteScheduleID : $('#RemoteScheduleID').html()
+ WpsiteID: $('#Wpsite').val(),
+ RemoteScheduleID: $('#RemoteScheduleID').html()
}
var url = "/websites/AddWPsiteforRemoteBackup";
diff --git a/websiteFunctions/templates/websiteFunctions/RemoteBackupConfig.html b/websiteFunctions/templates/websiteFunctions/RemoteBackupConfig.html
index 5b18dc1f3..d0c4c790c 100644
--- a/websiteFunctions/templates/websiteFunctions/RemoteBackupConfig.html
+++ b/websiteFunctions/templates/websiteFunctions/RemoteBackupConfig.html
@@ -30,6 +30,7 @@
@@ -68,8 +69,45 @@
-
- S3 BAckups
+
+
+
+
+
+
@@ -93,30 +131,31 @@
| Backup Type |
HostName |
- Path |
+ Path / Key Name |
Action |
-
+
{% for sub in backupconfigs %}
-
- | {{ sub.Type }} |
- {{ sub.HostName }} |
- {{ sub.Path }} |
-
-
+ | {{ sub.Type }} |
+ {{ sub.HostName }} |
+ {{ sub.Path }} |
+
+
+
- Schedule Backups
- |
-
+ type="button" class="btn btn-border btn-alt border-green btn-link font-green">
+ Schedule Backups
+
+
{% endfor %}
@@ -124,7 +163,6 @@
-
diff --git a/websiteFunctions/website.py b/websiteFunctions/website.py
index 928e471c4..ec7b08b9e 100755
--- a/websiteFunctions/website.py
+++ b/websiteFunctions/website.py
@@ -222,12 +222,30 @@ class WebsiteManager:
Data['backupconfigs'] =[]
for i in allcon:
configr = json.loads(i.config)
- Data['backupconfigs'].append({
- 'id':i.pk,
- 'Type': i.configtype,
- 'HostName': configr['Hostname'],
- 'Path': configr['Path']
- })
+ if i.configtype == "SFTP":
+ Data['backupconfigs'].append({
+ 'id': i.pk,
+ 'Type': i.configtype,
+ 'HostName': configr['Hostname'],
+ 'Path': configr['Path']
+ })
+ elif i.configtype == "S3":
+ Provider = configr['Provider']
+ if Provider == "Backblaze":
+ Data['backupconfigs'].append({
+ 'id': i.pk,
+ 'Type': i.configtype,
+ 'HostName': Provider,
+ 'Path': configr['S3keyname']
+ })
+ else:
+ Data['backupconfigs'].append({
+ 'id': i.pk,
+ 'Type': i.configtype,
+ 'HostName': Provider,
+ 'Path': configr['S3keyname']
+ })
+
proc = httpProc(request, 'websiteFunctions/RemoteBackupConfig.html',
Data, 'createWebsite')
return proc.render()
@@ -1153,8 +1171,37 @@ class WebsiteManager:
"Password": Passwd,
"Path": path
}
- mkobj = RemoteBackupConfig(owner=admin, configtype=ConfigType, config=json.dumps(config))
- mkobj.save()
+ elif ConfigType == "S3":
+ Provider = data['Provider']
+ if Provider == "Backblaze":
+ S3keyname = data['S3keyname']
+ SecertKey = data['SecertKey']
+ AccessKey = data['AccessKey']
+ EndUrl = data['EndUrl']
+ config = {
+ "Provider": Provider,
+ "S3keyname": S3keyname,
+ "SecertKey": SecertKey,
+ "AccessKey": AccessKey,
+ "EndUrl": EndUrl
+
+ }
+ else:
+ S3keyname = data['S3keyname']
+ SecertKey = data['SecertKey']
+ AccessKey = data['AccessKey']
+ config = {
+ "Provider": Provider,
+ "S3keyname": S3keyname,
+ "SecertKey": SecertKey,
+ "AccessKey": AccessKey,
+
+ }
+
+
+
+ mkobj = RemoteBackupConfig(owner=admin, configtype=ConfigType, config=json.dumps(config))
+ mkobj.save()
time.sleep(1)
From f3ce6a811aa4f74cd253314ccfffcf6b1acf78bc Mon Sep 17 00:00:00 2001
From: Hassan Hashmi <75794688+habbi-hb@users.noreply.github.com>
Date: Wed, 29 Jun 2022 17:52:35 +0500
Subject: [PATCH 3/5] s3uploaddone
---
plogical/IncScheduler.py | 414 +++++++++++++-----
plogical/applicationInstaller.py | 8 +-
plogical/test.py | 9 +
.../websiteFunctions/RemoteBackupConfig.html | 2 +-
4 files changed, 321 insertions(+), 112 deletions(-)
diff --git a/plogical/IncScheduler.py b/plogical/IncScheduler.py
index 40e0ca245..ede25b666 100644
--- a/plogical/IncScheduler.py
+++ b/plogical/IncScheduler.py
@@ -1,9 +1,11 @@
#!/usr/local/CyberCP/bin/python
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
@@ -22,6 +24,7 @@ import requests
import socket
from websiteFunctions.models import NormalBackupJobs, NormalBackupJobLogs
from boto3.s3.transfer import TransferConfig
+
try:
from s3Backups.models import BackupPlan, BackupLogs
import boto3
@@ -63,7 +66,7 @@ class IncScheduler(multi.Thread):
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)
+ 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)
@@ -129,7 +132,7 @@ class IncScheduler(multi.Thread):
web = Websites.objects.get(domain=website)
message = '[%s Cron] Checking if %s has any pending commits on %s.' % (
- type, website, time.strftime("%m.%d.%Y_%H-%M-%S"))
+ type, website, time.strftime("%m.%d.%Y_%H-%M-%S"))
finalText = '%s\n' % (message)
GitLogs(owner=web, type='INFO', message=message).save()
@@ -148,7 +151,7 @@ class IncScheduler(multi.Thread):
data['domain'] = gitConf['domain']
data['folder'] = gitConf['folder']
data['commitMessage'] = 'Auto commit by CyberPanel %s cron on %s' % (
- type, time.strftime('%m-%d-%Y_%H-%M-%S'))
+ type, time.strftime('%m-%d-%Y_%H-%M-%S'))
if gitConf['autoCommit'] == type:
@@ -182,7 +185,7 @@ class IncScheduler(multi.Thread):
finalText = '%s\n%s' % (finalText, message)
message = '[%s Cron] Finished checking for %s on %s.' % (
- type, website, time.strftime("%m.%d.%Y_%H-%M-%S"))
+ type, website, time.strftime("%m.%d.%Y_%H-%M-%S"))
finalText = '%s\n%s' % (finalText, message)
logging.SendEmail(web.adminEmail, web.adminEmail, finalText, 'Git report for %s.' % (web.domain))
GitLogs(owner=web, type='INFO', message=message).save()
@@ -333,7 +336,7 @@ class IncScheduler(multi.Thread):
if retValues[0] == 0:
GDriveJobLogs(owner=items, status=backupSchedule.ERROR,
message='[ERROR] Backup failed for %s, error: %s moving on..' % (
- website.domain, retValues[1])).save()
+ website.domain, retValues[1])).save()
continue
completeFileToSend = retValues[1] + ".tar.gz"
@@ -378,12 +381,9 @@ class IncScheduler(multi.Thread):
GDriveJobLogs(owner=items, status=backupSchedule.INFO,
message='Job Completed').save()
-
print("job com[leted")
- #logging.writeToFile('job completed')
-
-
+ # logging.writeToFile('job completed')
url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission"
data = {
@@ -400,67 +400,67 @@ class IncScheduler(multi.Thread):
page_token = None
while True:
- response = drive.files().list(q="name='%s-%s'" % (items.name,ipAddress),
- spaces='drive',
+ response = drive.files().list(q="name='%s-%s'" % (items.name, ipAddress),
+ spaces='drive',
fields='nextPageToken, files(id, name)',
pageToken=page_token).execute()
for file in response.get('files', []):
# Process change
- #print('Fetch Main folder ID: %s (%s)' % (file.get('name'), file.get('id')))
- #logging.writeToFile('Fetch Main folder ID: %s (%s)' % (file.get('name'), file.get('id')))
- mainfolder_id= file.get('id')
+ # print('Fetch Main folder ID: %s (%s)' % (file.get('name'), file.get('id')))
+ # logging.writeToFile('Fetch Main folder ID: %s (%s)' % (file.get('name'), file.get('id')))
+ mainfolder_id = file.get('id')
page_token = response.get('nextPageToken', None)
if page_token is None:
break
- #print("new job started ")
+ # print("new job started ")
try:
page_token = None
while True:
- response = drive.files().list(q="'%s' in parents"%(mainfolder_id),
- spaces='drive',
- fields='nextPageToken, files(id, name, createdTime)',
- pageToken=page_token).execute()
+ response = drive.files().list(q="'%s' in parents" % (mainfolder_id),
+ spaces='drive',
+ fields='nextPageToken, files(id, name, createdTime)',
+ pageToken=page_token).execute()
for file in response.get('files', []):
# Process change
- #print('Fetch all folders in main folder: %s (%s) time:-%s' % (file.get('name'), file.get('id'), file.get('createdTime')))
- #logging.writeToFile('Fetch all folders in main folder: %s (%s) time:-%s' % (file.get('name'), file.get('id'),file.get('createdTime')))
+ # print('Fetch all folders in main folder: %s (%s) time:-%s' % (file.get('name'), file.get('id'), file.get('createdTime')))
+ # logging.writeToFile('Fetch all folders in main folder: %s (%s) time:-%s' % (file.get('name'), file.get('id'),file.get('createdTime')))
ab = file.get('createdTime')[:10]
filename = file.get('name')
fileDeleteID = file.get('id')
- timestamp = time.mktime(datetime.datetime.strptime(ab,"%Y-%m-%d").timetuple())
+ timestamp = time.mktime(datetime.datetime.strptime(ab, "%Y-%m-%d").timetuple())
CUrrenttimestamp = time.time()
timerrtention = gDriveData['FileRetentiontime']
- if(timerrtention == '1d'):
+ if (timerrtention == '1d'):
new = CUrrenttimestamp - float(86400)
- if(new>=timestamp):
- resp=drive.files().delete(fileId=fileDeleteID).execute()
- logging.writeToFile('Delete file %s '%filename)
- elif(timerrtention == '1w'):
+ if (new >= timestamp):
+ resp = drive.files().delete(fileId=fileDeleteID).execute()
+ logging.writeToFile('Delete file %s ' % filename)
+ elif (timerrtention == '1w'):
new = CUrrenttimestamp - float(604800)
if (new >= timestamp):
resp = drive.files().delete(fileId=fileDeleteID).execute()
- logging.writeToFile('Delete file %s '%filename)
+ logging.writeToFile('Delete file %s ' % filename)
elif (timerrtention == '1m'):
new = CUrrenttimestamp - float(2592000)
if (new >= timestamp):
resp = drive.files().delete(fileId=fileDeleteID).execute()
- logging.writeToFile('Delete file %s '%filename)
+ logging.writeToFile('Delete file %s ' % filename)
elif (timerrtention == '6m'):
new = CUrrenttimestamp - float(15552000)
if (new >= timestamp):
resp = drive.files().delete(fileId=fileDeleteID).execute()
- logging.writeToFile('Delete file %s '%filename)
+ logging.writeToFile('Delete file %s ' % filename)
page_token = response.get('nextPageToken', None)
if page_token is None:
break
- # logging.writeToFile('Createtime list - %s'%Createtime)
+ # logging.writeToFile('Createtime list - %s'%Createtime)
except BaseException as msg:
- print('An error occurred fetch child: %s' % msg)
- logging.writeToFile('An error occurred fetch child: %s' % msg)
+ print('An error occurred fetch child: %s' % msg)
+ logging.writeToFile('An error occurred fetch child: %s' % msg)
except BaseException as msg:
- logging.writeToFile('job not completed [ERROR:]..%s'%msg)
+ logging.writeToFile('job not completed [ERROR:]..%s' % msg)
except BaseException as msg:
GDriveJobLogs(owner=items, status=backupSchedule.ERROR,
@@ -523,7 +523,7 @@ class IncScheduler(multi.Thread):
NormalBackupJobLogs.objects.filter(owner=backupjob).delete()
NormalBackupJobLogs(owner=backupjob, status=backupSchedule.INFO,
message='Starting %s backup on %s..' % (
- type, time.strftime("%m.%d.%Y_%H-%M-%S"))).save()
+ type, time.strftime("%m.%d.%Y_%H-%M-%S"))).save()
if oldJobContinue:
NormalBackupJobLogs(owner=backupjob, status=backupSchedule.INFO,
@@ -886,8 +886,7 @@ Automatic backup failed for %s on %s.
emailPath = '/home/vmail/%s/%s' % (website.domain, email.email.split('@')[0])
email.DiskUsage = virtualHostUtilities.getDiskUsageofPath(emailPath)
email.save()
- print('Disk Usage of %s is %s' % (email.email,email.DiskUsage))
-
+ print('Disk Usage of %s is %s' % (email.email, email.DiskUsage))
config['DiskUsage'], config['DiskUsagePercentage'] = virtualHostUtilities.getDiskUsage(
"/home/" + website.domain, website.package.diskSpace)
@@ -947,14 +946,14 @@ Automatic backup failed for %s on %s.
if config['pluginUpdates'] == 'Enabled':
command = 'wp plugin update --all --minor --allow-root --path=/home/%s/public_html' % (
- config['domainName'])
+ config['domainName'])
ProcessUtilities.executioner(command)
### Themes, for plugins we will do minor updates only.
if config['themeUpdates'] == 'Enabled':
command = 'wp theme update --all --minor --allow-root --path=/home/%s/public_html' % (
- config['domainName'])
+ config['domainName'])
ProcessUtilities.executioner(command)
except BaseException as msg:
@@ -970,7 +969,7 @@ Automatic backup failed for %s on %s.
from plogical.applicationInstaller import ApplicationInstaller
for config in RemoteBackupSchedule.objects.all():
try:
- configbakup=json.loads(config.config)
+ configbakup = json.loads(config.config)
backuptype = configbakup['BackupType']
if backuptype == 'Only DataBase':
Backuptype = "3"
@@ -983,120 +982,225 @@ Automatic backup failed for %s on %s.
try:
allRemoteBackupsiteobj = RemoteBackupsites.objects.filter(owner=config.pk)
for i in allRemoteBackupsiteobj:
- backupsiteID=i.WPsites
- wpsite=WPSites.objects.get(pk=backupsiteID)
- AdminID=wpsite.owner.admin_id
+ backupsiteID = i.WPsites
+ wpsite = WPSites.objects.get(pk=backupsiteID)
+ AdminID = wpsite.owner.admin_id
Admin = Administrator.objects.get(pk=AdminID)
- extraArgs = {}
- extraArgs['adminID'] = Admin.pk
- extraArgs['WPid'] = wpsite.pk
- extraArgs['Backuptype'] = Backuptype
- extraArgs['BackupDestination'] = "SFTP"
- extraArgs['SFTPID'] = config.RemoteBackupConfig_id
- extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
Lastrun = config.lastrun
Currenttime = float(time.time())
if config.timeintervel == "30 Minutes":
al = float(Currenttime) - float(1800)
- if float(al) >= float(Lastrun):
- # if 1 == 1:
+ # if float(al) >= float(Lastrun):
+ if 1 == 1:
+ extraArgs = {}
+ extraArgs['adminID'] = Admin.pk
+ extraArgs['WPid'] = wpsite.pk
+ extraArgs['Backuptype'] = Backuptype
+ extraArgs['BackupDestination'] = config.RemoteBackupConfig.configtype
+ extraArgs['SFTPID'] = config.RemoteBackupConfig_id
+
+ extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
background = ApplicationInstaller('WPCreateBackup', extraArgs)
- status, msg = background.WPCreateBackup()
+ status, msg, backupID = background.WPCreateBackup()
if status == 1:
filename = msg
- IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
- command = f"rm -r {filename}"
- ProcessUtilities.executioner(command)
- obj = RemoteBackupSchedule.objects.get(pk=config.id)
- obj.lastrun = time.time()
- obj.save()
+ if config.RemoteBackupConfig.configtype == "SFTP":
+ IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
+ elif config.RemoteBackupConfig.configtype == "S3":
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
elif config.timeintervel == "1 Hour":
al = float(Currenttime) - float(3600)
if float(al) >= float(Lastrun):
+ # if 1 == 1:
+ extraArgs = {}
+ extraArgs['adminID'] = Admin.pk
+ extraArgs['WPid'] = wpsite.pk
+ extraArgs['Backuptype'] = Backuptype
+ extraArgs['BackupDestination'] = config.RemoteBackupConfig.configtype
+ extraArgs['SFTPID'] = config.RemoteBackupConfig_id
+
+ extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
background = ApplicationInstaller('WPCreateBackup', extraArgs)
- status, msg = background.WPCreateBackup()
+ status, msg, backupID = background.WPCreateBackup()
if status == 1:
filename = msg
- IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
- command = f"rm -r {filename}"
- ProcessUtilities.executioner(command)
- obj = RemoteBackupSchedule.objects.get(pk=config.id)
- obj.lastrun = time.time()
- obj.save()
+ if config.RemoteBackupConfig.configtype == "SFTP":
+ IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
+ elif config.RemoteBackupConfig.configtype == "S3":
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
elif config.timeintervel == "6 Hours":
al = float(Currenttime) - float(21600)
if float(al) >= float(Lastrun):
+ extraArgs = {}
+ extraArgs['adminID'] = Admin.pk
+ extraArgs['WPid'] = wpsite.pk
+ extraArgs['Backuptype'] = Backuptype
+ extraArgs['BackupDestination'] = "SFTP"
+ extraArgs['SFTPID'] = config.RemoteBackupConfig_id
+
+ extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
background = ApplicationInstaller('WPCreateBackup', extraArgs)
- status, msg = background.WPCreateBackup()
+ status, msg, backupID = background.WPCreateBackup()
if status == 1:
filename = msg
- IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
- command = f"rm -r {filename}"
- ProcessUtilities.executioner(command)
- obj = RemoteBackupSchedule.objects.get(pk=config.id)
- obj.lastrun = time.time()
- obj.save()
+ if config.RemoteBackupConfig.configtype == "SFTP":
+ IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
+ elif config.RemoteBackupConfig.configtype == "S3":
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
elif config.timeintervel == "12 Hours":
al = float(Currenttime) - float(43200)
if float(al) >= float(Lastrun):
+ extraArgs = {}
+ extraArgs['adminID'] = Admin.pk
+ extraArgs['WPid'] = wpsite.pk
+ extraArgs['Backuptype'] = Backuptype
+ extraArgs['BackupDestination'] = "SFTP"
+ extraArgs['SFTPID'] = config.RemoteBackupConfig_id
+
+ extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
background = ApplicationInstaller('WPCreateBackup', extraArgs)
- status, msg = background.WPCreateBackup()
+ status, msg, backupID = background.WPCreateBackup()
if status == 1:
filename = msg
- IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
- command = f"rm -r {filename}"
- ProcessUtilities.executioner(command)
- obj = RemoteBackupSchedule.objects.get(pk=config.id)
- obj.lastrun = time.time()
- obj.save()
+ if config.RemoteBackupConfig.configtype == "SFTP":
+ IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
+ elif config.RemoteBackupConfig.configtype == "S3":
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
elif config.timeintervel == "1 Day":
al = float(Currenttime) - float(86400)
if float(al) >= float(Lastrun):
+ extraArgs = {}
+ extraArgs['adminID'] = Admin.pk
+ extraArgs['WPid'] = wpsite.pk
+ extraArgs['Backuptype'] = Backuptype
+ extraArgs['BackupDestination'] = "SFTP"
+ extraArgs['SFTPID'] = config.RemoteBackupConfig_id
+
+ extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
background = ApplicationInstaller('WPCreateBackup', extraArgs)
- status, msg = background.WPCreateBackup()
+ status, msg, backupID = background.WPCreateBackup()
if status == 1:
filename = msg
- IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
- command = f"rm -r {filename}"
- ProcessUtilities.executioner(command)
- obj = RemoteBackupSchedule.objects.get(pk=config.id)
- obj.lastrun = time.time()
- obj.save()
+ if config.RemoteBackupConfig.configtype == "SFTP":
+ IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
+ elif config.RemoteBackupConfig.configtype == "S3":
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
elif config.timeintervel == "3 Days":
al = float(Currenttime) - float(259200)
if float(al) >= float(Lastrun):
+ extraArgs = {}
+ extraArgs['adminID'] = Admin.pk
+ extraArgs['WPid'] = wpsite.pk
+ extraArgs['Backuptype'] = Backuptype
+ extraArgs['BackupDestination'] = "SFTP"
+ extraArgs['SFTPID'] = config.RemoteBackupConfig_id
+
+ extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
background = ApplicationInstaller('WPCreateBackup', extraArgs)
- status, msg = background.WPCreateBackup()
+ status, msg, backupID = background.WPCreateBackup()
if status == 1:
filename = msg
- IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
- command = f"rm -r {filename}"
- ProcessUtilities.executioner(command)
- obj = RemoteBackupSchedule.objects.get(pk=config.id)
- obj.lastrun = time.time()
- obj.save()
+ if config.RemoteBackupConfig.configtype == "SFTP":
+ IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
+ elif config.RemoteBackupConfig.configtype == "S3":
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
elif config.timeintervel == "1 Week":
al = float(Currenttime) - float(604800)
if float(al) >= float(Lastrun):
+ extraArgs = {}
+ extraArgs['adminID'] = Admin.pk
+ extraArgs['WPid'] = wpsite.pk
+ extraArgs['Backuptype'] = Backuptype
+ extraArgs['BackupDestination'] = "SFTP"
+ extraArgs['SFTPID'] = config.RemoteBackupConfig_id
+
+ extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
background = ApplicationInstaller('WPCreateBackup', extraArgs)
- status, msg = background.WPCreateBackup()
+ status, msg, backupID = background.WPCreateBackup()
if status == 1:
filename = msg
- IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
- command = f"rm -r {filename}"
- ProcessUtilities.executioner(command)
- obj = RemoteBackupSchedule.objects.get(pk=config.id)
- obj.lastrun = time.time()
- obj.save()
+ if config.RemoteBackupConfig.configtype == "SFTP":
+ IncScheduler.SendTORemote(filename, config.RemoteBackupConfig_id)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
+ elif config.RemoteBackupConfig.configtype == "S3":
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ command = f"rm -r {filename}"
+ ProcessUtilities.executioner(command)
+ obj = RemoteBackupSchedule.objects.get(pk=config.id)
+ obj.lastrun = time.time()
+ obj.save()
except BaseException as msg:
- print("Error in Sites:%s"%str(msg))
+ print("Error in Sites:%s" % str(msg))
continue
except BaseException as msg:
- print("Error: [RemoteBackup]: %s"%str(msg))
+ print("Error: [RemoteBackup]: %s" % str(msg))
logging.writeToFile('%s. [RemoteBackup]' % (str(msg)))
-
@staticmethod
def SendTORemote(FileName, RemoteBackupID):
import pysftp
@@ -1118,7 +1222,6 @@ Automatic backup failed for %s on %s.
with pysftp.Connection(HostName, username=Username, password=Password, cnopts=cnopts) as sftp:
print("Connection succesfully stablished ... ")
-
try:
with sftp.cd(Path):
sftp.put(FileName)
@@ -1132,6 +1235,104 @@ Automatic backup failed for %s on %s.
except BaseException as msg:
logging.writeToFile('%s. [SendTORemote]' % (str(msg)))
+ @staticmethod
+ def SendToS3Cloud(FileName, RemoteBackupCofigID, backupID):
+ import boto3
+ import json
+ import time
+ from websiteFunctions.models import RemoteBackupConfig, WPSitesBackup
+ import plogical.randomPassword as randomPassword
+ try:
+ print("UPloading to S3")
+ Backupobj = WPSitesBackup.objects.get(pk=backupID)
+ backupConfig = json.loads(Backupobj.config)
+ websitedomain = backupConfig['WebDomain']
+ RemoteBackupOBJ = RemoteBackupConfig.objects.get(pk=RemoteBackupCofigID)
+ config = json.loads(RemoteBackupOBJ.config)
+ provider = config['Provider']
+ if provider == "Backblaze":
+ EndURl = config['EndUrl']
+ elif provider == "Amazon":
+ EndURl = "https://s3.us-east-1.amazonaws.com"
+ elif provider == "Wasabi":
+ EndURl = "https://s3.wasabisys.com"
+
+ AccessKey = config['AccessKey']
+ SecertKey = config['SecertKey']
+
+ session = boto3.session.Session()
+
+ client = session.client(
+ 's3',
+ endpoint_url=EndURl,
+ aws_access_key_id=AccessKey,
+ aws_secret_access_key=SecertKey,
+ verify=False
+ )
+
+ ############Creating Bucket
+ BucketName = randomPassword.generate_pass().lower()
+ print("BucketName...%s"%BucketName)
+
+ try:
+ client.create_bucket(Bucket=BucketName)
+ except BaseException as msg:
+ print("Error in Creating bucket...: %s" % str(msg))
+ logging.writeToFile("Create bucket error---%s:" % str(msg))
+
+ #####Uploading File
+
+ uploadfilename = 'backup-' + websitedomain + "-" + time.strftime("%m.%d.%Y_%H-%M-%S")
+ print("uploadfilename....%s"%uploadfilename)
+
+ try:
+ res = client.upload_file(Filename=FileName, Bucket=BucketName, Key=uploadfilename)
+ print("res of Uploading...: %s" % res)
+
+ except BaseException as msg:
+ print("Error in Uploading...: %s" % msg)
+
+ ###################### version id, this only applied to blackbaze
+ try:
+
+ s3 = boto3.resource(
+ 's3',
+ endpoint_url=EndURl,
+ aws_access_key_id=AccessKey,
+ aws_secret_access_key=SecertKey,
+ )
+
+ bucket = BucketName
+ key = uploadfilename
+ versions = s3.Bucket(bucket).object_versions.filter(Prefix=key)
+ data = {}
+
+ for version in versions:
+ obj = version.get()
+ print("VersionId---%s:" % obj.get('VersionId'))
+ data['backupVersionId'] = obj.get('VersionId')
+
+ ab = os.path.getsize(FileName)
+ filesize = float(ab) / 1024.0
+
+ backupConfig['uploadfilename'] = uploadfilename
+ backupConfig['backupVersionId'] = data['backupVersionId']
+ backupConfig['BucketName'] = BucketName
+ backupConfig['Uplaodingfilesize'] = filesize
+ Backupobj.config = json.dumps(backupConfig)
+ Backupobj.save()
+
+ except BaseException as msg:
+ print("Version ID Error: %s"%str(msg))
+
+
+
+
+
+
+ except BaseException as msg:
+ print('%s. [SendToS3Cloud]' % (str(msg)))
+ logging.writeToFile('%s. [SendToS3Cloud]' % (str(msg)))
def main():
@@ -1152,7 +1353,6 @@ def main():
ib = IncScheduler('startBackup', {'freq': args.function})
ib.start()
-
###
IncScheduler.startBackup(args.function)
@@ -1167,4 +1367,4 @@ def main():
if __name__ == "__main__":
- main()
\ No newline at end of file
+ main()
diff --git a/plogical/applicationInstaller.py b/plogical/applicationInstaller.py
index 87349b100..94b2ca47e 100755
--- a/plogical/applicationInstaller.py
+++ b/plogical/applicationInstaller.py
@@ -2444,7 +2444,7 @@ $parameters = array(
raise BaseException(stdout)
logging.statusWriter(self.tempStatusPath, 'Completed.[200]')
- return 1, f"/home/backup/{config['name']}.tar.gz"
+ return 1, f"/home/backup/{config['name']}.tar.gz", backupobj.id
#### Only Website Data === 2
elif Backuptype == "2":
@@ -2576,7 +2576,7 @@ $parameters = array(
raise BaseException(stdout)
logging.statusWriter(self.tempStatusPath, 'Completed.[200]')
- return 1, f"/home/backup/{config['name']}.tar.gz"
+ return 1, f"/home/backup/{config['name']}.tar.gz", backupobj.id
#### Only Database === 3
else:
@@ -2705,7 +2705,7 @@ $parameters = array(
raise BaseException(stdout)
logging.statusWriter(self.tempStatusPath, 'Completed.[200]')
- return 1, f"/home/backup/{config['name']}.tar.gz"
+ return 1, f"/home/backup/{config['name']}.tar.gz", backupobj.id
except BaseException as msg:
logging.writeToFile("Error WPCreateBackup ....... %s" % str(msg))
@@ -2715,7 +2715,7 @@ $parameters = array(
except:
pass
logging.statusWriter(self.tempStatusPath, f'{str(msg)}. [404]')
- return 0, str(msg)
+ return 0, str(msg), None
def RestoreWPbackupNow(self):
try:
diff --git a/plogical/test.py b/plogical/test.py
index e69de29bb..93258abd8 100644
--- a/plogical/test.py
+++ b/plogical/test.py
@@ -0,0 +1,9 @@
+config= {
+ "name": "habi",
+ "dev": "python"
+}
+
+print(config)
+config['klm'] ="tls"
+
+print(config)
\ No newline at end of file
diff --git a/websiteFunctions/templates/websiteFunctions/RemoteBackupConfig.html b/websiteFunctions/templates/websiteFunctions/RemoteBackupConfig.html
index d0c4c790c..127c19ffd 100644
--- a/websiteFunctions/templates/websiteFunctions/RemoteBackupConfig.html
+++ b/websiteFunctions/templates/websiteFunctions/RemoteBackupConfig.html
@@ -105,7 +105,7 @@
From e6c2d6e670df6f5879db09f9b793cfad61a03bde Mon Sep 17 00:00:00 2001
From: Hassan Hashmi <75794688+habbi-hb@users.noreply.github.com>
Date: Fri, 1 Jul 2022 11:16:20 +0500
Subject: [PATCH 4/5] s3backupuplaoddone
---
plogical/IncScheduler.py | 49 +++++++++++++++++++++++--------------
websiteFunctions/website.py | 42 ++++++++++++++++++++++++++++---
2 files changed, 69 insertions(+), 22 deletions(-)
diff --git a/plogical/IncScheduler.py b/plogical/IncScheduler.py
index ede25b666..9dd657996 100644
--- a/plogical/IncScheduler.py
+++ b/plogical/IncScheduler.py
@@ -991,8 +991,8 @@ Automatic backup failed for %s on %s.
Currenttime = float(time.time())
if config.timeintervel == "30 Minutes":
al = float(Currenttime) - float(1800)
- # if float(al) >= float(Lastrun):
- if 1 == 1:
+ if float(al) >= float(Lastrun):
+ #if 1 == 1:
extraArgs = {}
extraArgs['adminID'] = Admin.pk
extraArgs['WPid'] = wpsite.pk
@@ -1013,7 +1013,7 @@ Automatic backup failed for %s on %s.
obj.lastrun = time.time()
obj.save()
elif config.RemoteBackupConfig.configtype == "S3":
- IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID, config.id)
command = f"rm -r {filename}"
ProcessUtilities.executioner(command)
obj = RemoteBackupSchedule.objects.get(pk=config.id)
@@ -1043,7 +1043,8 @@ Automatic backup failed for %s on %s.
obj.lastrun = time.time()
obj.save()
elif config.RemoteBackupConfig.configtype == "S3":
- IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID,
+ config.id)
command = f"rm -r {filename}"
ProcessUtilities.executioner(command)
obj = RemoteBackupSchedule.objects.get(pk=config.id)
@@ -1072,7 +1073,8 @@ Automatic backup failed for %s on %s.
obj.lastrun = time.time()
obj.save()
elif config.RemoteBackupConfig.configtype == "S3":
- IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID,
+ config.id)
command = f"rm -r {filename}"
ProcessUtilities.executioner(command)
obj = RemoteBackupSchedule.objects.get(pk=config.id)
@@ -1101,7 +1103,8 @@ Automatic backup failed for %s on %s.
obj.lastrun = time.time()
obj.save()
elif config.RemoteBackupConfig.configtype == "S3":
- IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID,
+ config.id)
command = f"rm -r {filename}"
ProcessUtilities.executioner(command)
obj = RemoteBackupSchedule.objects.get(pk=config.id)
@@ -1130,7 +1133,8 @@ Automatic backup failed for %s on %s.
obj.lastrun = time.time()
obj.save()
elif config.RemoteBackupConfig.configtype == "S3":
- IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID,
+ config.id)
command = f"rm -r {filename}"
ProcessUtilities.executioner(command)
obj = RemoteBackupSchedule.objects.get(pk=config.id)
@@ -1159,7 +1163,8 @@ Automatic backup failed for %s on %s.
obj.lastrun = time.time()
obj.save()
elif config.RemoteBackupConfig.configtype == "S3":
- IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID,
+ config.id)
command = f"rm -r {filename}"
ProcessUtilities.executioner(command)
obj = RemoteBackupSchedule.objects.get(pk=config.id)
@@ -1188,7 +1193,8 @@ Automatic backup failed for %s on %s.
obj.lastrun = time.time()
obj.save()
elif config.RemoteBackupConfig.configtype == "S3":
- IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID)
+ IncScheduler.SendToS3Cloud(filename, config.RemoteBackupConfig_id, backupID,
+ config.id)
command = f"rm -r {filename}"
ProcessUtilities.executioner(command)
obj = RemoteBackupSchedule.objects.get(pk=config.id)
@@ -1236,11 +1242,11 @@ Automatic backup failed for %s on %s.
logging.writeToFile('%s. [SendTORemote]' % (str(msg)))
@staticmethod
- def SendToS3Cloud(FileName, RemoteBackupCofigID, backupID):
+ def SendToS3Cloud(FileName, RemoteBackupCofigID, backupID, scheduleID):
import boto3
import json
import time
- from websiteFunctions.models import RemoteBackupConfig, WPSitesBackup
+ from websiteFunctions.models import RemoteBackupConfig, WPSitesBackup, RemoteBackupSchedule
import plogical.randomPassword as randomPassword
try:
print("UPloading to S3")
@@ -1270,16 +1276,21 @@ Automatic backup failed for %s on %s.
verify=False
)
- ############Creating Bucket
- BucketName = randomPassword.generate_pass().lower()
- print("BucketName...%s"%BucketName)
+ # ############Creating Bucket
+ # BucketName = randomPassword.generate_pass().lower()
+ # print("BucketName...%s"%BucketName)
+ #
+ # try:
+ # client.create_bucket(Bucket=BucketName)
+ # except BaseException as msg:
+ # print("Error in Creating bucket...: %s" % str(msg))
+ # logging.writeToFile("Create bucket error---%s:" % str(msg))
- try:
- client.create_bucket(Bucket=BucketName)
- except BaseException as msg:
- print("Error in Creating bucket...: %s" % str(msg))
- logging.writeToFile("Create bucket error---%s:" % str(msg))
+ ####getting Bucket from backup schedule
+ Scheduleobj = RemoteBackupSchedule.objects.get(pk=scheduleID)
+ Scheduleconfig = json.loads(Scheduleobj.config)
+ BucketName = Scheduleconfig['BucketName']
#####Uploading File
uploadfilename = 'backup-' + websitedomain + "-" + time.strftime("%m.%d.%Y_%H-%M-%S")
diff --git a/websiteFunctions/website.py b/websiteFunctions/website.py
index ec7b08b9e..ac3951d40 100755
--- a/websiteFunctions/website.py
+++ b/websiteFunctions/website.py
@@ -25,6 +25,7 @@ from plogical.mailUtilities import mailUtilities
from random import randint
import time
import re
+import boto3
from plogical.childDomain import ChildDomainManager
from math import ceil
from plogical.alias import AliasManager
@@ -1226,11 +1227,46 @@ class WebsiteManager:
ScheduleName = data['ScheduleName']
RemoteConfigID = data['RemoteConfigID']
BackupType = data['BackupType']
- config = {
- 'BackupType': BackupType
- }
+
RemoteBackupConfigobj = RemoteBackupConfig.objects.get(pk=RemoteConfigID)
+ Rconfig = json.loads(RemoteBackupConfigobj.config)
+ provider = Rconfig['Provider']
+ if provider == "Backblaze":
+ EndURl = Rconfig['EndUrl']
+ elif provider == "Amazon":
+ EndURl = "https://s3.us-east-1.amazonaws.com"
+ elif provider == "Wasabi":
+ EndURl = "https://s3.wasabisys.com"
+
+ AccessKey = Rconfig['AccessKey']
+ SecertKey = Rconfig['SecertKey']
+
+ session = boto3.session.Session()
+
+ client = session.client(
+ 's3',
+ endpoint_url=EndURl,
+ aws_access_key_id=AccessKey,
+ aws_secret_access_key=SecertKey,
+ verify=False
+ )
+
+ ############Creating Bucket
+ BucketName = randomPassword.generate_pass().lower()
+
+ try:
+ client.create_bucket(Bucket=BucketName)
+ except BaseException as msg:
+ logging.CyberCPLogFileWriter.writeToFile("Creating Bucket Error: %s"%str(msg))
+ data_ret = {'status': 0, 'error_message': str(msg)}
+ json_data = json.dumps(data_ret)
+ return HttpResponse(json_data)
+
+ config = {
+ 'BackupType': BackupType,
+ 'BucketName': BucketName
+ }
svobj = RemoteBackupSchedule( RemoteBackupConfig=RemoteBackupConfigobj, Name=ScheduleName,
timeintervel=Backfrequency, fileretention=FileRetention, config=json.dumps(config),
From ce42ccd56849ec48cf38470cbf94dd085d6ba1c7 Mon Sep 17 00:00:00 2001
From: Hassan Hashmi <75794688+habbi-hb@users.noreply.github.com>
Date: Fri, 1 Jul 2022 17:38:28 +0500
Subject: [PATCH 5/5] s3backuprestoredone
---
plogical/applicationInstaller.py | 1091 +++++++++++++++++++++++++++++-
1 file changed, 1088 insertions(+), 3 deletions(-)
diff --git a/plogical/applicationInstaller.py b/plogical/applicationInstaller.py
index 94b2ca47e..6ea2f6e88 100755
--- a/plogical/applicationInstaller.py
+++ b/plogical/applicationInstaller.py
@@ -2725,7 +2725,7 @@ $parameters = array(
from packages.models import Package
import pysftp
import pysftp as sftp
-
+ import boto3
if os.path.exists(ProcessUtilities.debugPath):
logging.writeToFile("Error Restore WP backup Now ....... start:%s"% self.extraArgs['Domain'])
@@ -2754,12 +2754,12 @@ $parameters = array(
#####Check Backup Type
BackupType = config['Backuptype']
BackupDestination = config['BackupDestination']
- SFTP_ID = config['SFTP_ID']
+ RemoteBackupID = config['SFTP_ID']
#SFTPBackups
if BackupDestination == 'SFTP':
- RemoteBackupOBJ = RemoteBackupConfig.objects.get(pk=SFTP_ID)
+ RemoteBackupOBJ = RemoteBackupConfig.objects.get(pk=RemoteBackupID)
RemoteBackupconf = json.loads(RemoteBackupOBJ.config)
HostName = RemoteBackupconf['Hostname']
Username = RemoteBackupconf['Username']
@@ -3836,6 +3836,1091 @@ $parameters = array(
installUtilities.reStartLiteSpeed()
+ ###S#Backups
+ elif BackupDestination == 'S3':
+ uploadfilename = config['uploadfilename']
+ BucketName = config['BucketName']
+ RemoteBackupOBJ = RemoteBackupConfig.objects.get(pk=RemoteBackupID)
+ RemoteBackupconf = json.loads(RemoteBackupOBJ.config)
+ provider = RemoteBackupconf['Provider']
+ if provider == "Backblaze":
+ EndURl = RemoteBackupconf['EndUrl']
+ elif provider == "Amazon":
+ EndURl = "https://s3.us-east-1.amazonaws.com"
+ elif provider == "Wasabi":
+ EndURl = "https://s3.wasabisys.com"
+ AccessKey = RemoteBackupconf['AccessKey']
+ SecertKey = RemoteBackupconf['SecertKey']
+
+ session = boto3.session.Session()
+
+ client = session.client(
+ 's3',
+ endpoint_url=EndURl,
+ aws_access_key_id=AccessKey,
+ aws_secret_access_key=SecertKey,
+ verify=False
+ )
+
+ FinalZipPath = "/home/cyberpanel/%s.tar.gz" % (uploadfilename)
+ try:
+ client.download_file(BucketName, uploadfilename, FinalZipPath)
+ except BaseException as msg:
+ logging.writeToFile("Error in downloadfile: ..%s"%str(msg))
+
+ command = "mv %s /home/backup" % FinalZipPath
+ ProcessUtilities.executioner(command)
+
+ ##### CHeck if Backup type is Only Database
+ if BackupType == 'DataBase Backup':
+ if (DomainName == "" and int(self.extraArgs['DesSiteID']) != -1):
+ wpsite = WPSites.objects.get(pk=DesSiteID)
+ VHuser = wpsite.owner.externalApp
+ PhpVersion = wpsite.owner.phpSelection
+ newWPpath = wpsite.path
+ newurl = wpsite.FinalURL
+
+ ## get WPsite Database name and usr
+ php = PHPManager.getPHPString(PhpVersion)
+ FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
+
+ #####Get DBname
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_NAME --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') == -1:
+ Finaldbname = stdout.rstrip("\n")
+ else:
+ raise BaseException(stdout)
+
+ #####Get DBuser
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_USER --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') == -1:
+ Finaldbuser = stdout.rstrip("\n")
+ else:
+ raise BaseException(stdout)
+
+ #####Get DBpsswd
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_PASSWORD --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') == -1:
+ Finaldbpasswd = stdout.rstrip("\n")
+ else:
+ raise BaseException(stdout)
+
+ ### ##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}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = f'chown -R {wpsite.owner.externalApp}:{wpsite.owner.externalApp} {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Extracting Backup File...,30')
+
+ #####First copy backup file to temp and then Unzip
+ command = "sudo -u %s cp -R /home/backup/%s* %s" % (VHuser, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ #### Make temp dir ab for unzip
+ command = "sudo -u %s mkdir %s/ab" % (VHuser, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s tar -xvf %s/%s.tar.gz -C %s/ab" % (
+ VHuser, self.tempPath, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ # dump Mysql file in unzippath path
+ unzippathdb = "%s/ab/usr/local/CyberCP/tmp/%s/%s" % (self.tempPath, oldtemppath, DumpFileName)
+ command = "mysql -u root %s < %s" % (Finaldbname, unzippathdb)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Restoreing Data Base...,70')
+ #####SetUp DataBase Settings
+ ##set DBName
+ command = "sudo -u %s %s /usr/bin/wp config set DB_NAME %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbname, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ##set DBuser
+ command = "sudo -u %s %s /usr/bin/wp config set DB_USER %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbuser, newWPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ##set DBpasswd
+ command = "sudo -u %s %s /usr/bin/wp config set DB_PASSWORD %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbpasswd, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Replacing URLs...,90')
+ ########Now Replace URL's
+ command = 'sudo -u %s /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp search-replace --skip-plugins --skip-themes --path=%s "%s" "%s"' % (
+ VHuser, newWPpath, oldurl, newurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ 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)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ command = f'sudo -u {VHuser} /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp litespeed-purge all --path={newWPpath}'
+ ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ # ##Remove temppath
+ command = f'rm -rf {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ ###Restart Server
+
+ from plogical.installUtilities import installUtilities
+ installUtilities.reStartLiteSpeed()
+ ####Check if BAckup type is Only Webdata
+ elif BackupType == 'Website Backup':
+ if (DomainName == "" and int(self.extraArgs['DesSiteID']) != -1):
+ wpsite = WPSites.objects.get(pk=DesSiteID)
+ webobj = Websites.objects.get(pk=wpsite.owner_id)
+ ag = WPSites.objects.filter(owner=webobj).count()
+ if ag > 0:
+ ###Website found --> Wpsite Found
+ finalurl = "%s%s" % (webobj.domain, oldurl[oldurl.find('/'):])
+ try:
+ WPobj = WPSites.objects.get(FinalURL=finalurl, owner=webobj)
+ ###Website found --> WPsite Found --> Final URL Match
+ #### Do not create Ne site
+ ### get WPsite Database name and usr
+ VHuser = wpsite.owner.externalApp
+ PhpVersion = WPobj.owner.phpSelection
+ newWPpath = WPobj.path
+ php = PHPManager.getPHPString(PhpVersion)
+ FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
+
+ ### 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}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = f'chown -R {wpsite.owner.externalApp}:{wpsite.owner.externalApp} {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Extracting Backup File...,30')
+
+ ###First copy backup file to temp and then Unzip
+ command = "sudo -u %s cp -R /home/backup/%s* %s" % (
+ VHuser, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ #### Make temp dir ab for unzip
+ command = "sudo -u %s mkdir %s/ab" % (VHuser, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s tar -xvf %s/%s.tar.gz -C %s/ab" % (
+ VHuser, self.tempPath, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/" % (self.tempPath, oldtemppath)
+
+ command = "sudo -u %s cp -R %s* %s" % (VHuser, unzippath, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s cp -R %s.[^.]* %s" % (VHuser, unzippath, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Replacing URLs...,90')
+ ########Now Replace URL's
+ command = 'sudo -u %s /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp search-replace --skip-plugins --skip-themes --path=%s "%s" "%s"' % (
+ VHuser, newWPpath, oldurl, finalurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ 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, finalurl, finalurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ command = f'sudo -u {VHuser} /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp litespeed-purge all --path={newWPpath}'
+ ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ # ##Remove temppath
+ command = f'rm -rf {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ except:
+ ####Website found --> WPsite Found --> Final URL Not Match
+ ####Create new obj and call wordpressnew
+ Newurl = wpsite.FinalURL
+ WPpath = wpsite.path
+ VHuser = wpsite.owner.externalApp
+ PhpVersion = wpsite.owner.phpSelection
+ php = PHPManager.getPHPString(PhpVersion)
+ FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
+
+ ### 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}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = f'chown -R {wpsite.owner.externalApp}:{wpsite.owner.externalApp} {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Extracting Backup File...,30')
+
+ ###First copy backup file to temp and then Unzip
+ command = "sudo -u %s cp -R /home/backup/%s* %s" % (
+ VHuser, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ #### Make temp dir ab for unzip
+ command = "sudo -u %s mkdir %s/ab" % (VHuser, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s tar -xvf %s/%s.tar.gz -C %s/ab" % (
+ VHuser, self.tempPath, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/" % (self.tempPath, oldtemppath)
+
+ command = "sudo -u %s cp -R %s* %s" % (VHuser, unzippath, WPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s cp -R %s.[^.]* %s" % (VHuser, unzippath, WPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Replacing URLs...,90')
+ ########Now Replace URL's
+ command = 'sudo -u %s /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp search-replace --skip-plugins --skip-themes --path=%s "%s" "%s"' % (
+ VHuser, WPpath, oldurl, Newurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ 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, WPpath, Newurl, Newurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ command = f'sudo -u {VHuser} /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp litespeed-purge all --path={WPpath}'
+ ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ # ##Remove temppath
+ command = f'rm -rf {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+ elif (DomainName != "" and int(self.extraArgs['DesSiteID']) == -1):
+ DataToPass = {}
+
+ DataToPass['title'] = config['WPtitle']
+ DataToPass['domain'] = DomainName
+ DataToPass['WPVersion'] = "6.0"
+ DataToPass['adminUser'] = config['WebVHuser']
+ DataToPass['Email'] = config['WebadminEmail']
+ DataToPass['PasswordByPass'] = config['DatabaseUser']
+ DataToPass['AutomaticUpdates'] = config['WPAutoUpdates']
+ DataToPass['Plugins'] = config['WPPluginUpdates']
+ DataToPass['Themes'] = config['WPThemeUpdates']
+ DataToPass['websiteOwner'] = WebOwner
+ DataToPass['package'] = packegs
+ try:
+ oldpath = config['WPsitepath']
+ abc = oldpath.split("/")
+ newpath = abc[4]
+ oldhome = "0"
+ except BaseException as msg:
+ oldhome = "1"
+
+ if self.extraArgs['path'] == '':
+ newurl = DomainName
+ else:
+ newurl = "%s/%s" % (DomainName, self.extraArgs['path'])
+
+ DataToPass['path'] = self.extraArgs['path']
+
+ DataToPass['home'] = self.extraArgs['home']
+
+ ab = WebsiteManager()
+ coreResult = ab.submitWorpressCreation(userID, DataToPass)
+ coreResult1 = json.loads((coreResult).content)
+ logging.writeToFile("WP Creating website result....%s" % coreResult1)
+ reutrntempath = coreResult1['tempStatusPath']
+ while (1):
+ lastLine = open(reutrntempath, 'r').read()
+ logging.writeToFile("Error WP creating lastline ....... %s" % lastLine)
+ if lastLine.find('[200]') > -1:
+ break
+ elif lastLine.find('[404]') > -1:
+ logging.statusWriter(self.tempStatusPath,
+ 'Failed to Create WordPress: error: %s. [404]' % lastLine)
+ return 0
+ else:
+ logging.statusWriter(self.tempStatusPath, 'Creating WordPress....,20')
+ time.sleep(2)
+
+ logging.statusWriter(self.tempStatusPath, 'Restoring site ....,30')
+ NewWPsite = WPSites.objects.get(FinalURL=newurl)
+ VHuser = NewWPsite.owner.externalApp
+ PhpVersion = NewWPsite.owner.phpSelection
+ newWPpath = NewWPsite.path
+
+ ###### Same code already used in Existing site
+
+ ### get WPsite Database name and usr
+ php = PHPManager.getPHPString(PhpVersion)
+ FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
+
+ ### 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}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = f'chown -R {NewWPsite.owner.externalApp}:{NewWPsite.owner.externalApp} {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Extracting Backup File...,40')
+
+ ###First copy backup file to temp and then Unzip
+ command = "sudo -u %s cp -R /home/backup/%s* %s" % (VHuser, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ #### Make temp dir ab for unzip
+ command = "sudo -u %s mkdir %s/ab" % (VHuser, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s tar -xvf %s/%s.tar.gz -C %s/ab" % (
+ VHuser, self.tempPath, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Copying Data File...,60')
+ ###Copy backup content to newsite
+ if oldhome == "0":
+ unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/" % (self.tempPath, oldtemppath)
+ 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)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s cp -R %s.[^.]* %s" % (VHuser, unzippath, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Replacing URLs...,90')
+ ########Now Replace URL's
+ command = 'sudo -u %s /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp search-replace --skip-plugins --skip-themes --path=%s "%s" "%s"' % (
+ VHuser, newWPpath, oldurl, newurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ 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)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ command = f'sudo -u {VHuser} /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp litespeed-purge all --path={newWPpath}'
+ ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ ##Remove temppath
+ command = f'rm -rf {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ###Restart Server
+
+ from plogical.installUtilities import installUtilities
+ installUtilities.reStartLiteSpeed()
+
+ ####Check if backup type is Both web and DB
+ else:
+ ############## Existing site
+ if (DomainName == "" and int(self.extraArgs['DesSiteID']) != -1):
+ wpsite = WPSites.objects.get(pk=DesSiteID)
+ webobj = Websites.objects.get(pk=wpsite.owner_id)
+ ag = WPSites.objects.filter(owner=webobj).count()
+ if ag > 0:
+ ###Website found --> Wpsite Found
+ finalurl = "%s%s" % (webobj.domain, oldurl[oldurl.find('/'):])
+ try:
+ WPobj = WPSites.objects.get(FinalURL=finalurl, owner=webobj)
+ ###Website found --> WPsite Found --> Final URL Match
+ #### Do not create Ne site
+ ### get WPsite Database name and usr
+ VHuser = wpsite.owner.externalApp
+ PhpVersion = WPobj.owner.phpSelection
+ newWPpath = WPobj.path
+ php = PHPManager.getPHPString(PhpVersion)
+ FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
+
+ ######Get DBname
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_NAME --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, newWPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+ else:
+ Finaldbname = stdout.rstrip("\n")
+
+ ######Get DBuser
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_USER --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, newWPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+ else:
+ Finaldbuser = stdout.rstrip("\n")
+
+ #####Get DBpsswd
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_PASSWORD --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, newWPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+ else:
+ Finaldbpasswd = stdout.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}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = f'chown -R {wpsite.owner.externalApp}:{wpsite.owner.externalApp} {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Extracting Backup File...,30')
+
+ ###First copy backup file to temp and then Unzip
+ command = "sudo -u %s cp -R /home/backup/%s* %s" % (
+ VHuser, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ #### Make temp dir ab for unzip
+ command = "sudo -u %s mkdir %s/ab" % (VHuser, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s tar -xvf %s/%s.tar.gz -C %s/ab" % (
+ VHuser, self.tempPath, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/" % (self.tempPath, oldtemppath)
+
+ command = "sudo -u %s cp -R %s* %s" % (VHuser, unzippath, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s cp -R %s.[^.]* %s" % (VHuser, unzippath, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ # 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)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Restoreing Data Base...,70')
+ #####SetUp DataBase Settings
+ ##set DBName
+ command = "sudo -u %s %s /usr/bin/wp config set DB_NAME %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbname, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ##set DBuser
+ command = "sudo -u %s %s /usr/bin/wp config set DB_USER %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbuser, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ##set DBpasswd
+ command = "sudo -u %s %s /usr/bin/wp config set DB_PASSWORD %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbpasswd, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Replacing URLs...,90')
+ ########Now Replace URL's
+ command = 'sudo -u %s /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp search-replace --skip-plugins --skip-themes --path=%s "%s" "%s"' % (
+ VHuser, newWPpath, oldurl, finalurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ 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, finalurl, finalurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ command = f'sudo -u {VHuser} /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp litespeed-purge all --path={newWPpath}'
+ ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ # ##Remove temppath
+ command = f'rm -rf {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ except:
+ ####Website found --> WPsite Found --> Final URL Not Match
+ ####Create new obj and call wordpressnew
+ Newurl = wpsite.FinalURL
+ WPpath = wpsite.path
+ VHuser = wpsite.owner.externalApp
+ PhpVersion = wpsite.owner.phpSelection
+ php = PHPManager.getPHPString(PhpVersion)
+ FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
+
+ ######Get DBname
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_NAME --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, WPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+ else:
+ Finaldbname = stdout.rstrip("\n")
+
+ ######Get DBuser
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_USER --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, WPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+ else:
+ Finaldbuser = stdout.rstrip("\n")
+
+ #####Get DBpsswd
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_PASSWORD --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, WPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+ else:
+ Finaldbpasswd = stdout.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}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = f'chown -R {wpsite.owner.externalApp}:{wpsite.owner.externalApp} {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Extracting Backup File...,30')
+
+ ###First copy backup file to temp and then Unzip
+ command = "sudo -u %s cp -R /home/backup/%s* %s" % (
+ VHuser, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ #### Make temp dir ab for unzip
+ command = "sudo -u %s mkdir %s/ab" % (VHuser, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s tar -xvf %s/%s.tar.gz -C %s/ab" % (
+ VHuser, self.tempPath, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/" % (self.tempPath, oldtemppath)
+
+ command = "sudo -u %s cp -R %s* %s" % (VHuser, unzippath, WPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s cp -R %s.[^.]* %s" % (VHuser, unzippath, WPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ # 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)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Restoreing Data Base...,70')
+ #####SetUp DataBase Settings
+ ##set DBName
+ command = "sudo -u %s %s /usr/bin/wp config set DB_NAME %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbname, WPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ##set DBuser
+ command = "sudo -u %s %s /usr/bin/wp config set DB_USER %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbuser, WPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ##set DBpasswd
+ command = "sudo -u %s %s /usr/bin/wp config set DB_PASSWORD %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbpasswd, WPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Replacing URLs...,90')
+ ########Now Replace URL's
+ command = 'sudo -u %s /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp search-replace --skip-plugins --skip-themes --path=%s "%s" "%s"' % (
+ VHuser, WPpath, oldurl, Newurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ 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, WPpath, Newurl, Newurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ command = f'sudo -u {VHuser} /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp litespeed-purge all --path={WPpath}'
+ ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ # ##Remove temppath
+ command = f'rm -rf {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ ############## New Site
+ elif (DomainName != "" and int(self.extraArgs['DesSiteID']) == -1):
+ ###############Create New WordPressSite First
+ # logging.writeToFile("New Website Domain ....... %s" % str(DomainName))
+ # logging.writeToFile("New Website Domain path....... %s" % str(self.extraArgs['path']))
+ DataToPass = {}
+
+ DataToPass['title'] = config['WPtitle']
+ DataToPass['domain'] = DomainName
+ DataToPass['WPVersion'] = "6.0"
+ DataToPass['adminUser'] = config['WebVHuser']
+ DataToPass['Email'] = config['WebadminEmail']
+ DataToPass['PasswordByPass'] = config['DatabaseUser']
+ DataToPass['AutomaticUpdates'] = config['WPAutoUpdates']
+ DataToPass['Plugins'] = config['WPPluginUpdates']
+ DataToPass['Themes'] = config['WPThemeUpdates']
+ DataToPass['websiteOwner'] = WebOwner
+ DataToPass['package'] = packegs
+ try:
+ oldpath = config['WPsitepath']
+ abc = oldpath.split("/")
+ newpath = abc[4]
+ oldhome = "0"
+ except BaseException as msg:
+ oldhome = "1"
+
+ if self.extraArgs['path'] == '':
+ newurl = DomainName
+ else:
+ newurl = "%s/%s" % (DomainName, self.extraArgs['path'])
+
+ DataToPass['path'] = self.extraArgs['path']
+
+ DataToPass['home'] = self.extraArgs['home']
+
+ ab = WebsiteManager()
+ coreResult = ab.submitWorpressCreation(userID, DataToPass)
+ coreResult1 = json.loads((coreResult).content)
+ logging.writeToFile("WP Creating website result....%s" % coreResult1)
+ reutrntempath = coreResult1['tempStatusPath']
+ while (1):
+ lastLine = open(reutrntempath, 'r').read()
+ logging.writeToFile("Error WP creating lastline ....... %s" % lastLine)
+ if lastLine.find('[200]') > -1:
+ break
+ elif lastLine.find('[404]') > -1:
+ logging.statusWriter(self.tempStatusPath,
+ 'Failed to Create WordPress: error: %s. [404]' % lastLine)
+ return 0
+ else:
+ logging.statusWriter(self.tempStatusPath, 'Creating WordPress....,20')
+ time.sleep(2)
+
+ logging.statusWriter(self.tempStatusPath, 'Restoring site ....,30')
+ logging.writeToFile("Create site url =%s" % newurl)
+ NewWPsite = WPSites.objects.get(FinalURL=newurl)
+ VHuser = NewWPsite.owner.externalApp
+ PhpVersion = NewWPsite.owner.phpSelection
+ newWPpath = NewWPsite.path
+
+ ###### Same code already used in Existing site
+
+ ### get WPsite Database name and usr
+ php = PHPManager.getPHPString(PhpVersion)
+ FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php)
+
+ ######Get DBname
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_NAME --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, newWPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+ else:
+ Finaldbname = stdout.rstrip("\n")
+
+ ######Get DBuser
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_USER --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, newWPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+ else:
+ Finaldbuser = stdout.rstrip("\n")
+
+ #####Get DBpsswd
+ command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_PASSWORD --skip-plugins --skip-themes --path=%s' % (
+ VHuser, FinalPHPPath, newWPpath)
+
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+ else:
+ Finaldbpasswd = stdout.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}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = f'chown -R {NewWPsite.owner.externalApp}:{NewWPsite.owner.externalApp} {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Extracting Backup File...,40')
+
+ ###First copy backup file to temp and then Unzip
+ command = "sudo -u %s cp -R /home/backup/%s* %s" % (VHuser, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ #### Make temp dir ab for unzip
+ command = "sudo -u %s mkdir %s/ab" % (VHuser, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s tar -xvf %s/%s.tar.gz -C %s/ab" % (
+ VHuser, self.tempPath, BackUpFileName, self.tempPath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Copying Data File...,60')
+ ###Copy backup content to newsite
+ if oldhome == "0":
+ unzippath = "%s/ab/usr/local/CyberCP/tmp/%s/public_html/" % (self.tempPath, oldtemppath)
+ 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)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ command = "sudo -u %s cp -R %s.[^.]* %s" % (VHuser, unzippath, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if result == 0:
+ raise BaseException(stdout)
+
+ # 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)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Restoreing Data Base...,80')
+ #####SetUp DataBase Settings
+ ##set DBName
+ command = "sudo -u %s %s /usr/bin/wp config set DB_NAME %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbname, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ##set DBuser
+ command = "sudo -u %s %s /usr/bin/wp config set DB_USER %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbuser, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ##set DBpasswd
+ command = "sudo -u %s %s /usr/bin/wp config set DB_PASSWORD %s --skip-plugins --skip-themes --path=%s" % (
+ VHuser, FinalPHPPath, Finaldbpasswd, newWPpath)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ logging.statusWriter(self.tempStatusPath, 'Replacing URLs...,90')
+ ########Now Replace URL's
+ command = 'sudo -u %s /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp search-replace --skip-plugins --skip-themes --path=%s "%s" "%s"' % (
+ VHuser, newWPpath, oldurl, newurl)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ 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)
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ command = f'sudo -u {VHuser} /usr/local/lsws/lsphp74/bin/php -d error_reporting=0 /usr/bin/wp litespeed-purge all --path={newWPpath}'
+ ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ ##Remove temppath
+ command = f'rm -rf {self.tempPath}'
+ result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
+
+ if stdout.find('Error:') > -1:
+ raise BaseException(stdout)
+
+ ###Restart Server
+
+ from plogical.installUtilities import installUtilities
+ installUtilities.reStartLiteSpeed()
#####Local BAckups
else:
|