mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 22:06:05 +01:00
make backups rclone compatible
This commit is contained in:
@@ -35,7 +35,14 @@ class CPBackupsV2:
|
|||||||
|
|
||||||
def __init__(self, data):
|
def __init__(self, data):
|
||||||
self.data = data
|
self.data = data
|
||||||
pass
|
|
||||||
|
### set self.website as it is needed in many functions
|
||||||
|
from websiteFunctions.models import Websites
|
||||||
|
self.website = Websites.objects.get(domain=self.data['domain'])
|
||||||
|
|
||||||
|
## Set up the repo name to be used
|
||||||
|
|
||||||
|
self.repo = f"rclone:{self.data['BackendName']}:{self.data['domain']}"
|
||||||
|
|
||||||
def SetupRcloneBackend(self, type, config):
|
def SetupRcloneBackend(self, type, config):
|
||||||
self.LocalRclonePath = f'/home/{self.website.domain}/.config/rclone'
|
self.LocalRclonePath = f'/home/{self.website.domain}/.config/rclone'
|
||||||
@@ -62,7 +69,6 @@ pass = {ObsecurePassword}
|
|||||||
command = f"chmod 600 {self.ConfigFilePath}"
|
command = f"chmod 600 {self.ConfigFilePath}"
|
||||||
ProcessUtilities.executioner(command, self.website.externalApp)
|
ProcessUtilities.executioner(command, self.website.externalApp)
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def FetchCurrentTimeStamp():
|
def FetchCurrentTimeStamp():
|
||||||
import time
|
import time
|
||||||
@@ -84,8 +90,22 @@ pass = {ObsecurePassword}
|
|||||||
self.buv2.website.BackupLock = 0
|
self.buv2.website.BackupLock = 0
|
||||||
self.buv2.website.save()
|
self.buv2.website.save()
|
||||||
|
|
||||||
def InitiateBackup(self):
|
def BackupConfig(self):
|
||||||
|
### Backup config file to rustic
|
||||||
|
|
||||||
|
command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}'
|
||||||
|
ProcessUtilities.executioner(command)
|
||||||
|
|
||||||
|
command = f'rustic init -r {self.repo} --password ""'
|
||||||
|
ProcessUtilities.executioner(command, self.website.externalApp)
|
||||||
|
|
||||||
|
#command = f'chown cyberpanel:cyberpanel {self.FinalPathRuctic}'
|
||||||
|
#ProcessUtilities.executioner(command)
|
||||||
|
|
||||||
|
command = f'rustic -r {self.repo} backup {self.FinalPathRuctic}/config.json --password ""'
|
||||||
|
ProcessUtilities.executioner(command)
|
||||||
|
|
||||||
|
def InitiateBackup(self):
|
||||||
|
|
||||||
from websiteFunctions.models import Websites, Backupsv2
|
from websiteFunctions.models import Websites, Backupsv2
|
||||||
from django.forms.models import model_to_dict
|
from django.forms.models import model_to_dict
|
||||||
@@ -264,19 +284,6 @@ pass = {ObsecurePassword}
|
|||||||
command = f"chmod 600 {self.FinalPathRuctic}/config.json"
|
command = f"chmod 600 {self.FinalPathRuctic}/config.json"
|
||||||
ProcessUtilities.executioner(command)
|
ProcessUtilities.executioner(command)
|
||||||
|
|
||||||
### Backup config file to rustic
|
|
||||||
|
|
||||||
command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}'
|
|
||||||
ProcessUtilities.executioner(command)
|
|
||||||
|
|
||||||
command = f'rustic init -r {self.FinalPathRuctic} --password ""'
|
|
||||||
ProcessUtilities.executioner(command, self.website.externalApp)
|
|
||||||
|
|
||||||
command = f'chown cyberpanel:cyberpanel {self.FinalPathRuctic}'
|
|
||||||
ProcessUtilities.executioner(command)
|
|
||||||
|
|
||||||
command = f'rustic -r {self.FinalPathRuctic} backup {self.FinalPathRuctic}/config.json --password ""'
|
|
||||||
ProcessUtilities.executioner(command)
|
|
||||||
|
|
||||||
self.UpdateStatus('Backup config created,5', CPBackupsV2.RUNNING)
|
self.UpdateStatus('Backup config created,5', CPBackupsV2.RUNNING)
|
||||||
except BaseException as msg:
|
except BaseException as msg:
|
||||||
@@ -368,10 +375,10 @@ pass = {ObsecurePassword}
|
|||||||
### excluded databases are in a list self.data['ExcludedDatabases'] only backup databases if backupdatabase check is on
|
### excluded databases are in a list self.data['ExcludedDatabases'] only backup databases if backupdatabase check is on
|
||||||
## For example if self.data['BackupDatabase'] is one then only run this function otherwise not
|
## For example if self.data['BackupDatabase'] is one then only run this function otherwise not
|
||||||
|
|
||||||
command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}'
|
#command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}'
|
||||||
ProcessUtilities.executioner(command)
|
#ProcessUtilities.executioner(command)
|
||||||
|
|
||||||
command = f'rustic init -r {self.FinalPathRuctic} --password ""'
|
command = f'rustic init -r {self.repo} --password ""'
|
||||||
ProcessUtilities.executioner(command, self.website.externalApp)
|
ProcessUtilities.executioner(command, self.website.externalApp)
|
||||||
|
|
||||||
command = f'chown cyberpanel:cyberpanel {self.FinalPathRuctic}'
|
command = f'chown cyberpanel:cyberpanel {self.FinalPathRuctic}'
|
||||||
@@ -396,7 +403,7 @@ pass = {ObsecurePassword}
|
|||||||
command = f'chown {self.website.externalApp}:{self.website.externalApp} {CurrentDBPath}'
|
command = f'chown {self.website.externalApp}:{self.website.externalApp} {CurrentDBPath}'
|
||||||
ProcessUtilities.executioner(command)
|
ProcessUtilities.executioner(command)
|
||||||
|
|
||||||
command = f'rustic -r {self.FinalPathRuctic} backup {CurrentDBPath} --password "" --json 2>/dev/null'
|
command = f'rustic -r {self.repo} backup {CurrentDBPath} --password "" --json 2>/dev/null'
|
||||||
print(f'db command rustic: {command}')
|
print(f'db command rustic: {command}')
|
||||||
result = json.loads(
|
result = json.loads(
|
||||||
ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n'))
|
ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n'))
|
||||||
@@ -458,10 +465,10 @@ pass = {ObsecurePassword}
|
|||||||
### excluded directories are in a list self.data['ExcludedDirectories'] only backup data if backupdata check is on
|
### excluded directories are in a list self.data['ExcludedDirectories'] only backup data if backupdata check is on
|
||||||
## For example if self.data['BackupData'] is one then only run this function otherwise not
|
## For example if self.data['BackupData'] is one then only run this function otherwise not
|
||||||
|
|
||||||
command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}'
|
#command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}'
|
||||||
ProcessUtilities.executioner(command)
|
#ProcessUtilities.executioner(command)
|
||||||
|
|
||||||
command = f'rustic init -r {self.FinalPathRuctic} --password ""'
|
command = f'rustic init -r {self.repo} --password ""'
|
||||||
ProcessUtilities.executioner(command, self.website.externalApp)
|
ProcessUtilities.executioner(command, self.website.externalApp)
|
||||||
|
|
||||||
source = f'/home/{self.website.domain}'
|
source = f'/home/{self.website.domain}'
|
||||||
@@ -470,7 +477,7 @@ pass = {ObsecurePassword}
|
|||||||
|
|
||||||
exclude = f' --exclude-if-present rusticbackup --exclude-if-present logs '
|
exclude = f' --exclude-if-present rusticbackup --exclude-if-present logs '
|
||||||
|
|
||||||
command = f'rustic -r {self.FinalPathRuctic} backup {source} --password "" {exclude} --json 2>/dev/null'
|
command = f'rustic -r {self.repo} backup {source} --password "" {exclude} --json 2>/dev/null'
|
||||||
result = json.loads(ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n'))
|
result = json.loads(ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n'))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -492,10 +499,10 @@ pass = {ObsecurePassword}
|
|||||||
### excluded emails are in a list self.data['ExcludedEmails'] only backup data if backupemail check is on
|
### excluded emails are in a list self.data['ExcludedEmails'] only backup data if backupemail check is on
|
||||||
## For example if self.data['BackupEmails'] is one then only run this function otherwise not
|
## For example if self.data['BackupEmails'] is one then only run this function otherwise not
|
||||||
|
|
||||||
command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}'
|
#command = f'chown {self.website.externalApp}:{self.website.externalApp} {self.FinalPathRuctic}'
|
||||||
ProcessUtilities.executioner(command)
|
#ProcessUtilities.executioner(command)
|
||||||
|
|
||||||
command = f'rustic init -r {self.FinalPathRuctic} --password ""'
|
command = f'rustic init -r {self.repo} --password ""'
|
||||||
ProcessUtilities.executioner(command, self.website.externalApp)
|
ProcessUtilities.executioner(command, self.website.externalApp)
|
||||||
|
|
||||||
|
|
||||||
@@ -505,7 +512,7 @@ pass = {ObsecurePassword}
|
|||||||
|
|
||||||
exclude = f' --exclude-if-present rusticbackup --exclude-if-present logs '
|
exclude = f' --exclude-if-present rusticbackup --exclude-if-present logs '
|
||||||
|
|
||||||
command = f'rustic -r {self.FinalPathRuctic} backup {source} --password "" {exclude} --json 2>/dev/null'
|
command = f'rustic -r {self.repo} backup {source} --password "" {exclude} --json 2>/dev/null'
|
||||||
|
|
||||||
result = json.loads(ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n'))
|
result = json.loads(ProcessUtilities.outputExecutioner(command, self.website.externalApp, True).rstrip('\n'))
|
||||||
|
|
||||||
|
|||||||
@@ -453,10 +453,11 @@ def refreshLicense(request):
|
|||||||
from plogical.Backupsv2 import CPBackupsV2
|
from plogical.Backupsv2 import CPBackupsV2
|
||||||
cpbuv2 = CPBackupsV2(
|
cpbuv2 = CPBackupsV2(
|
||||||
{'domain': 'cyberpanel.net', 'BasePath': '/home/backup', 'BackupDatabase': 1, 'BackupData': 1,
|
{'domain': 'cyberpanel.net', 'BasePath': '/home/backup', 'BackupDatabase': 1, 'BackupData': 1,
|
||||||
'BackupEmails': 1})
|
'BackupEmails': 1, 'BackendName': 'testremote'})
|
||||||
RcloneData = {"name":'testremote', "host":"", "user": "", "port": "22", "path": "custombackups", "password":"",}
|
RcloneData = {"name":'testremote', "host":"staging.cyberpanel.net", "user": "abcds2751", "port": "22", "password":"hosting",}
|
||||||
cpbuv2.InitiateBackup()
|
|
||||||
cpbuv2.SetupRcloneBackend(CPBackupsV2.SFTP, RcloneData)
|
cpbuv2.SetupRcloneBackend(CPBackupsV2.SFTP, RcloneData)
|
||||||
|
cpbuv2.InitiateBackup()
|
||||||
|
|
||||||
#cpbuv2.InstallRustic()
|
#cpbuv2.InstallRustic()
|
||||||
|
|
||||||
final_dic = {'status': 1}
|
final_dic = {'status': 1}
|
||||||
|
|||||||
Reference in New Issue
Block a user