Compare commits

...

2 Commits

Author SHA1 Message Date
Erik Johnston
eb0787d0cb Allow GET /devices/:device_id to run on worker 2024-09-03 08:51:48 +01:00
Erik Johnston
b1e2946280 Allow third party servlets to run off master 2024-09-03 08:45:04 +01:00
4 changed files with 20 additions and 8 deletions

View File

@@ -194,6 +194,7 @@ WORKERS_CONFIG: Dict[str, Dict[str, Any]] = {
"^/_matrix/client/(api/v1|r0|v3|unstable)/directory/room/.*$",
"^/_matrix/client/(r0|v3|unstable)/capabilities$",
"^/_matrix/client/(r0|v3|unstable)/notifications$",
"^/_matrix/client/(r0|v3|unstable)/thirdparty/",
],
"shared_extra_conf": {},
"worker_extra_conf": "",

View File

@@ -172,13 +172,11 @@ class ClientRestResource(JsonResource):
for servletfunc in SERVLET_GROUPS[servlet_group]:
if not is_main_process and servletfunc in [
pusher.register_servlets,
logout.register_servlets,
auth.register_servlets,
tokenrefresh.register_servlets,
reporting.register_servlets,
openid.register_servlets,
thirdparty.register_servlets,
room_upgrade_rest_servlet.register_servlets,
account_validity.register_servlets,
admin.register_servlets_for_client_rest_resource,

View File

@@ -144,13 +144,13 @@ class DeviceRestServlet(RestServlet):
super().__init__()
self.hs = hs
self.auth = hs.get_auth()
handler = hs.get_device_handler()
assert isinstance(handler, DeviceHandler)
self.device_handler = handler
self.device_handler = hs.get_device_handler()
self.auth_handler = hs.get_auth_handler()
self._msc3852_enabled = hs.config.experimental.msc3852_enabled
self._msc3861_oauth_delegation_enabled = hs.config.experimental.msc3861.enabled
self._is_main_process = hs.config.worker.worker_app is None
async def on_GET(
self, request: SynapseRequest, device_id: str
) -> Tuple[int, JsonDict]:
@@ -181,6 +181,11 @@ class DeviceRestServlet(RestServlet):
async def on_DELETE(
self, request: SynapseRequest, device_id: str
) -> Tuple[int, JsonDict]:
if not self._is_main_process:
raise UnrecognizedRequestError(code=404)
assert isinstance(self.device_handler, DeviceHandler)
if self._msc3861_oauth_delegation_enabled:
raise UnrecognizedRequestError(code=404)
@@ -219,6 +224,11 @@ class DeviceRestServlet(RestServlet):
async def on_PUT(
self, request: SynapseRequest, device_id: str
) -> Tuple[int, JsonDict]:
if not self._is_main_process:
raise UnrecognizedRequestError(code=404)
assert isinstance(self.device_handler, DeviceHandler)
requester = await self.auth.get_user_by_req(request, allow_guest=True)
body = parse_and_validate_json_object_from_request(request, self.PutBody)
@@ -570,10 +580,11 @@ def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
and not hs.config.experimental.msc3861.enabled
):
DeleteDevicesRestServlet(hs).register(http_server)
DevicesRestServlet(hs).register(http_server)
DeviceRestServlet(hs).register(http_server)
if hs.config.worker.worker_app is None:
DeviceRestServlet(hs).register(http_server)
if hs.config.experimental.msc2697_enabled:
DehydratedDeviceServlet(hs).register(http_server)
ClaimDehydratedDeviceServlet(hs).register(http_server)

View File

@@ -177,5 +177,7 @@ class LegacyPushersRemoveRestServlet(UnsubscribeResource, RestServlet):
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
PushersRestServlet(hs).register(http_server)
PushersSetRestServlet(hs).register(http_server)
LegacyPushersRemoveRestServlet(hs).register(http_server)
if hs.config.worker.worker_app is None:
PushersSetRestServlet(hs).register(http_server)
LegacyPushersRemoveRestServlet(hs).register(http_server)