From 39ccb8300895a1de1757c0b2fea0bfa4654cc381 Mon Sep 17 00:00:00 2001 From: Andrew <mcdeweykp@gmail.com> Date: Mon, 10 Jan 2022 00:10:03 -0500 Subject: [PATCH] Fix bug where backkups could not be restore. Directly caused by the changes made in server zip import --- app/classes/shared/helpers.py | 12 ++++++++++++ app/classes/web/ajax_handler.py | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/classes/shared/helpers.py b/app/classes/shared/helpers.py index da882b10..3b788056 100644 --- a/app/classes/shared/helpers.py +++ b/app/classes/shared/helpers.py @@ -793,6 +793,18 @@ class Helpers: }) return + @staticmethod + def unzip_backup_archive(backup_path, zip_name): + zip_path = os.path.join(backup_path, zip_name) + if helper.check_file_perms(zip_path): + tempDir = tempfile.mkdtemp() + with zipfile.ZipFile(zip_path, 'r') as zip_ref: + #extracts archive to temp directory + zip_ref.extractall(tempDir) + return tempDir + else: + return False + @staticmethod def in_path(parent_path, child_path): # Smooth out relative path names, note: if you are concerned about symbolic links, you should use os.path.realpath too diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index b22722fe..1456d7e4 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -285,7 +285,8 @@ class AjaxHandler(BaseHandler): 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): - new_server = self.controller.import_zip_server(svr_obj.server_name, os.path.join(backup_path, zip_name), server_data['executable'], '1', '2', server_data['server_port']) + 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'])