backuplistanddelete

This commit is contained in:
Hassan Hashmi
2022-06-08 15:55:36 +05:00
parent 941a8f5ece
commit c37104f687
7 changed files with 259 additions and 31 deletions

View File

@@ -415,6 +415,9 @@
<li><a href="{% url 'ConfigurePlugins' %}"
title="{% trans 'ConfigurePlugins' %}"><span>{% trans "Configure Plugins" %}</span></a>
</li>
<li><a href="{% url 'RestoreBackups' %}"
title="{% trans 'RestoreBackups' %}"><span>{% trans "Restore Backups" %}</span></a>
</li>
</ul>
</div><!-- .sidebar-submenu -->

View File

@@ -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

View File

@@ -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";

View File

@@ -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 %}
<!-- Current language: {{ LANGUAGE_CODE }} -->
<script>
$(document).ready(function () {
$('[data-toggle="tooltip"]').tooltip();
});
</script>
<style>
table { /* tables still need 'cellspacing="0"' in the markup */
border-collapse: separate;
border-spacing: 0;
}
.table-spacing {
border-spacing: 0em .9em;
}
table th:nth-child(1) {
/* Safari 3-4, iOS 1-3.2, Android 1.6- */
-webkit-border-radius: 3px 0px 0px 3px;
/* Firefox 1-3.6 */
-moz-border-radius: 3px 0px 0px 3px;
/* Opera 10.5, IE 9, Safari 5, Chrome, Firefox 4, iOS 4, Android 2.1+ */
border-radius: 3px 0px 0px 3px;
}
table th:nth-child(1) {
/* Safari 3-4, iOS 1-3.2, Android 1.6- */
-webkit-border-radius: 20px 0px 0px 20px;
/* Firefox 1-3.6 */
-moz-border-radius: 20px 0px 0px 20px;
/* Opera 10.5, IE 9, Safari 5, Chrome, Firefox 4, iOS 4, Android 2.1+ */
border-radius: 20px 0px 0px 20px;
}
table th:nth-last-child(1) {
/* Safari 3-4, iOS 1-3.2, Android 1.6- */
-webkit-border-radius: 0px 20px 20px 0px;
/* Firefox 1-3.6 */
-moz-border-radius: 0px 20px 20px 0px;
/* Opera 10.5, IE 9, Safari 5, Chrome, Firefox 4, iOS 4, Android 2.1+ */
border-radius: 0px 20px 20px 0px;
}
table td:nth-child(1) {
/* Safari 3-4, iOS 1-3.2, Android 1.6- */
-webkit-border-radius: 20px 0px 0px 20px;
/* Firefox 1-3.6 */
-moz-border-radius: 20px 0px 0px 20px;
/* Opera 10.5, IE 9, Safari 5, Chrome, Firefox 4, iOS 4, Android 2.1+ */
border-radius: 20px 0px 0px 20px;
}
table td:nth-last-child(1) {
/* Safari 3-4, iOS 1-3.2, Android 1.6- */
-webkit-border-radius: 0px 20px 20px 0px;
/* Firefox 1-3.6 */
-moz-border-radius: 0px 20px 20px 0px;
/* Opera 10.5, IE 9, Safari 5, Chrome, Firefox 4, iOS 4, Android 2.1+ */
border-radius: 0px 20px 20px 0px;
}
</style>
<div ng-controller="listWebsites" class="container">
<div id="page-title">
<h2 id="domainNamePage">{% trans "List Backups " %}
</h2>
<img ng-hide="cyberPanelLoading" src="{% static 'images/loading.gif' %}">
<p>{% trans "On this page you can Restore, list, modify and delete Backups Wordpress Sites from your server." %}</p>
</div>
<table class="table-spacing" style="width: 100%">
<thead style="color: white; background-color: #0a6ebd">
<tr>
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">ID
</th>
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">Website
</th>
<th style="padding: 18px; color: white; width: 161px; font-size: 12px;">Action
</th>
</tr>
</thead>
<tbody style="background-color: #d9eefa">
{% for sub in job %}
<tr>
<td style="padding: 13px;">
<a href="#">
<p style="font-weight: bold; text-transform: uppercase; ">{{ sub.id }}</p>
</a>
</td>
<td style="padding: 13px;">
{{ sub.title }}
</td>
<td style="padding: 13px;">
<button
data-toggle="modal"
data-target="#DeleteMember" aria-label=""
onclick="DeleteWPNow('{% url 'RestoreBackups' %}?DeleteID={{ sub.id }}')"
type="button" class="btn btn-border btn-alt border-red btn-link font-red">
Delete
</button>
<div id="DeleteMember" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;
</button>
<h4 class="modal-title">Delete WordPress Site
<img ng-hide="$parent.cyberPanelLoading"
src="/static/images/loading.gif"
style="display: none;">
</h4>
</div>
<div class="modal-body">
<form name="DeleteDocumentRootForm" action="/"
class="form-horizontal">
<span>Do you want to delete the site?</span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary"
onclick="FinalDeleteWPNow()">Yes
</button>
<button type="button" ng-disabled="savingSettings"
class="btn btn-default" data-dismiss="modal">
Cancel
</button>
</div>
</div>
</div>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}

View File

@@ -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'),

View File

@@ -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:

View File

@@ -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')