Deprecate the groups/communities endpoints and add an experimental configuration flag. (#12200)

This commit is contained in:
Patrick Cloke 2022-03-12 13:23:37 -05:00 committed by GitHub
parent ef3619e61d
commit 54f674f7a9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 35 additions and 7 deletions

View file

@ -0,0 +1 @@
The groups/communities feature in Synapse has been deprecated.

View file

@ -85,6 +85,20 @@ process, for example:
dpkg -i matrix-synapse-py3_1.3.0+stretch1_amd64.deb dpkg -i matrix-synapse-py3_1.3.0+stretch1_amd64.deb
``` ```
# Upgrading to v1.56.0
## Groups/communities feature has been deprecated
The non-standard groups/communities feature in Synapse has been deprecated and will
be disabled by default in Synapse v1.58.0.
You can test disabling it by adding the following to your homeserver configuration:
```yaml
experimental_features:
groups_enabled: false
```
# Upgrading to v1.55.0 # Upgrading to v1.55.0
## `synctl` script has been moved ## `synctl` script has been moved

View file

@ -322,7 +322,8 @@ class GenericWorkerServer(HomeServer):
presence.register_servlets(self, resource) presence.register_servlets(self, resource)
groups.register_servlets(self, resource) if self.config.experimental.groups_enabled:
groups.register_servlets(self, resource)
resources.update({CLIENT_API_PREFIX: resource}) resources.update({CLIENT_API_PREFIX: resource})

View file

@ -74,3 +74,6 @@ class ExperimentalConfig(Config):
# MSC3720 (Account status endpoint) # MSC3720 (Account status endpoint)
self.msc3720_enabled: bool = experimental.get("msc3720_enabled", False) self.msc3720_enabled: bool = experimental.get("msc3720_enabled", False)
# The deprecated groups feature.
self.groups_enabled: bool = experimental.get("groups_enabled", True)

View file

@ -289,7 +289,7 @@ class OpenIdUserInfo(BaseFederationServlet):
return 200, {"sub": user_id} return 200, {"sub": user_id}
DEFAULT_SERVLET_GROUPS: Dict[str, Iterable[Type[BaseFederationServlet]]] = { SERVLET_GROUPS: Dict[str, Iterable[Type[BaseFederationServlet]]] = {
"federation": FEDERATION_SERVLET_CLASSES, "federation": FEDERATION_SERVLET_CLASSES,
"room_list": (PublicRoomList,), "room_list": (PublicRoomList,),
"group_server": GROUP_SERVER_SERVLET_CLASSES, "group_server": GROUP_SERVER_SERVLET_CLASSES,
@ -298,6 +298,10 @@ DEFAULT_SERVLET_GROUPS: Dict[str, Iterable[Type[BaseFederationServlet]]] = {
"openid": (OpenIdUserInfo,), "openid": (OpenIdUserInfo,),
} }
DEFAULT_SERVLET_GROUPS = ("federation", "room_list", "openid")
GROUP_SERVLET_GROUPS = ("group_server", "group_local", "group_attestation")
def register_servlets( def register_servlets(
hs: "HomeServer", hs: "HomeServer",
@ -320,16 +324,19 @@ def register_servlets(
Defaults to ``DEFAULT_SERVLET_GROUPS``. Defaults to ``DEFAULT_SERVLET_GROUPS``.
""" """
if not servlet_groups: if not servlet_groups:
servlet_groups = DEFAULT_SERVLET_GROUPS.keys() servlet_groups = DEFAULT_SERVLET_GROUPS
# Only allow the groups servlets if the deprecated groups feature is enabled.
if hs.config.experimental.groups_enabled:
servlet_groups = servlet_groups + GROUP_SERVLET_GROUPS
for servlet_group in servlet_groups: for servlet_group in servlet_groups:
# Skip unknown servlet groups. # Skip unknown servlet groups.
if servlet_group not in DEFAULT_SERVLET_GROUPS: if servlet_group not in SERVLET_GROUPS:
raise RuntimeError( raise RuntimeError(
f"Attempting to register unknown federation servlet: '{servlet_group}'" f"Attempting to register unknown federation servlet: '{servlet_group}'"
) )
for servletclass in DEFAULT_SERVLET_GROUPS[servlet_group]: for servletclass in SERVLET_GROUPS[servlet_group]:
# Only allow the `/timestamp_to_event` servlet if msc3030 is enabled # Only allow the `/timestamp_to_event` servlet if msc3030 is enabled
if ( if (
servletclass == FederationTimestampLookupServlet servletclass == FederationTimestampLookupServlet

View file

@ -118,7 +118,8 @@ class ClientRestResource(JsonResource):
thirdparty.register_servlets(hs, client_resource) thirdparty.register_servlets(hs, client_resource)
sendtodevice.register_servlets(hs, client_resource) sendtodevice.register_servlets(hs, client_resource)
user_directory.register_servlets(hs, client_resource) user_directory.register_servlets(hs, client_resource)
groups.register_servlets(hs, client_resource) if hs.config.experimental.groups_enabled:
groups.register_servlets(hs, client_resource)
room_upgrade_rest_servlet.register_servlets(hs, client_resource) room_upgrade_rest_servlet.register_servlets(hs, client_resource)
room_batch.register_servlets(hs, client_resource) room_batch.register_servlets(hs, client_resource)
capabilities.register_servlets(hs, client_resource) capabilities.register_servlets(hs, client_resource)

View file

@ -293,7 +293,8 @@ def register_servlets_for_client_rest_resource(
ResetPasswordRestServlet(hs).register(http_server) ResetPasswordRestServlet(hs).register(http_server)
SearchUsersRestServlet(hs).register(http_server) SearchUsersRestServlet(hs).register(http_server)
UserRegisterServlet(hs).register(http_server) UserRegisterServlet(hs).register(http_server)
DeleteGroupAdminRestServlet(hs).register(http_server) if hs.config.experimental.groups_enabled:
DeleteGroupAdminRestServlet(hs).register(http_server)
AccountValidityRenewServlet(hs).register(http_server) AccountValidityRenewServlet(hs).register(http_server)
# Load the media repo ones if we're using them. Otherwise load the servlets which # Load the media repo ones if we're using them. Otherwise load the servlets which