From f976cd18c120db1b8a106975cb7406d60598be3d Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 1 Sep 2025 09:27:41 -0400 Subject: [PATCH 1/4] Fix bedrock update file helper static call --- app/classes/shared/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index 21d58015..d482b18d 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -1403,7 +1403,7 @@ class ServerInstance: unzip_path = self.helper.wtol_path(unzip_path) # unzips archive that was downloaded. - FileHelpers.unzip_file(unzip_path, server_update=True) + self.file_helper.unzip_file(unzip_path, server_update=True) # adjusts permissions for execution if os is not windows if not self.helper.is_os_windows(): -- GitLab From 4b1aba2f2123e50356ff994d7799edde9d395b76 Mon Sep 17 00:00:00 2001 From: = Date: Tue, 2 Sep 2025 10:12:51 -0400 Subject: [PATCH 2/4] Consolidate download functions for bedrock install and update --- app/classes/controllers/servers_controller.py | 6 ++- app/classes/shared/main_controller.py | 6 ++- app/classes/shared/server.py | 39 +++++++------------ 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/app/classes/controllers/servers_controller.py b/app/classes/controllers/servers_controller.py index a7df5dcf..ae3670f6 100644 --- a/app/classes/controllers/servers_controller.py +++ b/app/classes/controllers/servers_controller.py @@ -31,7 +31,9 @@ logger = logging.getLogger(__name__) class ServersController(metaclass=Singleton): servers_list: ServerInstance - def __init__(self, helper, servers_helper, management_helper, file_helper): + def __init__( + self, helper, servers_helper, management_helper, file_helper, import_helper + ): self.helper: Helpers = helper self.file_helper: FileHelpers = file_helper self.servers_helper: HelperServers = servers_helper @@ -43,6 +45,7 @@ class ServersController(metaclass=Singleton): self.backups_mgr = BackupManager( self.helper, self.file_helper, self.management_helper ) + self.import_helper = import_helper # ********************************************************************************** # Generic Servers Methods @@ -240,6 +243,7 @@ class ServersController(metaclass=Singleton): self.stats, self.file_helper, self.backups_mgr, + self.import_helper, ), } diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index 3d98072c..f7005713 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -69,7 +69,11 @@ class Controller: ) self.server_perms: ServerPermsController = ServerPermsController() self.servers: ServersController = ServersController( - self.helper, self.servers_helper, self.management_helper, self.file_helper + self.helper, + self.servers_helper, + self.management_helper, + self.file_helper, + self.import_helper, ) self.users: UsersController = UsersController( self.helper, self.users_helper, self.authentication diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index d482b18d..42718012 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -161,12 +161,20 @@ class ServerInstance: stats_helper: HelperServerStats def __init__( - self, server_id, helper, management_helper, stats, file_helper, backup_mgr + self, + server_id, + helper, + management_helper, + stats, + file_helper, + backup_mgr, + import_helper, ): self.helper = helper self.file_helper = file_helper self.management_helper = management_helper self.backup_mgr = backup_mgr + self.import_helper = import_helper # holders for our process self.process = None self.line = False @@ -1388,35 +1396,14 @@ class ServerInstance: else: # downloads zip from remote url try: + downloaded = True bedrock_url = Helpers.get_latest_bedrock_url() if bedrock_url: # Use the new method for secure download - download_path = os.path.join( - self.settings["path"], "bedrock_server.zip" + self.import_helper.download_threaded_bedrock_server( + self.settings["path"], self.server_id, bedrock_url ) - downloaded = FileHelpers.ssl_get_file( - bedrock_url, self.settings["path"], "bedrock_server.zip" - ) - - if downloaded: - unzip_path = download_path - unzip_path = self.helper.wtol_path(unzip_path) - - # unzips archive that was downloaded. - self.file_helper.unzip_file(unzip_path, server_update=True) - - # adjusts permissions for execution if os is not windows - if not self.helper.is_os_windows(): - os.chmod( - os.path.join(self.settings["path"], "bedrock_server"), - 0o0744, - ) - - # we'll delete the zip we downloaded now - os.remove(download_path) - else: - logger.error("Failed to download the Bedrock server zip.") - downloaded = False + downloaded = True except Exception as e: logger.critical( f"Failed to download bedrock executable for update \n{e}" -- GitLab From 131fc3ca39253ac690d55684671b42e84b5257f2 Mon Sep 17 00:00:00 2001 From: = Date: Tue, 2 Sep 2025 10:18:40 -0400 Subject: [PATCH 3/4] Set default downloaded state to false --- app/classes/shared/server.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index 42718012..86ff1546 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -1395,8 +1395,8 @@ class ServerInstance: ) else: # downloads zip from remote url + downloaded = False try: - downloaded = True bedrock_url = Helpers.get_latest_bedrock_url() if bedrock_url: # Use the new method for secure download @@ -1408,7 +1408,6 @@ class ServerInstance: logger.critical( f"Failed to download bedrock executable for update \n{e}" ) - downloaded = False if downloaded: logger.info("Executable updated successfully. Starting Server") -- GitLab From e1ca0057f980279963499a98c95048bc4a2765f1 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Tue, 2 Sep 2025 22:27:49 +0100 Subject: [PATCH 4/4] Update changelog !890 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fe2413b..5a22f6f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### New features TBD ### Bug fixes +- Refactor Bedrock update to use `import_helper` `download_threaded_bedrock_server` fixing bedrock update ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/890)) - Fix GC logic deleting downloaded files instead of only temp directories ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/891)) ### Tweaks TBD -- GitLab