From f2dec0c52bb093920d1a1095a4dce74aef9602b1 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 2 Jun 2022 07:33:43 -0400 Subject: [PATCH 1/8] Reset secret key on fresh start when db dumped --- app/classes/shared/main_models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/classes/shared/main_models.py b/app/classes/shared/main_models.py index ae4636c2..beb2a83d 100644 --- a/app/classes/shared/main_models.py +++ b/app/classes/shared/main_models.py @@ -17,6 +17,8 @@ class DatabaseBuilder: logger.info("Fresh Install Detected - Creating Default Settings") Console.info("Fresh Install Detected - Creating Default Settings") default_data = self.helper.find_default_password() + # Reset this value if the DB has been dumped + self.helper.set_setting("apikey_secret", "") username = default_data.get("username", "admin") password = default_data.get("password", "crafty") From b793016c0351382c3c1599c944d44f9c7d55e29f Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 2 Jun 2022 07:34:17 -0400 Subject: [PATCH 2/8] Redefine how servers are served to panel_handler --- app/classes/web/panel_handler.py | 34 +++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 14461739..1008ae18 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -1108,13 +1108,18 @@ class PanelHandler(BaseHandler): ) return if exec_user["superuser"]: - page_data[ - "servers_all" - ] = self.controller.servers.get_all_defined_servers() + defined_servers = self.controller.servers.list_defined_servers() else: - page_data[ - "servers_all" - ] = self.controller.servers.get_authorized_servers(exec_user["user_id"]) + defined_servers = self.controller.servers.get_authorized_servers( + exec_user["user_id"] + ) + page_servers = [] + for server in defined_servers: + if server not in page_servers: + page_servers.append( + DatabaseShortcuts.get_data_obj(server.server_object) + ) + page_data["servers_all"] = page_servers page_data[ "permissions_all" ] = self.controller.server_perms.list_defined_permissions() @@ -1127,13 +1132,18 @@ class PanelHandler(BaseHandler): role_id = self.get_argument("id", None) page_data["role"] = self.controller.roles.get_role_with_servers(role_id) if exec_user["superuser"]: - page_data[ - "servers_all" - ] = self.controller.servers.get_all_defined_servers() + defined_servers = self.controller.servers.list_defined_servers() else: - page_data[ - "servers_all" - ] = self.controller.servers.get_authorized_servers(exec_user["user_id"]) + defined_servers = self.controller.servers.get_authorized_servers( + exec_user["user_id"] + ) + page_servers = [] + for server in defined_servers: + if server not in page_servers: + page_servers.append( + DatabaseShortcuts.get_data_obj(server.server_object) + ) + page_data["servers_all"] = page_servers page_data[ "permissions_all" ] = self.controller.server_perms.list_defined_permissions() From 50872e2bb55f88f2330f0bee09495911e43a82e2 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 2 Jun 2022 07:34:34 -0400 Subject: [PATCH 3/8] Remove active tasks when server is deleted --- app/classes/shared/main_controller.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index c5fc793b..a91e9f8c 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -21,6 +21,7 @@ from app.classes.models.server_permissions import EnumPermissionsServer from app.classes.models.users import HelperUsers from app.classes.models.roles import HelperRoles from app.classes.models.management import HelpersManagement +from app.classes.shared.tasks import TasksManager from app.classes.models.servers import HelperServers from app.classes.shared.authentication import Authentication from app.classes.shared.console import Console @@ -38,6 +39,7 @@ class Controller: self.users_helper: HelperUsers = HelperUsers(database, self.helper) self.roles_helper: HelperRoles = HelperRoles(database) self.servers_helper: HelperServers = HelperServers(database) + self.tasks_manager: TasksManager = TasksManager() self.management_helper: HelpersManagement = HelpersManagement( database, self.helper ) @@ -864,6 +866,10 @@ class Controller: ) # Cleanup scheduled tasks + try: + self.tasks_manager.remove_all_server_tasks(server_id) + except: + logger.info(f"Could not find active jobs for server {server_id}") try: HelpersManagement.delete_scheduled_task_by_server(server_id) except DoesNotExist: From fae4ff12ea85a87bcf8d57c75851e23b9d07e4ff Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 2 Jun 2022 08:23:18 -0400 Subject: [PATCH 4/8] Fix general user support logs --- app/classes/shared/main_controller.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index a91e9f8c..844ec8b4 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -18,10 +18,10 @@ from app.classes.controllers.roles_controller import RolesController from app.classes.controllers.server_perms_controller import ServerPermsController from app.classes.controllers.servers_controller import ServersController from app.classes.models.server_permissions import EnumPermissionsServer +from app.classes.shared.main_models import DatabaseShortcuts from app.classes.models.users import HelperUsers from app.classes.models.roles import HelperRoles from app.classes.models.management import HelpersManagement -from app.classes.shared.tasks import TasksManager from app.classes.models.servers import HelperServers from app.classes.shared.authentication import Authentication from app.classes.shared.console import Console @@ -39,7 +39,6 @@ class Controller: self.users_helper: HelperUsers = HelperUsers(database, self.helper) self.roles_helper: HelperRoles = HelperRoles(database) self.servers_helper: HelperServers = HelperServers(database) - self.tasks_manager: TasksManager = TasksManager() self.management_helper: HelpersManagement = HelpersManagement( database, self.helper ) @@ -90,11 +89,17 @@ class Controller: server_path = os.path.join(full_temp, "server") os.mkdir(server_path) if exec_user["superuser"]: - auth_servers = self.servers.get_all_defined_servers() + auth_servers = self.servers.list_defined_servers() else: - user_servers = self.servers.get_authorized_servers( + defined_servers = self.servers.get_authorized_servers( int(exec_user["user_id"]) ) + user_servers = [] + for server in defined_servers: + if server not in user_servers: + user_servers.append( + DatabaseShortcuts.get_data_obj(server.server_object) + ) auth_servers = [] for server in user_servers: if ( @@ -866,10 +871,6 @@ class Controller: ) # Cleanup scheduled tasks - try: - self.tasks_manager.remove_all_server_tasks(server_id) - except: - logger.info(f"Could not find active jobs for server {server_id}") try: HelpersManagement.delete_scheduled_task_by_server(server_id) except DoesNotExist: From 597089526850f5f1ec32390df6251a6c90920fbd Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 2 Jun 2022 08:23:28 -0400 Subject: [PATCH 5/8] Fix resetting api_key --- app/classes/shared/main_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/classes/shared/main_models.py b/app/classes/shared/main_models.py index beb2a83d..5e809c48 100644 --- a/app/classes/shared/main_models.py +++ b/app/classes/shared/main_models.py @@ -18,7 +18,7 @@ class DatabaseBuilder: Console.info("Fresh Install Detected - Creating Default Settings") default_data = self.helper.find_default_password() # Reset this value if the DB has been dumped - self.helper.set_setting("apikey_secret", "") + self.helper.set_setting("apikey_secret", "random") username = default_data.get("username", "admin") password = default_data.get("password", "crafty") From 6b85620fecae12e0a95ae35ac3f08957cafe3975 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 2 Jun 2022 08:23:42 -0400 Subject: [PATCH 6/8] Fix schedule tasks not being killed on restore --- app/classes/web/ajax_handler.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/classes/web/ajax_handler.py b/app/classes/web/ajax_handler.py index 492b3b92..8f5789fe 100644 --- a/app/classes/web/ajax_handler.py +++ b/app/classes/web/ajax_handler.py @@ -398,6 +398,10 @@ class AjaxHandler(BaseHandler): self.controller.rename_backup_dir( server_id, new_server_id, new_server["server_uuid"] ) + try: + self.tasks_manager.remove_all_server_tasks(server_id) + except: + logger.info("No active tasks found for server") self.controller.remove_server(server_id, True) self.redirect("/panel/dashboard") @@ -416,6 +420,10 @@ class AjaxHandler(BaseHandler): self.controller.rename_backup_dir( server_id, new_server_id, new_server["server_uuid"] ) + try: + self.tasks_manager.remove_all_server_tasks(server_id) + except: + logger.info("No active tasks found for server") self.controller.remove_server(server_id, True) self.redirect("/panel/dashboard") From 8ff2d8437d5f1a0f81847b5e51582a3c3f6ea577 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 2 Jun 2022 08:51:12 -0400 Subject: [PATCH 7/8] Fix permissions on server clone --- app/classes/web/server_handler.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/classes/web/server_handler.py b/app/classes/web/server_handler.py index 7e599a66..71615bb0 100644 --- a/app/classes/web/server_handler.py +++ b/app/classes/web/server_handler.py @@ -236,7 +236,7 @@ class ServerHandler(BaseHandler): server_port = server_data.get("server_port") server_type = server_data.get("type") - self.controller.servers.create_server( + new_server_id = self.controller.servers.create_server( new_server_name, new_server_uuid, new_server_path, @@ -248,6 +248,22 @@ class ServerHandler(BaseHandler): server_type, server_port, ) + if not exec_user["superuser"]: + new_server_uuid = self.controller.servers.get_server_data_by_id( + new_server_id + ).get("server_uuid") + role_id = self.controller.roles.add_role( + f"Creator of Server with uuid={new_server_uuid}" + ) + self.controller.server_perms.add_role_server( + new_server_id, role_id, "11111111" + ) + self.controller.users.add_role_to_user( + exec_user["user_id"], role_id + ) + self.controller.crafty_perms.add_server_creation( + exec_user["user_id"] + ) self.controller.servers.init_all_servers() From 98b364cd3efc5bbbc4b3d883e228396a3dd31f50 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 2 Jun 2022 08:57:36 -0400 Subject: [PATCH 8/8] Fix support logs validation --- app/classes/shared/main_controller.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index 844ec8b4..9040d51f 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -89,7 +89,14 @@ class Controller: server_path = os.path.join(full_temp, "server") os.mkdir(server_path) if exec_user["superuser"]: - auth_servers = self.servers.list_defined_servers() + defined_servers = self.servers.list_defined_servers() + user_servers = [] + for server in defined_servers: + if server not in user_servers: + user_servers.append( + DatabaseShortcuts.get_data_obj(server.server_object) + ) + auth_servers = user_servers else: defined_servers = self.servers.get_authorized_servers( int(exec_user["user_id"])