diff --git a/app/classes/shared/helpers.py b/app/classes/shared/helpers.py index 33fd81df..e7edf26a 100644 --- a/app/classes/shared/helpers.py +++ b/app/classes/shared/helpers.py @@ -63,6 +63,7 @@ class Helpers: self.servers_dir = os.path.join(self.root_dir, "servers") self.backup_path = os.path.join(self.root_dir, "backups") self.migration_dir = os.path.join(self.root_dir, "app", "migrations") + self.dir_migration = False self.session_file = os.path.join(self.root_dir, "app", "config", "session.lock") self.settings_file = os.path.join(self.root_dir, "app", "config", "config.json") diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index 11c50bc2..dd0a6d3b 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -1010,6 +1010,7 @@ class Controller: HelpersManagement.set_master_server_dir(server_dir) def update_master_server_dir(self, server_dir, user_id): + self.helper.dir_migration = True move_thread = threading.Thread( name="dir_move", target=self.t_update_master_server_dir, @@ -1117,6 +1118,7 @@ class Controller: else: self.servers.update_unloaded_server(server_obj) self.servers.init_all_servers() + self.helper.dir_migration = False self.helper.websocket_helper.broadcast_page( "/panel/panel_config", "move_status", diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index 0bfdada6..65b16386 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -211,6 +211,19 @@ class ServerInstance: def run_threaded_server(self, user_id, forge_install=False): # start the server + if self.helper.dir_migration: + self.helper.websocket_helper.broadcast_user( + user_id, + "send_start_error", + { + "error": self.helper.translation.translate( + "error", + "migration", + HelperUsers.get_user_lang_by_id(user_id), + ) + }, + ) + return False self.server_thread = threading.Thread( target=self.start_server, daemon=True, diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index d7dc90ee..cd1ccc04 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -576,6 +576,8 @@ class AjaxHandler(BaseHandler): return elif page == "update_server_dir": + if self.helper.dir_migration: + return for server in self.controller.servers.get_all_servers_stats(): if server["stats"]["running"]: self.helper.websocket_helper.broadcast_user( diff --git a/app/translations/en_EN.json b/app/translations/en_EN.json index b774be3a..de5da99a 100644 --- a/app/translations/en_EN.json +++ b/app/translations/en_EN.json @@ -185,7 +185,8 @@ "start-error": "Server {} failed to start with error code: {}", "terribleFailure": "What a Terrible Failure!", "superError": "You must be a super user to complete this action.", - "fileError": "File type must be an image." + "fileError": "File type must be an image.", + "migration": "Crafty's main server storage is being mirgated to a new location. All server starts have been suspended during this time. Please wait while we finish this migration" }, "footer": { "allRightsReserved": "All rights reserved",