@rapidmx/meet-plugin 0.6.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -5
- package/apps/meet/[token].tsx +11 -10
- package/apps/meet/_CallControls.tsx +28 -2
- package/apps/meet/_CallView.tsx +26 -2
- package/apps/meet/_EffectsPanel.tsx +134 -0
- package/apps/meet/_MeetChrome.tsx +1 -1
- package/apps/meet/_MeetLobby.tsx +36 -4
- package/apps/meet/_ParticipantTile.tsx +73 -10
- package/apps/meet/_icons.tsx +4 -0
- package/apps/meet/_layout.tsx +2 -2
- package/apps/meet/_meetApi.ts +7 -1
- package/apps/meet/index.tsx +2 -2
- package/apps/settings-video-conferencing/_PersonalRoomCard.tsx +4 -4
- package/apps/settings-video-conferencing/_layout.tsx +2 -2
- package/apps/settings-video-conferencing/index.tsx +3 -3
- package/apps/shared/media/filters/VideoFilterProcessor.ts +408 -0
- package/apps/shared/media/filters/accessories.ts +262 -0
- package/apps/shared/media/filters/backgroundImage.ts +69 -0
- package/apps/shared/media/filters/filterTypes.ts +89 -0
- package/apps/shared/media/filters/mlModels.ts +174 -0
- package/apps/shared/media/filters/pixelEffects.ts +61 -0
- package/apps/shared/media/mediaPreferences.ts +105 -0
- package/apps/shared/media/useLocalMedia.ts +198 -14
- package/apps/shared/push/GuestSignalingClient.ts +4 -4
- package/apps/shared/relay/AudioPlayer.ts +111 -0
- package/apps/shared/relay/AudioSender.ts +194 -0
- package/apps/shared/relay/RelayClient.ts +262 -0
- package/apps/shared/relay/RelayReceiver.ts +72 -0
- package/apps/shared/relay/RelaySender.ts +74 -0
- package/apps/shared/relay/RelayTransport.ts +188 -0
- package/apps/shared/relay/VideoPlayer.ts +110 -0
- package/apps/shared/relay/VideoSender.ts +216 -0
- package/apps/shared/relay/audioResume.ts +55 -0
- package/apps/shared/relay/frames.ts +275 -0
- package/apps/shared/relay/relayEnv.ts +230 -0
- package/apps/shared/relay/senderCommon.ts +30 -0
- package/apps/shared/webrtc/MeshConnectionManager.ts +159 -7
- package/apps/shared/webrtc/realPeerConnection.ts +22 -0
- package/apps/shared/webrtc/types.ts +32 -2
- package/dist/apps/meet/[token].d.ts +3 -3
- package/dist/apps/meet/[token].js +10 -10
- package/dist/apps/meet/_CallControls.d.ts +2 -1
- package/dist/apps/meet/_CallControls.js +6 -3
- package/dist/apps/meet/_CallView.d.ts +4 -1
- package/dist/apps/meet/_CallView.js +20 -3
- package/dist/apps/meet/_EffectsPanel.d.ts +17 -0
- package/dist/apps/meet/_EffectsPanel.js +60 -0
- package/dist/apps/meet/_MeetChrome.d.ts +1 -1
- package/dist/apps/meet/_MeetLobby.d.ts +8 -0
- package/dist/apps/meet/_MeetLobby.js +15 -4
- package/dist/apps/meet/_ParticipantTile.d.ts +17 -2
- package/dist/apps/meet/_ParticipantTile.js +27 -4
- package/dist/apps/meet/_icons.d.ts +1 -0
- package/dist/apps/meet/_icons.js +1 -0
- package/dist/apps/meet/_layout.d.ts +1 -1
- package/dist/apps/meet/_layout.js +1 -1
- package/dist/apps/meet/_meetApi.d.ts +6 -0
- package/dist/apps/meet/_meetApi.js +1 -1
- package/dist/apps/meet/index.js +2 -2
- package/dist/apps/settings-video-conferencing/_PersonalRoomCard.d.ts +1 -1
- package/dist/apps/settings-video-conferencing/_PersonalRoomCard.js +4 -4
- package/dist/apps/settings-video-conferencing/_layout.d.ts +1 -1
- package/dist/apps/settings-video-conferencing/_layout.js +1 -1
- package/dist/apps/settings-video-conferencing/index.d.ts +1 -1
- package/dist/apps/settings-video-conferencing/index.js +3 -3
- package/dist/apps/shared/media/filters/VideoFilterProcessor.d.ts +78 -0
- package/dist/apps/shared/media/filters/VideoFilterProcessor.js +329 -0
- package/dist/apps/shared/media/filters/accessories.d.ts +37 -0
- package/dist/apps/shared/media/filters/accessories.js +211 -0
- package/dist/apps/shared/media/filters/backgroundImage.d.ts +22 -0
- package/dist/apps/shared/media/filters/backgroundImage.js +54 -0
- package/dist/apps/shared/media/filters/filterTypes.d.ts +40 -0
- package/dist/apps/shared/media/filters/filterTypes.js +63 -0
- package/dist/apps/shared/media/filters/mlModels.d.ts +54 -0
- package/dist/apps/shared/media/filters/mlModels.js +106 -0
- package/dist/apps/shared/media/filters/pixelEffects.d.ts +14 -0
- package/dist/apps/shared/media/filters/pixelEffects.js +55 -0
- package/dist/apps/shared/media/mediaPreferences.d.ts +34 -0
- package/dist/apps/shared/media/mediaPreferences.js +93 -0
- package/dist/apps/shared/media/useLocalMedia.d.ts +17 -1
- package/dist/apps/shared/media/useLocalMedia.js +160 -14
- package/dist/apps/shared/push/GuestSignalingClient.d.ts +1 -1
- package/dist/apps/shared/push/GuestSignalingClient.js +3 -3
- package/dist/apps/shared/relay/AudioPlayer.d.ts +38 -0
- package/dist/apps/shared/relay/AudioPlayer.js +103 -0
- package/dist/apps/shared/relay/AudioSender.d.ts +50 -0
- package/dist/apps/shared/relay/AudioSender.js +172 -0
- package/dist/apps/shared/relay/RelayClient.d.ts +65 -0
- package/dist/apps/shared/relay/RelayClient.js +236 -0
- package/dist/apps/shared/relay/RelayReceiver.d.ts +21 -0
- package/dist/apps/shared/relay/RelayReceiver.js +59 -0
- package/dist/apps/shared/relay/RelaySender.d.ts +34 -0
- package/dist/apps/shared/relay/RelaySender.js +54 -0
- package/dist/apps/shared/relay/RelayTransport.d.ts +38 -0
- package/dist/apps/shared/relay/RelayTransport.js +142 -0
- package/dist/apps/shared/relay/VideoPlayer.d.ts +31 -0
- package/dist/apps/shared/relay/VideoPlayer.js +102 -0
- package/dist/apps/shared/relay/VideoSender.d.ts +56 -0
- package/dist/apps/shared/relay/VideoSender.js +204 -0
- package/dist/apps/shared/relay/audioResume.d.ts +12 -0
- package/dist/apps/shared/relay/audioResume.js +45 -0
- package/dist/apps/shared/relay/frames.d.ts +101 -0
- package/dist/apps/shared/relay/frames.js +221 -0
- package/dist/apps/shared/relay/relayEnv.d.ts +181 -0
- package/dist/apps/shared/relay/relayEnv.js +69 -0
- package/dist/apps/shared/relay/senderCommon.d.ts +19 -0
- package/dist/apps/shared/relay/senderCommon.js +10 -0
- package/dist/apps/shared/webrtc/MeshConnectionManager.d.ts +52 -2
- package/dist/apps/shared/webrtc/MeshConnectionManager.js +138 -7
- package/dist/apps/shared/webrtc/realPeerConnection.d.ts +7 -0
- package/dist/apps/shared/webrtc/realPeerConnection.js +20 -0
- package/dist/apps/shared/webrtc/types.d.ts +29 -2
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/routes/BaseVideoMeetingRoute.js +237 -3
- package/dist/lib/routes/BaseVideoMeetingRoute.js.map +1 -1
- package/dist/lib/util/EffectsUtils.js +21 -0
- package/dist/lib/util/EffectsUtils.js.map +1 -0
- package/dist/lib/util/IceServerUtils.js +25 -4
- package/dist/lib/util/IceServerUtils.js.map +1 -1
- package/dist/lib/util/RedisRelayBus.js +241 -0
- package/dist/lib/util/RedisRelayBus.js.map +1 -0
- package/dist/lib/util/RelayHub.js +405 -0
- package/dist/lib/util/RelayHub.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/routes/BaseVideoMeetingRoute.d.ts +79 -0
- package/dist/types/util/EffectsUtils.d.ts +10 -0
- package/dist/types/util/IceServerUtils.d.ts +12 -1
- package/dist/types/util/RedisRelayBus.d.ts +131 -0
- package/dist/types/util/RelayHub.d.ts +188 -0
- package/package.json +25 -11
|
@@ -17,15 +17,30 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
17
17
|
import * as crypto from "crypto";
|
|
18
18
|
import { ApiError, JWTUtils, ObjectDecorators } from "@rapidrest/core";
|
|
19
19
|
import { ACLAction, ACLUtils, ApiErrorMessages, ApiErrors, DatabaseDecorators, DocDecorators, ModelUtils, RepoUtils, RouteDecorators, } from "@rapidrest/service-core";
|
|
20
|
+
import { parseEffectsAssetsUrl } from "../util/EffectsUtils.js";
|
|
20
21
|
import { buildIceServers } from "../util/IceServerUtils.js";
|
|
21
22
|
import { buildBaseUrl } from "../util/PublicUrlUtils.js";
|
|
23
|
+
import { RedisRelayBus } from "../util/RedisRelayBus.js";
|
|
24
|
+
import { parseRelayEnabled, RELAY_LARGE_PAYLOAD_BYTES, RELAY_MAX_PAYLOAD_BYTES, RELAY_WS_MAX_BACKPRESSURE_BYTES, RelayHub, } from "../util/RelayHub.js";
|
|
22
25
|
import { stripTrustedRoles } from "../util/RouteAccessUtils.js";
|
|
23
26
|
import { JOIN_TOKEN_PATTERN, PUBLIC_SLUG_PATTERN, mintJoinToken, mintPublicSlug } from "../util/TokenUtils.js";
|
|
24
27
|
import { VideoMeetingStatus, VideoMeetingVisibility } from "../models/types.js";
|
|
25
|
-
const { Config, Inject, Logger } = ObjectDecorators;
|
|
28
|
+
const { Config, Destroy, Init, Inject, Logger } = ObjectDecorators;
|
|
26
29
|
const { Description, Summary } = DocDecorators;
|
|
27
30
|
const { Transactional } = DatabaseDecorators;
|
|
28
|
-
const { Delete, Get, Param, Post, Put, Query, RateLimit, Request, User: AuthUser } = RouteDecorators;
|
|
31
|
+
const { Auth, Delete, Get, Param, Post, Put, Query, RateLimit, Request, Socket, User: AuthUser, WebSocket } = RouteDecorators;
|
|
32
|
+
/** Whether the installed `@rapidrest/service-core` lets a `@WebSocket()` route set its own message and backpressure
|
|
33
|
+
* limits (its 2.4.0 and later export the option bounds). Without that the framework holds every WebSocket route to
|
|
34
|
+
* 16 KiB messages, and asking for more would advertise a limit that is not enforced - so the route then keeps 16 KiB. */
|
|
35
|
+
const WS_ROUTE_OPTIONS_SUPPORTED = "MAX_WEBSOCKET_PAYLOAD_LENGTH" in RouteDecorators;
|
|
36
|
+
/** The largest message a relay socket may send: what the route asks the framework for and what `ready` tells the
|
|
37
|
+
* client. */
|
|
38
|
+
const RELAY_MESSAGE_LIMIT_BYTES = WS_ROUTE_OPTIONS_SUPPORTED ? RELAY_LARGE_PAYLOAD_BYTES : RELAY_MAX_PAYLOAD_BYTES;
|
|
39
|
+
/** The relay route's WebSocket options: bigger messages, so a key frame is one message, and a bigger send buffer, so a
|
|
40
|
+
* receiver that stalls for a moment loses nothing. `undefined` (the framework's defaults) where it cannot be set. */
|
|
41
|
+
const RELAY_WS_OPTIONS = WS_ROUTE_OPTIONS_SUPPORTED
|
|
42
|
+
? { maxPayloadLength: RELAY_LARGE_PAYLOAD_BYTES, maxBackpressure: RELAY_WS_MAX_BACKPRESSURE_BYTES }
|
|
43
|
+
: undefined;
|
|
29
44
|
/** Upper bounds on caller-supplied text, matching the general shape `booking-plugin`'s `BaseBookingRoute` bounds
|
|
30
45
|
* its own free-text fields with. */
|
|
31
46
|
const MAX_TITLE_LENGTH = 200;
|
|
@@ -52,6 +67,13 @@ export const GUEST_UID_PREFIX = "guest:";
|
|
|
52
67
|
const GUEST_GRANT_MAX_ATTEMPTS = 5;
|
|
53
68
|
/** The `label` of every `CalendarEventAttendeeLink` `persistMeeting()` writes. */
|
|
54
69
|
const ATTENDEE_LINK_LABEL = "Join video call";
|
|
70
|
+
/** The reason `relay()` closes (1008) a socket it refuses for any authorization reason - a caller with no grant, a
|
|
71
|
+
* meeting that doesn't exist, and one that is cancelled or ended all get exactly this, so a refusal never reveals
|
|
72
|
+
* whether the meeting exists. */
|
|
73
|
+
const RELAY_NOT_PERMITTED = "Not permitted.";
|
|
74
|
+
/** How many messages `relay()` holds for a socket that sends before its authorization finished (a client's `hello`
|
|
75
|
+
* can arrive while the meeting is still being looked up); the rest are dropped. */
|
|
76
|
+
const RELAY_MAX_QUEUED_MESSAGES = 8;
|
|
55
77
|
/**
|
|
56
78
|
* The owner's management of their own `VideoMeeting`s (JWT-authenticated, mailbox-ACL-checked exactly like any
|
|
57
79
|
* other mailbox-scoped entity - see `booking-plugin`'s `BaseBookingTypeRoute` for the same "must own or hold a
|
|
@@ -175,6 +197,27 @@ const ATTENDEE_LINK_LABEL = "Join video call";
|
|
|
175
197
|
* now run every loaded meeting through `withJoinUrls()` - the exact same computation `create()` already did,
|
|
176
198
|
* applied uniformly on read instead of only once on write.
|
|
177
199
|
*
|
|
200
|
+
* ## The last-resort WebSocket media relay (`relay()`)
|
|
201
|
+
*
|
|
202
|
+
* Clients connect peer-to-peer over WebRTC, fall back to TURN, and as a third and last resort (a corporate firewall
|
|
203
|
+
* that allows neither) send media over a WebSocket this server proxies: `relay()`, at `/relay/:id` under the
|
|
204
|
+
* subclass's own base path (`/api/mail/video-meetings/relay/<meetingUid>`). It is a fan-out of opaque binary
|
|
205
|
+
* frames between the participants of one meeting - the wire protocol and limits are documented on `RelayHub`, which
|
|
206
|
+
* does all of the relaying; this class only authorizes a socket and hands it over, and picks how frames travel
|
|
207
|
+
* between server replicas: when the deployment configures `datastores:events` (the Redis the framework's push system
|
|
208
|
+
* already uses) frames cross replicas over Redis pub/sub (`RedisRelayBus`), so participants connected to different
|
|
209
|
+
* replicas reach each other; without it they travel in-process only, with a one-time warning at start-up that relay
|
|
210
|
+
* does not cross replicas.
|
|
211
|
+
*
|
|
212
|
+
* Authorization is the very grant `join()`'s `ensureChannelGrant()` already gives every participant, guest or real:
|
|
213
|
+
* `READ` and `CREATE` on the meeting's uid, checked with the caller's trusted roles stripped exactly as
|
|
214
|
+
* `MailPushRoute` does for `/push`, so a trusted administrator with no grant is refused just like there. The meeting must exist and be neither
|
|
215
|
+
* cancelled nor ended. Every refusal closes the socket with code 1008; a missing meeting and a missing grant are
|
|
216
|
+
* indistinguishable ("Not permitted."), so a caller learns nothing about meetings they can't join. The whole
|
|
217
|
+
* thing can be turned off with `mail:videoconf:relay:enabled` (default `true`; `false`/`"false"`/`0`/`"0"` disable
|
|
218
|
+
* it): a disabled relay closes every socket with 1008 "Relay disabled." and `join()` reports `relayEnabled: false`, so
|
|
219
|
+
* clients don't try it.
|
|
220
|
+
*
|
|
178
221
|
* ## Other known limitations
|
|
179
222
|
*
|
|
180
223
|
* **`VideoMeetingInvitee.joinToken` never expires** and has no GC job - identical tradeoff to `Booking.manageToken`.
|
|
@@ -200,6 +243,19 @@ export class BaseVideoMeetingRoute {
|
|
|
200
243
|
this.turnUsername = "";
|
|
201
244
|
this.turnCredential = "";
|
|
202
245
|
this.turnSharedSecret = "";
|
|
246
|
+
/** Whether `relay()` accepts sockets, and `join()` advertises it - read through `isRelayEnabled()`, since a value
|
|
247
|
+
* set from an environment variable arrives as a string. */
|
|
248
|
+
this.relayEnabledSetting = true;
|
|
249
|
+
/** The base URL the video filters' models are hosted under, when not on the public CDNs - read through
|
|
250
|
+
* `parseEffectsAssetsUrl()`, which drops anything that isn't a plain URL or path. */
|
|
251
|
+
this.effectsAssetsUrlSetting = "";
|
|
252
|
+
/** The deployment's `events` datastore (`datastores:events`) - the Redis the framework's push system publishes
|
|
253
|
+
* across replicas on; `null` when the deployment has none. Decides how `initRelayBus()` carries relay frames. */
|
|
254
|
+
this.eventsConfig = null;
|
|
255
|
+
/** The rooms of this process's relay sockets. One per route instance. It starts out on an in-process bus, which
|
|
256
|
+
* is what a route that was never initialized (a test's) keeps; `initRelayBus()` swaps in a hub on a Redis bus
|
|
257
|
+
* when the deployment has one, before any socket can attach. Its socket caps are per server replica. */
|
|
258
|
+
this.relayHub = new RelayHub({ maxPayloadBytes: RELAY_MESSAGE_LIMIT_BYTES, logger: { debug: (message) => this.logger.debug(message) } });
|
|
203
259
|
}
|
|
204
260
|
/**
|
|
205
261
|
* Exposes the `@Model(...)`-supplied entity class as an instance property so `@Transactional()` on
|
|
@@ -210,6 +266,38 @@ export class BaseVideoMeetingRoute {
|
|
|
210
266
|
get modelClass() {
|
|
211
267
|
return this.constructor.modelClass;
|
|
212
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* Picks how relay frames travel between server replicas, once the route is created: over Redis pub/sub
|
|
271
|
+
* (`RedisRelayBus`) when `datastores:events` is configured, else in-process only with a single warning that
|
|
272
|
+
* participants on different replicas cannot relay to each other. A Redis bus that cannot be created (the `redis`
|
|
273
|
+
* package is missing, an unusable URL) falls back the same way, with the error logged. Runs before the route
|
|
274
|
+
* serves anything, so no socket is attached to the hub it replaces.
|
|
275
|
+
*/
|
|
276
|
+
async initRelayBus() {
|
|
277
|
+
const url = this.eventsConfig?.url;
|
|
278
|
+
if (!url) {
|
|
279
|
+
this.logger.warn("The `events` datastore is not configured: the video meeting relay only carries media between participants " +
|
|
280
|
+
"connected to this server instance, not between server replicas.");
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
const bus = new RedisRelayBus({ url, logger: this.logger });
|
|
284
|
+
try {
|
|
285
|
+
await bus.connect();
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
this.logger.error("Could not create the video meeting relay's Redis bus, so relay only works between participants connected to this " +
|
|
289
|
+
`server instance: ${err?.message ?? err}`);
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
this.relayBus = bus;
|
|
293
|
+
this.relayHub = new RelayHub({ bus, maxPayloadBytes: RELAY_MESSAGE_LIMIT_BYTES, logger: { debug: (message) => this.logger.debug(message) } });
|
|
294
|
+
}
|
|
295
|
+
/** Disconnects the Redis relay bus, if there is one, when the object factory destroys the route. (The factory
|
|
296
|
+
* runs one destroy method per object: a subclass declaring its own `@Destroy` must call this one.) */
|
|
297
|
+
destroyRelayBus() {
|
|
298
|
+
this.relayBus?.close();
|
|
299
|
+
this.relayBus = undefined;
|
|
300
|
+
}
|
|
213
301
|
async init() {
|
|
214
302
|
if (!this.meetingRepo) {
|
|
215
303
|
this.meetingRepo = await this._objectFactory.newInstance(RepoUtils, { name: this.meetingClass.name, args: [this.meetingClass] });
|
|
@@ -639,6 +727,8 @@ export class BaseVideoMeetingRoute {
|
|
|
639
727
|
throw new ApiError(ApiErrors.NOT_FOUND, 404, ApiErrorMessages.NOT_FOUND);
|
|
640
728
|
}
|
|
641
729
|
}
|
|
730
|
+
const relayEnabled = this.isRelayEnabled();
|
|
731
|
+
const effectsAssetsUrl = parseEffectsAssetsUrl(this.effectsAssetsUrlSetting);
|
|
642
732
|
const publicMeeting = {
|
|
643
733
|
uid: meeting.uid,
|
|
644
734
|
title: meeting.title,
|
|
@@ -657,7 +747,7 @@ export class BaseVideoMeetingRoute {
|
|
|
657
747
|
// prefix check is a safe, cheap discriminator - see this class's doc comment and GUEST_UID_PREFIX).
|
|
658
748
|
if (user && !user.uid.startsWith(GUEST_UID_PREFIX)) {
|
|
659
749
|
await this.ensureChannelGrant(meeting.uid, user.uid);
|
|
660
|
-
return { meeting: publicMeeting, iceServers, authenticated: true, selfUid: user.uid };
|
|
750
|
+
return { meeting: publicMeeting, iceServers, authenticated: true, selfUid: user.uid, relayEnabled, ...(effectsAssetsUrl && { effectsAssetsUrl }) };
|
|
661
751
|
}
|
|
662
752
|
const { guestUid, token: guestToken, expiresAt } = this.mintGuestToken();
|
|
663
753
|
await this.ensureChannelGrant(meeting.uid, guestUid);
|
|
@@ -668,8 +758,107 @@ export class BaseVideoMeetingRoute {
|
|
|
668
758
|
selfUid: guestUid,
|
|
669
759
|
token: guestToken,
|
|
670
760
|
expiresAt: expiresAt.toISOString(),
|
|
761
|
+
relayEnabled,
|
|
762
|
+
...(effectsAssetsUrl && { effectsAssetsUrl }),
|
|
671
763
|
};
|
|
672
764
|
}
|
|
765
|
+
/** Whether the WebSocket media relay is enabled - `mail:videoconf:relay:enabled`, see `parseRelayEnabled()`. */
|
|
766
|
+
isRelayEnabled() {
|
|
767
|
+
return parseRelayEnabled(this.relayEnabledSetting);
|
|
768
|
+
}
|
|
769
|
+
/**
|
|
770
|
+
* Decides whether `user` may open a relay socket to meeting `id`: the relay must be enabled, `user` must hold BOTH
|
|
771
|
+
* `READ` and `CREATE` on the meeting's uid - exactly what `ensureChannelGrant()` gives a joined participant, and
|
|
772
|
+
* what `/push` demands to subscribe and publish - and the meeting must exist and be neither cancelled nor ended.
|
|
773
|
+
* Returns the reason to close the socket with, or `undefined` when permitted.
|
|
774
|
+
*
|
|
775
|
+
* `hasPermission()` gets `user` with its trusted roles stripped (`stripTrustedRoles()`), exactly as
|
|
776
|
+
* `@rapidmx/restapi`'s `MailPushRoute` does for the same grant on `/push`: without it the framework's "trusted
|
|
777
|
+
* users always have permission" rule would let any administrator relay in any meeting they hold no grant on, so
|
|
778
|
+
* a trusted administrator with no grant is refused here exactly as `/push` refuses them. Every authorization
|
|
779
|
+
* failure gives the same `RELAY_NOT_PERMITTED`, whether the grant, the meeting or its state is what's missing.
|
|
780
|
+
*/
|
|
781
|
+
async authorizeRelay(id, user) {
|
|
782
|
+
if (!this.isRelayEnabled()) {
|
|
783
|
+
return "Relay disabled.";
|
|
784
|
+
}
|
|
785
|
+
// `hasPermission()` answers `true` for an empty ACL uid, so an empty id must never reach it.
|
|
786
|
+
if (!user || !id) {
|
|
787
|
+
return RELAY_NOT_PERMITTED;
|
|
788
|
+
}
|
|
789
|
+
await this.init();
|
|
790
|
+
const checked = stripTrustedRoles(user, this.trustedRoles);
|
|
791
|
+
if (!(await this.aclUtils.hasPermission(checked, id, ACLAction.READ)) || !(await this.aclUtils.hasPermission(checked, id, ACLAction.CREATE))) {
|
|
792
|
+
return RELAY_NOT_PERMITTED;
|
|
793
|
+
}
|
|
794
|
+
const meeting = await this.meetingRepo.findOne(id, { ignoreACL: true });
|
|
795
|
+
if (!meeting || meeting.status === VideoMeetingStatus.CANCELLED || meeting.status === VideoMeetingStatus.ENDED) {
|
|
796
|
+
return RELAY_NOT_PERMITTED;
|
|
797
|
+
}
|
|
798
|
+
return undefined;
|
|
799
|
+
}
|
|
800
|
+
/**
|
|
801
|
+
* The meeting uid a relay socket's URL names. `@Param("id")` is filled in by the Bun router, but NOT by the uWS
|
|
802
|
+
* router this framework actually serves with: it never populates `req.params` for a WebSocket upgrade (a
|
|
803
|
+
* `@WebSocket()` route has, so far, never had a path parameter - `BasePushRoute.connect()` has none). So when the
|
|
804
|
+
* decorated argument is empty this reads the last segment of the request path instead, which the
|
|
805
|
+
* `/relay/:id` pattern guarantees is the id (the framework also registers the trailing-slash form; the path
|
|
806
|
+
* never carries the query string). Returns `undefined` when there is none or it isn't valid percent-encoding.
|
|
807
|
+
*/
|
|
808
|
+
relayMeetingId(paramId, req) {
|
|
809
|
+
if (typeof paramId === "string" && paramId) {
|
|
810
|
+
return paramId;
|
|
811
|
+
}
|
|
812
|
+
const segments = String(req?.path ?? "").split("/").filter((segment) => segment);
|
|
813
|
+
try {
|
|
814
|
+
return decodeURIComponent(segments[segments.length - 1] ?? "") || undefined;
|
|
815
|
+
}
|
|
816
|
+
catch {
|
|
817
|
+
return undefined;
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
async relay(paramId, req, sock, user) {
|
|
821
|
+
const id = this.relayMeetingId(paramId, req);
|
|
822
|
+
// Listeners first, before the first await: the client may send its `hello` the moment the socket opens,
|
|
823
|
+
// while the meeting is still being looked up, and an event with no listener is lost. Whatever arrives until
|
|
824
|
+
// the socket is admitted is held (a few messages at most) and replayed to it.
|
|
825
|
+
let conn;
|
|
826
|
+
let closed = false;
|
|
827
|
+
const queued = [];
|
|
828
|
+
sock.on("message", (data, isBinary) => {
|
|
829
|
+
if (conn) {
|
|
830
|
+
conn.message(data, isBinary);
|
|
831
|
+
}
|
|
832
|
+
else if (queued.length < RELAY_MAX_QUEUED_MESSAGES) {
|
|
833
|
+
queued.push({ data, isBinary });
|
|
834
|
+
}
|
|
835
|
+
});
|
|
836
|
+
sock.on("close", () => {
|
|
837
|
+
closed = true;
|
|
838
|
+
conn?.close();
|
|
839
|
+
});
|
|
840
|
+
let refusal;
|
|
841
|
+
try {
|
|
842
|
+
refusal = await this.authorizeRelay(id, user);
|
|
843
|
+
}
|
|
844
|
+
catch (err) {
|
|
845
|
+
this.logger.error(`Failed to authorize a relay socket for meeting ${id}: ${err?.message ?? err}`);
|
|
846
|
+
sock.close(1011, "Relay unavailable.");
|
|
847
|
+
return;
|
|
848
|
+
}
|
|
849
|
+
if (refusal) {
|
|
850
|
+
sock.close(1008, refusal);
|
|
851
|
+
return;
|
|
852
|
+
}
|
|
853
|
+
// The socket closed while it was being authorized: nothing to attach, and nothing left to clean up.
|
|
854
|
+
if (closed) {
|
|
855
|
+
return;
|
|
856
|
+
}
|
|
857
|
+
conn = this.relayHub.attach(id, user.uid, sock);
|
|
858
|
+
for (const message of queued) {
|
|
859
|
+
conn?.message(message.data, message.isBinary);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
673
862
|
}
|
|
674
863
|
__decorate([
|
|
675
864
|
Inject(ACLUtils),
|
|
@@ -703,10 +892,34 @@ __decorate([
|
|
|
703
892
|
Config("mail:videoconf:turn:shared_secret", ""),
|
|
704
893
|
__metadata("design:type", String)
|
|
705
894
|
], BaseVideoMeetingRoute.prototype, "turnSharedSecret", void 0);
|
|
895
|
+
__decorate([
|
|
896
|
+
Config("mail:videoconf:relay:enabled", true),
|
|
897
|
+
__metadata("design:type", Object)
|
|
898
|
+
], BaseVideoMeetingRoute.prototype, "relayEnabledSetting", void 0);
|
|
899
|
+
__decorate([
|
|
900
|
+
Config("mail:videoconf:effects:assets_url", ""),
|
|
901
|
+
__metadata("design:type", String)
|
|
902
|
+
], BaseVideoMeetingRoute.prototype, "effectsAssetsUrlSetting", void 0);
|
|
903
|
+
__decorate([
|
|
904
|
+
Config("datastores:events", null),
|
|
905
|
+
__metadata("design:type", Object)
|
|
906
|
+
], BaseVideoMeetingRoute.prototype, "eventsConfig", void 0);
|
|
706
907
|
__decorate([
|
|
707
908
|
Logger,
|
|
708
909
|
__metadata("design:type", Object)
|
|
709
910
|
], BaseVideoMeetingRoute.prototype, "logger", void 0);
|
|
911
|
+
__decorate([
|
|
912
|
+
Init,
|
|
913
|
+
__metadata("design:type", Function),
|
|
914
|
+
__metadata("design:paramtypes", []),
|
|
915
|
+
__metadata("design:returntype", Promise)
|
|
916
|
+
], BaseVideoMeetingRoute.prototype, "initRelayBus", null);
|
|
917
|
+
__decorate([
|
|
918
|
+
Destroy,
|
|
919
|
+
__metadata("design:type", Function),
|
|
920
|
+
__metadata("design:paramtypes", []),
|
|
921
|
+
__metadata("design:returntype", void 0)
|
|
922
|
+
], BaseVideoMeetingRoute.prototype, "destroyRelayBus", null);
|
|
710
923
|
__decorate([
|
|
711
924
|
Transactional(),
|
|
712
925
|
__metadata("design:type", Function),
|
|
@@ -795,4 +1008,25 @@ __decorate([
|
|
|
795
1008
|
__metadata("design:paramtypes", [String, Object]),
|
|
796
1009
|
__metadata("design:returntype", Promise)
|
|
797
1010
|
], BaseVideoMeetingRoute.prototype, "join", null);
|
|
1011
|
+
__decorate([
|
|
1012
|
+
Summary("Relays media over a WebSocket."),
|
|
1013
|
+
Description("The last-resort media path for a participant whose network blocks both a direct WebRTC connection and TURN: " +
|
|
1014
|
+
"a WebSocket at /relay/<meetingUid> carrying opaque binary frames between the meeting's participants " +
|
|
1015
|
+
"(see RelayHub for the protocol: a 'hello' text message first, then 'want' to choose whose media to " +
|
|
1016
|
+
"receive, then binary frames of at most the 'maxMessageBytes' the server's 'ready' reply names: 64 KiB, or 16 KiB on a framework that cannot raise its limit). Requires a JWT (a real user's, or the guest token " +
|
|
1017
|
+
"join() minted) holding READ and CREATE on the meeting - the grant join() gives - and an existing, " +
|
|
1018
|
+
"unended, uncancelled meeting; anything else, or a disabled relay, closes the socket with code 1008. When " +
|
|
1019
|
+
"the server runs several replicas and the events datastore (Redis) is configured, media is relayed " +
|
|
1020
|
+
"between participants connected to different replicas too; without it, only between participants " +
|
|
1021
|
+
"connected to the same replica. The socket limits apply per replica."),
|
|
1022
|
+
Auth(["jwt"]),
|
|
1023
|
+
WebSocket("/relay/:id", RELAY_WS_OPTIONS),
|
|
1024
|
+
__param(0, Param("id")),
|
|
1025
|
+
__param(1, Request),
|
|
1026
|
+
__param(2, Socket),
|
|
1027
|
+
__param(3, AuthUser),
|
|
1028
|
+
__metadata("design:type", Function),
|
|
1029
|
+
__metadata("design:paramtypes", [Object, Object, Object, Object]),
|
|
1030
|
+
__metadata("design:returntype", Promise)
|
|
1031
|
+
], BaseVideoMeetingRoute.prototype, "relay", null);
|
|
798
1032
|
//# sourceMappingURL=BaseVideoMeetingRoute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseVideoMeetingRoute.js","sourceRoot":"","sources":["../../../src/routes/BaseVideoMeetingRoute.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseVideoMeetingRoute.js","sourceRoot":"","sources":["../../../src/routes/BaseVideoMeetingRoute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright (C) 2026 Jean-Philippe Steinmetz. All rights reserved.
|
|
3
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
4
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
5
|
+
/**
|
|
6
|
+
* Reads the `mail:videoconf:effects:assets_url` setting: the base URL an administrator hosts the video filters'
|
|
7
|
+
* machine-learning runtime and models under, in place of the public CDNs they are otherwise fetched from. It is
|
|
8
|
+
* handed to every participant's browser, so only an absolute `http(s)` URL or a path on this server is accepted;
|
|
9
|
+
* anything else (a `javascript:` URL, a typo, nothing at all) is treated as unset. A trailing slash is dropped.
|
|
10
|
+
*
|
|
11
|
+
* @param value The setting as configured.
|
|
12
|
+
* @returns The URL to hand to clients, or `undefined` to have them use the defaults.
|
|
13
|
+
*/
|
|
14
|
+
export function parseEffectsAssetsUrl(value) {
|
|
15
|
+
if (typeof value !== "string") {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const trimmed = value.trim().replace(/\/+$/, "");
|
|
19
|
+
return /^(https?:\/\/[^\s]+|\/[^\s/][^\s]*)$/i.test(trimmed) ? trimmed : undefined;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=EffectsUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EffectsUtils.js","sourceRoot":"","sources":["../../../src/util/EffectsUtils.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mEAAmE;AACnE,mCAAmC;AACnC,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,uCAAuC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC"}
|
|
@@ -8,6 +8,26 @@ import * as crypto from "crypto";
|
|
|
8
8
|
export function parseTurnUrls(value) {
|
|
9
9
|
return value.split(/[\s,]+/).filter(Boolean);
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Adds the TCP flavour of every plain `turn:` URL that does not name a transport itself. A browser given
|
|
13
|
+
* `turn:host:3478` speaks only UDP to the TURN server, and UDP is precisely what a restrictive firewall blocks while
|
|
14
|
+
* still letting outbound TCP through - so a client behind one never reaches a TURN server that was listening on TCP
|
|
15
|
+
* all along. Offering both lets ICE try UDP first and settle for TCP when UDP goes nowhere. `turns:` URLs are TCP
|
|
16
|
+
* (TLS) already, and a URL with an explicit `transport=` is the operator's own choice and is left exactly as given.
|
|
17
|
+
*
|
|
18
|
+
* @param urls The URLs from `parseTurnUrls()`, in the order the operator wrote them.
|
|
19
|
+
* @returns The same URLs, each plain `turn:` one followed by its `?transport=tcp` twin, without duplicates.
|
|
20
|
+
*/
|
|
21
|
+
export function withTcpFallback(urls) {
|
|
22
|
+
const expanded = [];
|
|
23
|
+
for (const url of urls) {
|
|
24
|
+
expanded.push(url);
|
|
25
|
+
if (/^turn:/i.test(url) && !/[?&]transport=/i.test(url)) {
|
|
26
|
+
expanded.push(`${url}${url.includes("?") ? "&" : "?"}transport=tcp`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return [...new Set(expanded)];
|
|
30
|
+
}
|
|
11
31
|
/** Always-available, free public STUN servers - discovery only, no media relay. Two independent providers, so a
|
|
12
32
|
* call still has STUN available if one of them is ever unreachable. */
|
|
13
33
|
export const DEFAULT_STUN_SERVERS = [
|
|
@@ -40,7 +60,7 @@ export function turnRestCredential(sharedSecret, userPart, ttlSeconds = DEFAULT_
|
|
|
40
60
|
}
|
|
41
61
|
/**
|
|
42
62
|
* Builds the full ICE server list for a join response: the hardcoded public STUN servers, plus a TURN entry when
|
|
43
|
-
* `settings.url` is configured. When a `sharedSecret` is also configured, the TURN entry carries a fresh,
|
|
63
|
+
* `settings.url` is configured (see `withTcpFallback()` for the URLs it carries). When a `sharedSecret` is also configured, the TURN entry carries a fresh,
|
|
44
64
|
* time-limited credential (`turnRestCredential()`) rather than the static `username`/`credential` pair, which is
|
|
45
65
|
* used verbatim only when no shared secret is set. A TURN url with neither a shared secret nor a static
|
|
46
66
|
* credential is still included with no credentials at all - some self-hosted TURN servers are deliberately run
|
|
@@ -53,11 +73,12 @@ export function turnRestCredential(sharedSecret, userPart, ttlSeconds = DEFAULT_
|
|
|
53
73
|
*/
|
|
54
74
|
export function buildIceServers(settings, options) {
|
|
55
75
|
const servers = [...DEFAULT_STUN_SERVERS];
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
76
|
+
const configured = parseTurnUrls(settings.url);
|
|
77
|
+
if (configured.length === 0) {
|
|
58
78
|
return servers;
|
|
59
79
|
}
|
|
60
|
-
|
|
80
|
+
const turnUrls = withTcpFallback(configured);
|
|
81
|
+
// One URL stays a string, so an operator who names a single `turns:` or `?transport=` URL sees no change.
|
|
61
82
|
const url = turnUrls.length === 1 ? turnUrls[0] : turnUrls;
|
|
62
83
|
if (settings.sharedSecret.trim()) {
|
|
63
84
|
const userPart = settings.username.trim() || (options?.randomUserPart ?? (() => crypto.randomBytes(8).toString("hex")))();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IceServerUtils.js","sourceRoot":"","sources":["../../../src/util/IceServerUtils.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mEAAmE;AACnE,mCAAmC;AACnC,+EAA+E;AAC/E,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAoBjC;kGACkG;AAClG,MAAM,UAAU,aAAa,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;uEACuE;AACvE,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC5D,EAAE,IAAI,EAAE,8BAA8B,EAAE;IACxC,EAAE,IAAI,EAAE,+BAA+B,EAAE;CAC5C,CAAC;AAEF;;iBAEiB;AACjB,MAAM,CAAC,MAAM,mCAAmC,GAAW,EAAE,GAAG,EAAE,CAAC;AAEnE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAC9B,YAAoB,EACpB,QAAgB,EAChB,aAAqB,mCAAmC,EACxD,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,MAAM,GAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9F,MAAM,QAAQ,GAAW,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;IACjD,MAAM,UAAU,GAAW,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC3B,QAAsB,EACtB,OAA4E;IAE5E,MAAM,OAAO,GAAsB,CAAC,GAAG,oBAAoB,CAAC,CAAC;IAC7D,MAAM,
|
|
1
|
+
{"version":3,"file":"IceServerUtils.js","sourceRoot":"","sources":["../../../src/util/IceServerUtils.ts"],"names":[],"mappings":"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"}
|