mirror of
https://github.com/pyMC-dev/pyMC_Repeater.git
synced 2026-08-07 01:13:11 +02:00
Enhance ACL: add sync_since handling for room server clients and log timestamps
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user