mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Add a config to not send out device list updates for specific users (#16909)
List of users not to send out device list updates for when they register new devices. This is useful to handle bot accounts. This is undocumented as its mostly a hack to test on matrix.org. Note: This will still send out device list updates if the device is later updated, e.g. end to end keys are added.
This commit is contained in:
parent
79e31e8527
commit
01910b981f
1
changelog.d/16909.misc
Normal file
1
changelog.d/16909.misc
Normal file
@ -0,0 +1 @@
|
||||
Add experimental config option to not send device list updates for specific users.
|
@ -237,6 +237,14 @@ class RegistrationConfig(Config):
|
||||
|
||||
self.inhibit_user_in_use_error = config.get("inhibit_user_in_use_error", False)
|
||||
|
||||
# List of user IDs not to send out device list updates for when they
|
||||
# register new devices. This is useful to handle bot accounts.
|
||||
#
|
||||
# Note: This will still send out device list updates if the device is
|
||||
# later updated, e.g. end to end keys are added.
|
||||
dont_notify_new_devices_for = config.get("dont_notify_new_devices_for", [])
|
||||
self.dont_notify_new_devices_for = frozenset(dont_notify_new_devices_for)
|
||||
|
||||
def generate_config_section(
|
||||
self, generate_secrets: bool = False, **kwargs: Any
|
||||
) -> str:
|
||||
|
@ -429,6 +429,10 @@ class DeviceHandler(DeviceWorkerHandler):
|
||||
self._storage_controllers = hs.get_storage_controllers()
|
||||
self.db_pool = hs.get_datastores().main.db_pool
|
||||
|
||||
self._dont_notify_new_devices_for = (
|
||||
hs.config.registration.dont_notify_new_devices_for
|
||||
)
|
||||
|
||||
self.device_list_updater = DeviceListUpdater(hs, self)
|
||||
|
||||
federation_registry = hs.get_federation_registry()
|
||||
@ -505,6 +509,9 @@ class DeviceHandler(DeviceWorkerHandler):
|
||||
|
||||
self._check_device_name_length(initial_device_display_name)
|
||||
|
||||
# Check if we should send out device lists updates for this new device.
|
||||
notify = user_id not in self._dont_notify_new_devices_for
|
||||
|
||||
if device_id is not None:
|
||||
new_device = await self.store.store_device(
|
||||
user_id=user_id,
|
||||
@ -514,7 +521,8 @@ class DeviceHandler(DeviceWorkerHandler):
|
||||
auth_provider_session_id=auth_provider_session_id,
|
||||
)
|
||||
if new_device:
|
||||
await self.notify_device_update(user_id, [device_id])
|
||||
if notify:
|
||||
await self.notify_device_update(user_id, [device_id])
|
||||
return device_id
|
||||
|
||||
# if the device id is not specified, we'll autogen one, but loop a few
|
||||
@ -530,7 +538,8 @@ class DeviceHandler(DeviceWorkerHandler):
|
||||
auth_provider_session_id=auth_provider_session_id,
|
||||
)
|
||||
if new_device:
|
||||
await self.notify_device_update(user_id, [new_device_id])
|
||||
if notify:
|
||||
await self.notify_device_update(user_id, [new_device_id])
|
||||
return new_device_id
|
||||
attempts += 1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user