From 695e1ec322cc48e4239524de83ff071723aa259a Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Wed, 7 Jan 2026 11:23:53 -0300 Subject: [PATCH] comms: set guest displayname at registration --- services/communication/guest-name-job.yaml | 2 +- ...napse-guest-register-module-configmap.yaml | 20 +++++++++++++++++++ services/communication/synapse-rendered.yaml | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/services/communication/guest-name-job.yaml b/services/communication/guest-name-job.yaml index cd5b9aa..6bd0761 100644 --- a/services/communication/guest-name-job.yaml +++ b/services/communication/guest-name-job.yaml @@ -6,7 +6,7 @@ metadata: namespace: comms spec: schedule: "*/1 * * * *" - suspend: false + suspend: true jobTemplate: spec: backoffLimit: 0 diff --git a/services/communication/synapse-guest-register-module-configmap.yaml b/services/communication/synapse-guest-register-module-configmap.yaml index 8295f56..3afb3d9 100644 --- a/services/communication/synapse-guest-register-module-configmap.yaml +++ b/services/communication/synapse-guest-register-module-configmap.yaml @@ -6,11 +6,13 @@ metadata: data: guest_register.py: | import secrets + import random import synapse.api.auth from synapse.api.errors import Codes, SynapseError from synapse.http.server import DirectServeJsonResource from synapse.http.servlet import parse_json_object_from_request + from synapse.types import UserID, create_requester class GuestRegisterResource(DirectServeJsonResource): @@ -20,6 +22,9 @@ data: self._shared_secret = shared_secret self._header_name = header_name + self._adj = ["brisk", "calm", "eager", "gentle", "merry", "nifty", "rapid", "sunny", "witty", "zesty"] + self._noun = ["otter", "falcon", "comet", "ember", "grove", "harbor", "meadow", "raven", "river", "summit"] + async def _async_render_POST(self, request): # noqa: N802 provided = request.requestHeaders.getRawHeaders(self._header_name) if not provided or not secrets.compare_digest(provided[0], self._shared_secret): @@ -43,6 +48,21 @@ data: is_guest=True, ) + displayname = body.get("displayname") + if not isinstance(displayname, str) or not displayname.strip(): + displayname = f"{random.choice(self._adj)}-{random.choice(self._noun)}" + + try: + requester = create_requester(user_id, is_guest=True, device_id=device_id) + await self._hs.get_profile_handler().set_displayname( + UserID.from_string(user_id), + requester, + displayname, + propagate=False, + ) + except Exception: + pass + result = { "user_id": user_id, "device_id": device_id, diff --git a/services/communication/synapse-rendered.yaml b/services/communication/synapse-rendered.yaml index e06f351..9155044 100644 --- a/services/communication/synapse-rendered.yaml +++ b/services/communication/synapse-rendered.yaml @@ -684,7 +684,7 @@ spec: template: metadata: annotations: - checksum/config: manual-rtc-enable-7 + checksum/config: manual-rtc-enable-8 checksum/secrets: ec9f3b254a562a0f0709461eb74a8cc91b8c1a2fb06be2594a131776c2541773 labels: app.kubernetes.io/name: matrix-synapse