From d65f2f7111f821d1e4d911c8f020320bf1be49b9 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 8 Apr 2023 20:16:11 -0400 Subject: [PATCH 01/12] Fix traceback on user order --- app/classes/web/panel_handler.py | 1 - 1 file changed, 1 deletion(-) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 168c91ce..e2b2c870 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -263,7 +263,6 @@ class PanelHandler(BaseHandler): page_servers.append( DatabaseShortcuts.get_data_obj(server.server_object) ) - user_order.remove(server_id) defined_servers.remove(server) for server in defined_servers: From 7d804afe20f3600978c95b6fcadd58ac79026896 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 8 Apr 2023 20:33:11 -0400 Subject: [PATCH 02/12] Make this more efficient --- app/classes/web/panel_handler.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index e2b2c870..996a7d23 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -263,8 +263,9 @@ class PanelHandler(BaseHandler): page_servers.append( DatabaseShortcuts.get_data_obj(server.server_object) ) + user_order.remove(server_id) defined_servers.remove(server) - + break for server in defined_servers: server_ids.append(str(server.server_id)) if server not in page_servers: From 7d8ade5d5e36d16f08a85aebfd0d9965c5c98e59 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 9 Apr 2023 07:34:22 -0400 Subject: [PATCH 03/12] Fix this for unloaded servers --- app/classes/web/panel_handler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 996a7d23..88ffae1d 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -452,6 +452,7 @@ class PanelHandler(BaseHandler): page_servers.append(server) un_used_servers.remove(server) user_order.remove(server_id) + break # we only want to set these server stats values once. # We need to update the flag so it only hits that if once. flag += 1 From cc092d6ecb16d26ec7841394d24bd188c75a480e Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 9 Apr 2023 16:10:53 -0400 Subject: [PATCH 04/12] Fix type error comparrison --- app/classes/web/panel_handler.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 88ffae1d..b9019685 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -268,7 +268,9 @@ class PanelHandler(BaseHandler): break for server in defined_servers: server_ids.append(str(server.server_id)) - if server not in page_servers: + if not any( + item["server_id"] == str(server.server_id) for item in page_servers + ): page_servers.append( DatabaseShortcuts.get_data_obj(server.server_object) ) From e321086f7f0928365725138538545183a18e6198 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Mon, 10 Apr 2023 15:19:15 -0400 Subject: [PATCH 05/12] Adding print statements --- app/classes/web/panel_handler.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index b9019685..cbf02fa8 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -265,12 +265,15 @@ class PanelHandler(BaseHandler): ) user_order.remove(server_id) defined_servers.remove(server) + print("defined removed:", defined_servers) + print("user order removed:", user_order) break for server in defined_servers: server_ids.append(str(server.server_id)) if not any( item["server_id"] == str(server.server_id) for item in page_servers ): + print(f"adding {server.server_id}") page_servers.append( DatabaseShortcuts.get_data_obj(server.server_object) ) @@ -281,6 +284,8 @@ class PanelHandler(BaseHandler): user_order.remove(server_id) defined_servers = page_servers + print("Defined:", defined_servers) + try: tz = get_localzone() except ZoneInfoNotFoundError: From 8eac424ab1660c0c46b8d3cf48a47b301b4f39ad Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Tue, 11 Apr 2023 16:04:09 -0400 Subject: [PATCH 06/12] More debug data --- app/classes/web/panel_handler.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index cbf02fa8..4c9ca82f 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -273,6 +273,8 @@ class PanelHandler(BaseHandler): if not any( item["server_id"] == str(server.server_id) for item in page_servers ): + print("server id:", server.server_id, type(server.server_id)) + print("item server id:", item["server_id"], type(item["server_id"])) print(f"adding {server.server_id}") page_servers.append( DatabaseShortcuts.get_data_obj(server.server_object) From 58b9dc615dd4c0f473c40ab53daea6e08b741cc6 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Wed, 12 Apr 2023 12:14:37 -0400 Subject: [PATCH 07/12] Major logic changes to fix this. --- app/classes/web/panel_handler.py | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 4c9ca82f..e40f4931 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -256,7 +256,14 @@ class PanelHandler(BaseHandler): user_order = user_order["server_order"].split(",") page_servers = [] server_ids = [] - + print(user_order) + for server in defined_servers: + server_ids.append(str(server.server_id)) + if str(server.server_id) not in user_order: + # a little unorthodox, but this will cut out a loop. + # adding servers to the user order that don't already exist there. + user_order.append(str(server.server_id)) + print(user_order) for server_id in user_order[:]: for server in defined_servers[:]: if str(server.server_id) == str(server_id): @@ -265,21 +272,10 @@ class PanelHandler(BaseHandler): ) user_order.remove(server_id) defined_servers.remove(server) - print("defined removed:", defined_servers) - print("user order removed:", user_order) + # print("defined removed:", defined_servers) + # print("user order removed:", user_order) break - for server in defined_servers: - server_ids.append(str(server.server_id)) - if not any( - item["server_id"] == str(server.server_id) for item in page_servers - ): - print("server id:", server.server_id, type(server.server_id)) - print("item server id:", item["server_id"], type(item["server_id"])) - print(f"adding {server.server_id}") - page_servers.append( - DatabaseShortcuts.get_data_obj(server.server_object) - ) - + print(server_ids) for server_id in user_order[:]: # remove IDs in list that user no longer has access to if str(server_id) not in server_ids: From b7ef960cf1ee09e62314179597646890b2efa4f5 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Wed, 12 Apr 2023 12:42:39 -0400 Subject: [PATCH 08/12] Add print statements for running --- app/classes/web/panel_handler.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index e40f4931..5bfce898 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -256,14 +256,12 @@ class PanelHandler(BaseHandler): user_order = user_order["server_order"].split(",") page_servers = [] server_ids = [] - print(user_order) for server in defined_servers: server_ids.append(str(server.server_id)) if str(server.server_id) not in user_order: # a little unorthodox, but this will cut out a loop. # adding servers to the user order that don't already exist there. user_order.append(str(server.server_id)) - print(user_order) for server_id in user_order[:]: for server in defined_servers[:]: if str(server.server_id) == str(server_id): @@ -275,15 +273,12 @@ class PanelHandler(BaseHandler): # print("defined removed:", defined_servers) # print("user order removed:", user_order) break - print(server_ids) for server_id in user_order[:]: # remove IDs in list that user no longer has access to if str(server_id) not in server_ids: user_order.remove(server_id) defined_servers = page_servers - print("Defined:", defined_servers) - try: tz = get_localzone() except ZoneInfoNotFoundError: @@ -418,12 +413,15 @@ class PanelHandler(BaseHandler): ) logger.debug(f"ASFR: {user_auth}") page_data["servers"] = user_auth + print("user auth", page_data["servers"]) page_data["server_stats"]["running"] = len( list(filter(lambda x: x["stats"]["running"], page_data["servers"])) ) + print("running", page_data["server_stats"]["running"]) page_data["server_stats"]["stopped"] = ( len(page_data["servers"]) - page_data["server_stats"]["running"] ) + print("stopped", page_data["server_stats"]["stopped"]) # set user server order user_order = self.controller.users.get_user_by_id(exec_user["user_id"]) From 5542f792c891e2427991d7cc31b3f639836ecfc7 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Wed, 12 Apr 2023 13:03:44 -0400 Subject: [PATCH 09/12] Fix role server calculation --- app/classes/controllers/servers_controller.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/classes/controllers/servers_controller.py b/app/classes/controllers/servers_controller.py index 608a1ced..ec508edf 100644 --- a/app/classes/controllers/servers_controller.py +++ b/app/classes/controllers/servers_controller.py @@ -253,6 +253,7 @@ class ServersController(metaclass=Singleton): @staticmethod def get_authorized_servers(user_id): + server_ids = [] server_data: t.List[t.Dict[str, t.Any]] = [] user_roles = HelperUsers.user_role_query(user_id) for user in user_roles: @@ -260,11 +261,13 @@ class ServersController(metaclass=Singleton): user.role_id ) for role in role_servers: - server_data.append( - ServersController().get_server_instance_by_id( - role.server_id.server_id + if role.server_id.server_id not in server_ids: + server_ids.append(role.server_id.server_id) + server_data.append( + ServersController().get_server_instance_by_id( + role.server_id.server_id + ) ) - ) return server_data From 3e8f04318c40456e0356bcecb60e0811b8282176 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Wed, 12 Apr 2023 13:04:18 -0400 Subject: [PATCH 10/12] Remove print statements --- app/classes/web/panel_handler.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 5bfce898..252ea9ef 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -413,15 +413,12 @@ class PanelHandler(BaseHandler): ) logger.debug(f"ASFR: {user_auth}") page_data["servers"] = user_auth - print("user auth", page_data["servers"]) page_data["server_stats"]["running"] = len( list(filter(lambda x: x["stats"]["running"], page_data["servers"])) ) - print("running", page_data["server_stats"]["running"]) page_data["server_stats"]["stopped"] = ( len(page_data["servers"]) - page_data["server_stats"]["running"] ) - print("stopped", page_data["server_stats"]["stopped"]) # set user server order user_order = self.controller.users.get_user_by_id(exec_user["user_id"]) From 0992e6288c5b36ca64229fbb33da923af92ea3b4 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Wed, 12 Apr 2023 13:04:57 -0400 Subject: [PATCH 11/12] Remove print comments --- app/classes/web/panel_handler.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index 252ea9ef..0883ecef 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -270,8 +270,6 @@ class PanelHandler(BaseHandler): ) user_order.remove(server_id) defined_servers.remove(server) - # print("defined removed:", defined_servers) - # print("user order removed:", user_order) break for server_id in user_order[:]: # remove IDs in list that user no longer has access to From ae8607ea69fa4093140eb293c321a098ffc72e6e Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sun, 14 May 2023 20:22:52 +0100 Subject: [PATCH 12/12] Update changelog !574 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9466965d..3b669422 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ TBD ### Bug fixes - Fix pipelines failing to build from gitlab pre-defined variable deprecation ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/582)) - Fix incompatible buildx provenance meta, causing digest issues on GL/DH container registries ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/582)) +- Fix Auth'd servers in roles | Refine server ordering ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/574)) ### Tweaks TBD ### Lang