From 02d3cbc396fa37953458044b37956a1d0ab15ec9 Mon Sep 17 00:00:00 2001 From: Lloyd Date: Wed, 17 Dec 2025 23:01:29 +0000 Subject: [PATCH] Enhance ACL: add sync_since handling for room server clients and log timestamps --- repeater/handler_helpers/acl.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/repeater/handler_helpers/acl.py b/repeater/handler_helpers/acl.py index c0f6d40..3507d5b 100644 --- a/repeater/handler_helpers/acl.py +++ b/repeater/handler_helpers/acl.py @@ -25,6 +25,7 @@ class ClientInfo: self.last_login_success = 0 self.out_path_len = -1 self.out_path = bytearray() + self.sync_since = 0 # For room servers - timestamp of last synced message def is_admin(self) -> bool: return (self.permissions & PERM_ACL_ROLE_MASK) == PERM_ACL_ADMIN @@ -54,6 +55,7 @@ class ACL: shared_secret: bytes, password: str, timestamp: int, + sync_since: int = None, target_identity_hash: int = None, target_identity_name: str = None, target_identity_config: dict = None @@ -68,6 +70,10 @@ class ACL: identity_type = target_identity_config.get("type", "") is_room_server = identity_type == "room_server" + # Log sync_since if provided (room server format) + if sync_since is not None: + logger.debug(f"Client sync_since timestamp: {sync_since}") + if is_room_server: # Room servers use passwords from their settings section only # Empty strings are treated as "not set" @@ -132,6 +138,11 @@ class ACL: client.permissions &= ~PERM_ACL_ROLE_MASK client.permissions |= permissions client.shared_secret = shared_secret + + # Store sync_since for room server clients + if sync_since is not None: + client.sync_since = sync_since + logger.debug(f"Stored sync_since={sync_since} for client") logger.info(f"Login success! Permissions: {'ADMIN' if client.is_admin() else 'GUEST'}") return True, client.permissions