From c37104f687edf972af94eb14e7602e2e67c45363 Mon Sep 17 00:00:00 2001 From: Hassan Hashmi <75794688+habbi-hb@users.noreply.github.com> Date: Wed, 8 Jun 2022 15:55:36 +0500 Subject: [PATCH] backuplistanddelete --- .../templates/baseTemplate/index.html | 3 + plogical/applicationInstaller.py | 56 +++--- .../websiteFunctions/websiteFunctions.js | 1 + .../websiteFunctions/RestoreBackups.html | 179 ++++++++++++++++++ websiteFunctions/urls.py | 1 + websiteFunctions/views.py | 9 + websiteFunctions/website.py | 41 +++- 7 files changed, 259 insertions(+), 31 deletions(-) create mode 100644 websiteFunctions/templates/websiteFunctions/RestoreBackups.html diff --git a/baseTemplate/templates/baseTemplate/index.html b/baseTemplate/templates/baseTemplate/index.html index 7e60963b5..3516383a2 100755 --- a/baseTemplate/templates/baseTemplate/index.html +++ b/baseTemplate/templates/baseTemplate/index.html @@ -415,6 +415,9 @@
  • {% trans "Configure Plugins" %}
  • +
  • {% trans "Restore Backups" %} +
  • diff --git a/plogical/applicationInstaller.py b/plogical/applicationInstaller.py index f7a8c16f6..be6445751 100755 --- a/plogical/applicationInstaller.py +++ b/plogical/applicationInstaller.py @@ -16,7 +16,7 @@ django.setup() import threading as multi from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging import subprocess -from websiteFunctions.models import ChildDomains, Websites, WPSites, WPStaging, wpplugins +from websiteFunctions.models import ChildDomains, Websites, WPSites, WPStaging, wpplugins, WPSitesBackup from plogical import randomPassword from plogical.mysqlUtilities import mysqlUtilities from databases.models import Databases @@ -2262,13 +2262,12 @@ $parameters = array( try: from managePHP.phpManager import PHPManager import json - tempStatusPath = self.extraArgs['tempStatusPath'] - self.tempStatusPath = tempStatusPath + logging.writeToFile("WPCreateBackup ....... start" ) + self.tempStatusPath = self.extraArgs['tempStatusPath'] + logging.statusWriter(self.tempStatusPath, 'Creating BackUp...,10') - statusFile = open(tempStatusPath, 'w') - statusFile.writelines('Creating BackUp...,10') - statusFile.close() wpsite = WPSites.objects.get(pk=self.extraArgs['WPid']) + Adminobj = Administrator.objects.get(pk=self.extraArgs['adminID']) website =Websites.objects.get(pk=wpsite.owner_id) PhpVersion = website.phpSelection @@ -2279,9 +2278,9 @@ $parameters = array( php = PHPManager.getPHPString(PhpVersion) FinalPHPPath = '/usr/local/lsws/lsphp%s/bin/php' % (php) - statusFile = open(tempStatusPath, 'w') - statusFile.writelines('Getting DataBase...,20') - statusFile.close() + + + logging.statusWriter(self.tempStatusPath, 'Getting DataBase...,20') command = 'sudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_NAME --skip-plugins --skip-themes --path=%s' % (VHuser, FinalPHPPath, WPsitepath) stdoutput = ProcessUtilities.outputExecutioner(command) @@ -2308,9 +2307,7 @@ $parameters = array( ProcessUtilities.executioner(command) ### Make directory for backup - statusFile = open(tempStatusPath, 'w') - statusFile.writelines('Creating Backup Directory...,40') - statusFile.close() + logging.statusWriter(self.tempStatusPath, 'Creating Backup Directory...,40') command = "sudo -u %s mkdir -p %s/public_html" % (VHuser, tempPath) ProcessUtilities.executioner(command) @@ -2355,9 +2352,8 @@ $parameters = array( command = "rm -r /home/cyberpanel/config.json" ProcessUtilities.executioner(command) - statusFile = open(tempStatusPath, 'w') - statusFile.writelines('Copying website data.....,50') - statusFile.close() + 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, tempPath) @@ -2372,9 +2368,9 @@ $parameters = array( if os.path.exists(ProcessUtilities.debugPath): logging.writeToFile(result) - statusFile = open(tempStatusPath, 'w') - statusFile.writelines('Copying DataBase.....,70') - statusFile.close() + logging.statusWriter(self.tempStatusPath, 'Copying DataBase.....,70') + + ##### SQLDUMP database into new directory @@ -2385,10 +2381,10 @@ $parameters = array( if os.path.exists(ProcessUtilities.debugPath): logging.writeToFile(result) + + ######## Zip backup directory - statusFile = open(tempStatusPath, 'w') - statusFile.writelines('Compressing backup files.....,90') - statusFile.close() + logging.statusWriter(self.tempStatusPath, 'Compressing backup files.....,80') websitepath = "/home/%s"%websitedomain @@ -2396,26 +2392,26 @@ $parameters = array( command = "sudo -u %s tar -czvf %s -P %s" % (VHuser, FinalZipPath, 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 {tempPath}' ProcessUtilities.executioner(command) - statusFile = open(tempStatusPath, 'w') - statusFile.writelines("Successfully Created. [200]") - statusFile.close() + + + logging.statusWriter(self.tempStatusPath, 'Completed.[200]') return 0 except BaseException as msg: + logging.writeToFile("Error WPCreateBackup ....... %s" % str(msg)) command = f'rm -rf {self.tempPath}' ProcessUtilities.executioner(command) - logging.writeToFile("Error WPCreateBackup ....... %s" % str(msg)) - statusFile = open(self.tempStatusPath, 'w') - statusFile.writelines(str(msg) + " [404]") - statusFile.close() + logging.statusWriter(self.tempStatusPath, str(msg)) return 0 diff --git a/websiteFunctions/static/websiteFunctions/websiteFunctions.js b/websiteFunctions/static/websiteFunctions/websiteFunctions.js index bbfd4fcce..44f523a92 100755 --- a/websiteFunctions/static/websiteFunctions/websiteFunctions.js +++ b/websiteFunctions/static/websiteFunctions/websiteFunctions.js @@ -1154,6 +1154,7 @@ app.controller('WPsiteHome', function ($scope, $http, $timeout, $compile, $windo $scope.couldNotConnect = true; $scope.goBackDisable = false; + $("#installProgress").css("width", "100%"); $("#installProgressbackup").css("width", "100%"); $scope.installPercentage = "100"; diff --git a/websiteFunctions/templates/websiteFunctions/RestoreBackups.html b/websiteFunctions/templates/websiteFunctions/RestoreBackups.html new file mode 100644 index 000000000..adc067a74 --- /dev/null +++ b/websiteFunctions/templates/websiteFunctions/RestoreBackups.html @@ -0,0 +1,179 @@ +{% extends "baseTemplate/index.html" %} +{% load i18n %} +{% block title %}{% trans "Restore Backpus - CyberPanel" %}{% endblock %} +{% block content %} + + {% load static %} + {% get_current_language as LANGUAGE_CODE %} + + + + + + + +
    + +
    +

    {% trans "List Backups " %} +

    + +

    {% trans "On this page you can Restore, list, modify and delete Backups Wordpress Sites from your server." %}

    +
    + + + + + + + + + + + + + + {% for sub in job %} + + + + + + + + + + {% endfor %} + + + + +
    ID + Website + Action +
    + +

    {{ sub.id }}

    +
    +
    + {{ sub.title }} + + + + + + +
    + + +
    + +{% endblock %} diff --git a/websiteFunctions/urls.py b/websiteFunctions/urls.py index 2115cd4e3..d5f37e100 100755 --- a/websiteFunctions/urls.py +++ b/websiteFunctions/urls.py @@ -20,6 +20,7 @@ urlpatterns = [ url(r'^createWordpress$', views.WPCreate, name='createWordpress'), url(r'^ListWPSites$', views.ListWPSites, name='ListWPSites'), url(r'^WPHome$', views.WPHome, name='WPHome'), + url(r'^RestoreBackups$', views.RestoreBackups, name='RestoreBackups'), url(r'^AutoLogin$', views.AutoLogin, name='AutoLogin'), diff --git a/websiteFunctions/views.py b/websiteFunctions/views.py index c55f3075c..8cc6dc5ed 100755 --- a/websiteFunctions/views.py +++ b/websiteFunctions/views.py @@ -56,6 +56,15 @@ def WPHome(request): return wm.WPHome(request, userID, WPid, DeleteID) except KeyError: return redirect(loadLoginPage) +def RestoreBackups(request): + try: + userID = request.session['userID'] + + DeleteID = request.GET.get('DeleteID') + wm = WebsiteManager() + return wm.RestoreBackups(request, userID, DeleteID) + except KeyError: + return redirect(loadLoginPage) def AutoLogin(request): try: diff --git a/websiteFunctions/website.py b/websiteFunctions/website.py index 3e424f0e8..dac489109 100755 --- a/websiteFunctions/website.py +++ b/websiteFunctions/website.py @@ -12,7 +12,7 @@ django.setup() import json from plogical.acl import ACLManager import plogical.CyberCPLogFileWriter as logging -from websiteFunctions.models import Websites, ChildDomains, GitLogs, wpplugins, WPSites, WPStaging +from websiteFunctions.models import Websites, ChildDomains, GitLogs, wpplugins, WPSites, WPStaging, WPSitesBackup from plogical.virtualHostUtilities import virtualHostUtilities import subprocess import shlex @@ -142,6 +142,45 @@ class WebsiteManager: Data, 'createWebsite') return proc.render() + def RestoreBackups(self, request=None, userID=None, DeleteID=None): + Data = {} + currentACL = ACLManager.loadedACL(userID) + admin = Administrator.objects.get(pk=userID) + + + + + backobj = WPSitesBackup.objects.filter(owner=admin) + + try: + if DeleteID != None: + DeleteIDobj = WPSitesBackup.objects.get(pk=DeleteID) + DeleteIDobj.delete() + + except BaseException as msg: + pass + Data['job'] = [] + + for sub in backobj: + try: + wpsite = WPSites.objects.get(pk=sub.WPSiteID) + web = wpsite.title + except: + web = "Website Not Found" + + Data['job'].append({ + 'id': sub.id, + 'title': web, + }) + + + + + + proc = httpProc(request, 'websiteFunctions/RestoreBackups.html', + Data, 'createWebsite') + return proc.render() + def AutoLogin(self, request=None, userID=None): WPid = request.GET.get('id')