diff --git a/app/classes/shared/main_controller.py b/app/classes/shared/main_controller.py index c5fc793b..9040d51f 100644 --- a/app/classes/shared/main_controller.py +++ b/app/classes/shared/main_controller.py @@ -18,6 +18,7 @@ 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 @@ -88,11 +89,24 @@ 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() + 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: - 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 ( diff --git a/app/classes/shared/main_models.py b/app/classes/shared/main_models.py index ae4636c2..5e809c48 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", "random") username = default_data.get("username", "admin") password = default_data.get("password", "crafty") 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") 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() 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()