mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2025-01-18 17:15:13 +01:00
Merge branch 'bug/backups-restore/download' into 'dev'
Bug/backups restore/download See merge request crafty-controller/crafty-commander!197
This commit is contained in:
commit
eda9f44b5f
@ -1,5 +1,6 @@
|
||||
import os
|
||||
import pathlib
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import time
|
||||
import logging
|
||||
@ -513,10 +514,13 @@ class Controller:
|
||||
server_data = self.servers.get_server_data_by_id(old_server_id)
|
||||
old_bu_path = server_data['backup_path']
|
||||
Server_Perms_Controller.backup_role_swap(old_server_id, new_server_id)
|
||||
backup_path = helper.validate_traversal(helper.backup_path, old_bu_path)
|
||||
if not helper.is_os_windows():
|
||||
backup_path = helper.validate_traversal(helper.backup_path, old_bu_path)
|
||||
if helper.is_os_windows():
|
||||
backup_path = helper.wtol_path(backup_path)
|
||||
backup_path = helper.validate_traversal(helper.wtol_path(helper.backup_path), helper.wtol_path(old_bu_path))
|
||||
backup_path = helper.wtol_path(str(backup_path))
|
||||
backup_path.replace(' ', '^ ')
|
||||
backup_path = Path(backup_path)
|
||||
backup_path_components = list(backup_path.parts)
|
||||
backup_path_components[-1] = new_uuid
|
||||
new_bu_path = pathlib.PurePath(os.path.join(*backup_path_components))
|
||||
|
@ -178,7 +178,11 @@ class Server:
|
||||
#Register an shedule for polling server stats when running
|
||||
logger.info(f"Polling server statistics {self.name} every {5} seconds")
|
||||
console.info(f"Polling server statistics {self.name} every {5} seconds")
|
||||
self.server_scheduler.add_job(self.realtime_stats, 'interval', seconds=5, id="stats_"+str(self.server_id))
|
||||
try:
|
||||
self.server_scheduler.add_job(self.realtime_stats, 'interval', seconds=5, id="stats_"+str(self.server_id))
|
||||
except:
|
||||
self.server_scheduler.remove_job('stats_'+str(self.server_id))
|
||||
self.server_scheduler.add_job(self.realtime_stats, 'interval', seconds=5, id="stats_"+str(self.server_id))
|
||||
|
||||
|
||||
def setup_server_run_command(self):
|
||||
@ -514,6 +518,7 @@ class Server:
|
||||
proc.kill()
|
||||
# kill the main process we are after
|
||||
logger.info('Sending SIGKILL to parent')
|
||||
self.server_scheduler.remove_job("stats_"+str(self.server_id))
|
||||
self.process.kill()
|
||||
|
||||
def get_start_time(self):
|
||||
|
@ -337,19 +337,34 @@ class AjaxHandler(BaseHandler):
|
||||
zip_name = bleach.clean(self.get_argument('zip_file', None))
|
||||
svr_obj = self.controller.servers.get_server_obj(server_id)
|
||||
server_data = self.controller.servers.get_server_data_by_id(server_id)
|
||||
backup_path = svr_obj.backup_path
|
||||
if helper.validate_traversal(backup_path, zip_name):
|
||||
tempDir = helper.unzip_backup_archive(backup_path, zip_name)
|
||||
new_server = self.controller.import_zip_server(svr_obj.server_name,
|
||||
tempDir,
|
||||
server_data['executable'],
|
||||
'1', '2',
|
||||
server_data['server_port'])
|
||||
new_server_id = new_server
|
||||
new_server = self.controller.get_server_data(new_server)
|
||||
self.controller.rename_backup_dir(server_id, new_server_id, new_server['server_uuid'])
|
||||
self.controller.remove_server(server_id, True)
|
||||
self.redirect('/panel/dashboard')
|
||||
if server_data['type'] == 'minecraft-java':
|
||||
backup_path = svr_obj.backup_path
|
||||
if helper.validate_traversal(backup_path, zip_name):
|
||||
tempDir = helper.unzip_backup_archive(backup_path, zip_name)
|
||||
new_server = self.controller.import_zip_server(svr_obj.server_name,
|
||||
tempDir,
|
||||
server_data['executable'],
|
||||
'1', '2',
|
||||
server_data['server_port'])
|
||||
new_server_id = new_server
|
||||
new_server = self.controller.get_server_data(new_server)
|
||||
self.controller.rename_backup_dir(server_id, new_server_id, new_server['server_uuid'])
|
||||
self.controller.remove_server(server_id, True)
|
||||
self.redirect('/panel/dashboard')
|
||||
|
||||
else:
|
||||
backup_path = svr_obj.backup_path
|
||||
if helper.validate_traversal(backup_path, zip_name):
|
||||
tempDir = helper.unzip_backup_archive(backup_path, zip_name)
|
||||
new_server = self.controller.import_bedrock_zip_server(svr_obj.server_name,
|
||||
tempDir,
|
||||
server_data['executable'],
|
||||
server_data['server_port'])
|
||||
new_server_id = new_server
|
||||
new_server = self.controller.get_server_data(new_server)
|
||||
self.controller.rename_backup_dir(server_id, new_server_id, new_server['server_uuid'])
|
||||
self.controller.remove_server(server_id, True)
|
||||
self.redirect('/panel/dashboard')
|
||||
|
||||
elif page == "unzip_server":
|
||||
path = self.get_argument('path', None)
|
||||
|
@ -253,6 +253,10 @@ const server_id = new URLSearchParams(document.location.search).get('id')
|
||||
|
||||
function restore_backup(filename, id){
|
||||
var token = getCookie("_xsrf")
|
||||
var dialog = bootbox.dialog({
|
||||
message: '<i class="fa fa-spin fa-spinner"></i> {{ translate('serverBackups', 'restoring', data['lang']) }}',
|
||||
closeButton: false
|
||||
});
|
||||
|
||||
console.log('Sending Command to restore backup: ' + filename)
|
||||
$.ajax({
|
||||
@ -264,10 +268,6 @@ const server_id = new URLSearchParams(document.location.search).get('id')
|
||||
id: id
|
||||
},
|
||||
success: function(data) {
|
||||
var dialog = bootbox.dialog({
|
||||
message: '<i class="fa fa-spin fa-spinner"></i> {{ translate('serverBackups', 'restoring', data['lang']) }}',
|
||||
closeButton: false
|
||||
});
|
||||
setTimeout(function(){
|
||||
location.href=('/panel/dashboard');
|
||||
}, 15000);
|
||||
|
@ -849,7 +849,7 @@
|
||||
function downloadFileE(event) {
|
||||
path = event.target.parentElement.getAttribute('data-path');
|
||||
name = event.target.parentElement.getAttribute('data-name');
|
||||
window.location.href = `/panel/download_file?id=${server_id}&path=${path}&name=${name}`;
|
||||
window.location.href = `/panel/download_file?id=${serverId}&path=${path}&name=${name}`;
|
||||
}
|
||||
|
||||
function renameItemE(event) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user