From 2bf504b887fe5a41335059102646a47c25a00e47 Mon Sep 17 00:00:00 2001 From: "stripes! :3" Date: Thu, 27 Mar 2025 23:33:59 +0000 Subject: make ulist use the most recent *active* client --- main.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index 19035df..0556ffd 100644 --- a/main.py +++ b/main.py @@ -106,7 +106,7 @@ class util: if not re.fullmatch("[a-zA-Z0-9-_. ]{1,50}", client): client = "" ulist[username] = {"client": client, "status": ""} - client_data[conn_id] = {"username": username, "client": client, "websocket": websocket} + client_data[conn_id] = {"username": username, "client": client, "websocket": websocket, "connected": round(time.time())} data = db.acc.get(username) del data["secure"] return data @@ -115,15 +115,21 @@ class util: del client_data[conn_id] if username in ulist: rm_user = True + last_con_time = 0 + last_con_index = "" for i in client_data.copy(): if client_data[i]["username"] == username: rm_user = False + if client_data[i]["connected"] > last_con_time: + last_con_index = i if rm_user: del ulist[username] - broadcast(clients, json.dumps({ - "command": "ulist", - "ulist": ulist - })) + else: + ulist[username]["client"] = client_data[last_con_index]["client"] + broadcast(clients, json.dumps({ + "command": "ulist", + "ulist": ulist + })) async def forcekick(username): if username in ulist: -- cgit 1.4.1-2-gfad0