mirror of
https://github.com/element-hq/synapse.git
synced 2025-03-31 03:45:13 +00:00
Add support for via query parameter from MSC4156 (#17322)
This adds support for the `via` query parameter from https://github.com/matrix-org/matrix-spec-proposals/pull/4156.
This commit is contained in:
parent
1c7d85fdfe
commit
79767a1108
4 changed files with 20 additions and 0 deletions
1
changelog.d/17322.feature
Normal file
1
changelog.d/17322.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Add support for via query parameter from MSC415.
|
|
@ -439,3 +439,6 @@ class ExperimentalConfig(Config):
|
||||||
|
|
||||||
# MSC4151: Report room API (Client-Server API)
|
# MSC4151: Report room API (Client-Server API)
|
||||||
self.msc4151_enabled: bool = experimental.get("msc4151_enabled", False)
|
self.msc4151_enabled: bool = experimental.get("msc4151_enabled", False)
|
||||||
|
|
||||||
|
# MSC4156: Migrate server_name to via
|
||||||
|
self.msc4156_enabled: bool = experimental.get("msc4156_enabled", False)
|
||||||
|
|
|
@ -53,6 +53,7 @@ class KnockRoomAliasServlet(RestServlet):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.room_member_handler = hs.get_room_member_handler()
|
self.room_member_handler = hs.get_room_member_handler()
|
||||||
self.auth = hs.get_auth()
|
self.auth = hs.get_auth()
|
||||||
|
self._support_via = hs.config.experimental.msc4156_enabled
|
||||||
|
|
||||||
async def on_POST(
|
async def on_POST(
|
||||||
self,
|
self,
|
||||||
|
@ -74,6 +75,13 @@ class KnockRoomAliasServlet(RestServlet):
|
||||||
remote_room_hosts = parse_strings_from_args(
|
remote_room_hosts = parse_strings_from_args(
|
||||||
args, "server_name", required=False
|
args, "server_name", required=False
|
||||||
)
|
)
|
||||||
|
if self._support_via:
|
||||||
|
remote_room_hosts = parse_strings_from_args(
|
||||||
|
args,
|
||||||
|
"org.matrix.msc4156.via",
|
||||||
|
default=remote_room_hosts,
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
elif RoomAlias.is_valid(room_identifier):
|
elif RoomAlias.is_valid(room_identifier):
|
||||||
handler = self.room_member_handler
|
handler = self.room_member_handler
|
||||||
room_alias = RoomAlias.from_string(room_identifier)
|
room_alias = RoomAlias.from_string(room_identifier)
|
||||||
|
|
|
@ -417,6 +417,7 @@ class JoinRoomAliasServlet(ResolveRoomIdMixin, TransactionRestServlet):
|
||||||
super().__init__(hs)
|
super().__init__(hs)
|
||||||
super(ResolveRoomIdMixin, self).__init__(hs) # ensure the Mixin is set up
|
super(ResolveRoomIdMixin, self).__init__(hs) # ensure the Mixin is set up
|
||||||
self.auth = hs.get_auth()
|
self.auth = hs.get_auth()
|
||||||
|
self._support_via = hs.config.experimental.msc4156_enabled
|
||||||
|
|
||||||
def register(self, http_server: HttpServer) -> None:
|
def register(self, http_server: HttpServer) -> None:
|
||||||
# /join/$room_identifier[/$txn_id]
|
# /join/$room_identifier[/$txn_id]
|
||||||
|
@ -435,6 +436,13 @@ class JoinRoomAliasServlet(ResolveRoomIdMixin, TransactionRestServlet):
|
||||||
# twisted.web.server.Request.args is incorrectly defined as Optional[Any]
|
# twisted.web.server.Request.args is incorrectly defined as Optional[Any]
|
||||||
args: Dict[bytes, List[bytes]] = request.args # type: ignore
|
args: Dict[bytes, List[bytes]] = request.args # type: ignore
|
||||||
remote_room_hosts = parse_strings_from_args(args, "server_name", required=False)
|
remote_room_hosts = parse_strings_from_args(args, "server_name", required=False)
|
||||||
|
if self._support_via:
|
||||||
|
remote_room_hosts = parse_strings_from_args(
|
||||||
|
args,
|
||||||
|
"org.matrix.msc4156.via",
|
||||||
|
default=remote_room_hosts,
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
room_id, remote_room_hosts = await self.resolve_room_id(
|
room_id, remote_room_hosts = await self.resolve_room_id(
|
||||||
room_identifier,
|
room_identifier,
|
||||||
remote_room_hosts,
|
remote_room_hosts,
|
||||||
|
|
Loading…
Add table
Reference in a new issue