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)
|
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(
|
def generate_config_section(
|
||||||
self, generate_secrets: bool = False, **kwargs: Any
|
self, generate_secrets: bool = False, **kwargs: Any
|
||||||
) -> str:
|
) -> str:
|
||||||
|
@ -429,6 +429,10 @@ class DeviceHandler(DeviceWorkerHandler):
|
|||||||
self._storage_controllers = hs.get_storage_controllers()
|
self._storage_controllers = hs.get_storage_controllers()
|
||||||
self.db_pool = hs.get_datastores().main.db_pool
|
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)
|
self.device_list_updater = DeviceListUpdater(hs, self)
|
||||||
|
|
||||||
federation_registry = hs.get_federation_registry()
|
federation_registry = hs.get_federation_registry()
|
||||||
@ -505,6 +509,9 @@ class DeviceHandler(DeviceWorkerHandler):
|
|||||||
|
|
||||||
self._check_device_name_length(initial_device_display_name)
|
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:
|
if device_id is not None:
|
||||||
new_device = await self.store.store_device(
|
new_device = await self.store.store_device(
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
@ -514,6 +521,7 @@ class DeviceHandler(DeviceWorkerHandler):
|
|||||||
auth_provider_session_id=auth_provider_session_id,
|
auth_provider_session_id=auth_provider_session_id,
|
||||||
)
|
)
|
||||||
if new_device:
|
if new_device:
|
||||||
|
if notify:
|
||||||
await self.notify_device_update(user_id, [device_id])
|
await self.notify_device_update(user_id, [device_id])
|
||||||
return device_id
|
return device_id
|
||||||
|
|
||||||
@ -530,6 +538,7 @@ class DeviceHandler(DeviceWorkerHandler):
|
|||||||
auth_provider_session_id=auth_provider_session_id,
|
auth_provider_session_id=auth_provider_session_id,
|
||||||
)
|
)
|
||||||
if new_device:
|
if new_device:
|
||||||
|
if notify:
|
||||||
await self.notify_device_update(user_id, [new_device_id])
|
await self.notify_device_update(user_id, [new_device_id])
|
||||||
return new_device_id
|
return new_device_id
|
||||||
attempts += 1
|
attempts += 1
|
||||||
|
Loading…
Reference in New Issue
Block a user