summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--main.py16
1 files 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: