Improved wording of documentation and config option naming

This commit is contained in:
Michael Hollister 2024-05-30 22:45:38 -05:00
parent 89d8b32af7
commit 6b12d3ec6c
4 changed files with 33 additions and 18 deletions

View file

@ -246,8 +246,8 @@ Example configuration:
```yaml
presence:
enabled: false
sync_presence_tracking: true
federation_presence_tracking: true
local_activity_tracking: true
remote_activity_tracking: true
```
`enabled` can also be set to a special value of "untracked" which ignores updates
@ -259,14 +259,17 @@ received via clients and federation, while still accepting updates from the
Enabling presence tracking can be resource intensive for the presence handler when server-side
tracking of user activity is enabled. Below are some additional configuration options which may
help improve the performance of the presence feature without outright disabling it:
* `sync_presence_tracking` (Default enabled): Determines if the server tracks a user's presence
activity when syncing. If disabled, the server will not automatically update the user's presence
activity when the sync endpoint is called. Note that client applications can still update their
presence by calling the respective presence endpoints.
* `federation_presence_tracking` (Default enabled): Determines if the server will accept
presence EDUs that only contain presence activity updates. If disabled, the server will drop
processing EDUs that do not contain updates to the `status_msg`, `displayname`, or
`avatar_url` fields.
* `local_activity_tracking` (Default enabled): Determines if the server tracks a user's activity
when syncing or fetching events. If disabled, the server will not automatically update the
user's presence activity when the /sync or /events endpoints are called. Note that client
applications can still update their presence by calling the presence /status endpoint.
* `remote_activity_tracking` (Default enabled): Determines if the server will accept presence
EDUs from remote servers that are exclusively user activity updates. If disabled, the server
will reject processing these EDUs. However if a presence EDU contains profile updates to any of
the `status_msg`, `displayname`, or `avatar_url` fields, then the server will accept the EDU.
If the presence `enabled` field is set "untracked", then these options will both act as if set
to false.
---
### `require_auth_for_profile_requests`

View file

@ -385,13 +385,13 @@ class ServerConfig(Config):
self.track_presence = self.presence_enabled and presence_enabled != "untracked"
# Disabling server-side presence tracking
self.sync_presence_tracking = presence_config.get(
"sync_presence_tracking", True
self.presence_local_activity_tracking = presence_config.get(
"local_activity_tracking", True
)
# Disabling federation presence tracking
self.federation_presence_tracking = presence_config.get(
"federation_presence_tracking", True
self.presence_remote_activity_tracking = presence_config.get(
"remote_activity_tracking", True
)
# Custom presence router module

View file

@ -1425,11 +1425,21 @@ class FederationHandlerRegistry:
self._edu_type_to_instance[edu_type] = instance_names
async def on_edu(self, edu_type: str, origin: str, content: dict) -> None:
"""Passes an EDU to a registered handler if one exists
This potentially modifies the `content` dict for `m.presence` EDUs when
presence `remote_activity_tracking` is disabled.
Args:
edu_type: The type of the incoming EDU to process
origin: The server we received the event from
content: The content of the EDU
"""
if not self.config.server.track_presence and edu_type == EduTypes.PRESENCE:
return
if (
not self.config.server.federation_presence_tracking
not self.config.server.presence_remote_activity_tracking
and edu_type == EduTypes.PRESENCE
):
filtered_edus = []

View file

@ -201,7 +201,9 @@ class BasePresenceHandler(abc.ABC):
self._presence_enabled = hs.config.server.presence_enabled
self._track_presence = hs.config.server.track_presence
self._sync_presence_tracking = hs.config.server.sync_presence_tracking
self._presence_local_activity_tracking = (
hs.config.server.presence_local_activity_tracking
)
self._federation = None
if hs.should_send_federation():
@ -585,7 +587,7 @@ class WorkerPresenceHandler(BasePresenceHandler):
if (
not affect_presence
or not self._track_presence
or not self._sync_presence_tracking
or not self._presence_local_activity_tracking
):
return _NullContextManager()
@ -1152,7 +1154,7 @@ class PresenceHandler(BasePresenceHandler):
if (
not affect_presence
or not self._track_presence
or not self._sync_presence_tracking
or not self._presence_local_activity_tracking
):
return _NullContextManager()