@vex-chat/spire 2.3.4 → 2.5.0
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/dist/CallManager.d.ts +38 -0
- package/dist/CallManager.js +243 -0
- package/dist/CallManager.js.map +1 -0
- package/dist/ClientManager.d.ts +3 -1
- package/dist/ClientManager.js +31 -3
- package/dist/ClientManager.js.map +1 -1
- package/dist/Database.d.ts +3 -2
- package/dist/Database.js +7 -1
- package/dist/Database.js.map +1 -1
- package/dist/IceServers.d.ts +7 -0
- package/dist/IceServers.js +143 -0
- package/dist/IceServers.js.map +1 -0
- package/dist/NotificationService.d.ts +2 -0
- package/dist/NotificationService.js +325 -4
- package/dist/NotificationService.js.map +1 -1
- package/dist/Spire.d.ts +1 -0
- package/dist/Spire.js +37 -6
- package/dist/Spire.js.map +1 -1
- package/dist/server/callWake.d.ts +13 -0
- package/dist/server/callWake.js +18 -0
- package/dist/server/callWake.js.map +1 -0
- package/package.json +6 -5
- package/src/CallManager.ts +370 -0
- package/src/ClientManager.ts +49 -10
- package/src/Database.ts +12 -3
- package/src/IceServers.ts +185 -0
- package/src/NotificationService.ts +430 -4
- package/src/Spire.ts +73 -21
- package/src/__tests__/CallManager.spec.ts +208 -0
- package/src/__tests__/IceServers.spec.ts +151 -0
- package/src/__tests__/notifyFanout.spec.ts +136 -0
- package/src/server/callWake.ts +30 -0
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
* Licensed under AGPL-3.0. See LICENSE for details.
|
|
4
4
|
* Commercial licenses available at vex.wtf
|
|
5
5
|
*/
|
|
6
|
+
import { readFileSync } from "node:fs";
|
|
7
|
+
import * as http2 from "node:http2";
|
|
8
|
+
import jwt from "jsonwebtoken";
|
|
6
9
|
const EXPO_PUSH_ENDPOINT = "https://exp.host/--/api/v2/push/send";
|
|
7
10
|
const EXPO_RECEIPT_ENDPOINT = "https://exp.host/--/api/v2/push/getReceipts";
|
|
11
|
+
const FCM_TOKEN_ENDPOINT = "https://oauth2.googleapis.com/token";
|
|
8
12
|
const EXPO_BATCH_SIZE = 100;
|
|
9
13
|
const EXPO_RECEIPT_DELAY_MS = 15 * 60 * 1000;
|
|
10
14
|
const EXPO_REQUEST_TIMEOUT_MS = 10_000;
|
|
@@ -111,9 +115,13 @@ export class NotificationService {
|
|
|
111
115
|
const subscriptions = await this.db.retrieveNotificationSubscriptions(dispatch.deviceID
|
|
112
116
|
? { ...query, deviceID: dispatch.deviceID }
|
|
113
117
|
: query);
|
|
114
|
-
const expoSubscriptions = subscriptions;
|
|
115
|
-
|
|
116
|
-
|
|
118
|
+
const expoSubscriptions = subscriptions.filter((sub) => sub.channel === "expo");
|
|
119
|
+
const apnsSubscriptions = subscriptions.filter((sub) => sub.channel === "apnsVoip");
|
|
120
|
+
const fcmSubscriptions = subscriptions.filter((sub) => sub.channel === "fcmCall");
|
|
121
|
+
if (expoSubscriptions.length === 0 &&
|
|
122
|
+
apnsSubscriptions.length === 0 &&
|
|
123
|
+
fcmSubscriptions.length === 0) {
|
|
124
|
+
console.info("[spire-notify] no push subscriptions", {
|
|
117
125
|
deviceScoped: Boolean(dispatch.deviceID),
|
|
118
126
|
event: dispatch.event,
|
|
119
127
|
transmissionID: dispatch.transmissionID,
|
|
@@ -125,6 +133,14 @@ export class NotificationService {
|
|
|
125
133
|
const batch = expoSubscriptions.slice(i, i + EXPO_BATCH_SIZE);
|
|
126
134
|
await this.sendExpoBatch(batch, dispatch);
|
|
127
135
|
}
|
|
136
|
+
if (dispatch.event === "callWake") {
|
|
137
|
+
if (apnsSubscriptions.length > 0) {
|
|
138
|
+
await this.sendApnsVoipBatch(apnsSubscriptions, dispatch);
|
|
139
|
+
}
|
|
140
|
+
if (fcmSubscriptions.length > 0) {
|
|
141
|
+
await this.sendFcmCallBatch(fcmSubscriptions, dispatch);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
128
144
|
}
|
|
129
145
|
async notifyPushIfMailPending(dispatch) {
|
|
130
146
|
const pending = await this.db.hasMail(dispatch.mailNonce, dispatch.deviceID);
|
|
@@ -203,6 +219,45 @@ export class NotificationService {
|
|
|
203
219
|
}, this.receiptDelayMs);
|
|
204
220
|
timer.unref?.();
|
|
205
221
|
}
|
|
222
|
+
async sendApnsVoipBatch(subscriptions, dispatch) {
|
|
223
|
+
const config = readApnsConfig();
|
|
224
|
+
if (!config) {
|
|
225
|
+
console.warn("[spire-notify] APNs VoIP env is not configured", {
|
|
226
|
+
event: dispatch.event,
|
|
227
|
+
size: subscriptions.length,
|
|
228
|
+
transmissionID: dispatch.transmissionID,
|
|
229
|
+
});
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const providerToken = jwt.sign({}, config.privateKey, {
|
|
233
|
+
algorithm: "ES256",
|
|
234
|
+
expiresIn: "50m",
|
|
235
|
+
header: { alg: "ES256", kid: config.keyID },
|
|
236
|
+
issuer: config.teamID,
|
|
237
|
+
});
|
|
238
|
+
for (const subscription of subscriptions) {
|
|
239
|
+
const response = await sendApnsVoipNotification(config, providerToken, subscription, dispatch);
|
|
240
|
+
if (response.status >= 200 && response.status < 300) {
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
console.warn("[spire-notify] APNs VoIP delivery failed", {
|
|
244
|
+
body: response.body.slice(0, 500),
|
|
245
|
+
status: response.status,
|
|
246
|
+
subscriptionID: subscription.subscriptionID,
|
|
247
|
+
transmissionID: dispatch.transmissionID,
|
|
248
|
+
});
|
|
249
|
+
if (response.status === 400 ||
|
|
250
|
+
response.status === 410 ||
|
|
251
|
+
response.body.includes("BadDeviceToken") ||
|
|
252
|
+
response.body.includes("Unregistered")) {
|
|
253
|
+
await this.db.removeNotificationSubscription({
|
|
254
|
+
deviceID: subscription.deviceID,
|
|
255
|
+
subscriptionID: subscription.subscriptionID,
|
|
256
|
+
userID: subscription.userID,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
206
261
|
async sendExpoBatch(subscriptions, dispatch) {
|
|
207
262
|
const headless = shouldSendHeadlessPush(dispatch);
|
|
208
263
|
const messages = subscriptions.map((sub) => expoMessageForSubscription(sub, dispatch, headless));
|
|
@@ -267,10 +322,52 @@ export class NotificationService {
|
|
|
267
322
|
this.scheduleReceiptCheck(receiptIDs);
|
|
268
323
|
}
|
|
269
324
|
}
|
|
325
|
+
async sendFcmCallBatch(subscriptions, dispatch) {
|
|
326
|
+
const config = readFcmConfig();
|
|
327
|
+
if (!config) {
|
|
328
|
+
console.warn("[spire-notify] FCM call env is not configured", {
|
|
329
|
+
event: dispatch.event,
|
|
330
|
+
size: subscriptions.length,
|
|
331
|
+
transmissionID: dispatch.transmissionID,
|
|
332
|
+
});
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
const accessToken = await fetchFcmAccessToken(config);
|
|
336
|
+
for (const subscription of subscriptions) {
|
|
337
|
+
const res = await fetchWithTimeout(`https://fcm.googleapis.com/v1/projects/${encodeURIComponent(config.projectID)}/messages:send`, {
|
|
338
|
+
body: JSON.stringify(fcmCallMessageForSubscription(subscription, dispatch)),
|
|
339
|
+
headers: {
|
|
340
|
+
Authorization: `Bearer ${accessToken}`,
|
|
341
|
+
"Content-Type": "application/json",
|
|
342
|
+
},
|
|
343
|
+
method: "POST",
|
|
344
|
+
}, "FCM call push request");
|
|
345
|
+
if (res.ok) {
|
|
346
|
+
continue;
|
|
347
|
+
}
|
|
348
|
+
const body = await res.text().catch(() => "");
|
|
349
|
+
console.warn("[spire-notify] FCM call delivery failed", {
|
|
350
|
+
body: body.slice(0, 500),
|
|
351
|
+
status: res.status,
|
|
352
|
+
subscriptionID: subscription.subscriptionID,
|
|
353
|
+
transmissionID: dispatch.transmissionID,
|
|
354
|
+
});
|
|
355
|
+
if (res.status === 400 ||
|
|
356
|
+
res.status === 404 ||
|
|
357
|
+
body.includes("UNREGISTERED") ||
|
|
358
|
+
body.includes("registration-token-not-registered")) {
|
|
359
|
+
await this.db.removeNotificationSubscription({
|
|
360
|
+
deviceID: subscription.deviceID,
|
|
361
|
+
subscriptionID: subscription.subscriptionID,
|
|
362
|
+
userID: subscription.userID,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
270
367
|
startPush(dispatch) {
|
|
271
368
|
void this.notifyPush(dispatch).catch((err) => {
|
|
272
369
|
// Push is best-effort; websocket/inbox delivery remain authoritative.
|
|
273
|
-
console.warn("[spire-notify]
|
|
370
|
+
console.warn("[spire-notify] push fanout failed", {
|
|
274
371
|
event: dispatch.event,
|
|
275
372
|
message: err instanceof Error ? err.message : String(err),
|
|
276
373
|
transmissionID: dispatch.transmissionID,
|
|
@@ -279,7 +376,21 @@ export class NotificationService {
|
|
|
279
376
|
});
|
|
280
377
|
}
|
|
281
378
|
}
|
|
379
|
+
function apnsExpiration(dispatch) {
|
|
380
|
+
const expiresAt = notifyDataFields(dispatch.data)["expiresAt"];
|
|
381
|
+
if (typeof expiresAt === "string") {
|
|
382
|
+
const epochSeconds = Math.floor(Date.parse(expiresAt) / 1000);
|
|
383
|
+
if (Number.isFinite(epochSeconds) && epochSeconds > 0) {
|
|
384
|
+
return String(epochSeconds);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return String(Math.floor((Date.now() + 60_000) / 1000));
|
|
388
|
+
}
|
|
282
389
|
function bodyForEvent(event) {
|
|
390
|
+
if (event === "callWake")
|
|
391
|
+
return "Incoming voice call.";
|
|
392
|
+
if (event === "callInvite")
|
|
393
|
+
return "Incoming voice call.";
|
|
283
394
|
if (event === "mail")
|
|
284
395
|
return undefined;
|
|
285
396
|
if (event === "deviceRequest")
|
|
@@ -288,6 +399,17 @@ function bodyForEvent(event) {
|
|
|
288
399
|
return "Your device list changed.";
|
|
289
400
|
return "Open Vex for the latest update.";
|
|
290
401
|
}
|
|
402
|
+
function callWakeTtl(dispatch) {
|
|
403
|
+
const expiresAt = notifyDataFields(dispatch.data)["expiresAt"];
|
|
404
|
+
if (typeof expiresAt !== "string") {
|
|
405
|
+
return "60s";
|
|
406
|
+
}
|
|
407
|
+
const ms = Date.parse(expiresAt) - Date.now();
|
|
408
|
+
if (!Number.isFinite(ms) || ms <= 0) {
|
|
409
|
+
return "1s";
|
|
410
|
+
}
|
|
411
|
+
return `${Math.max(1, Math.ceil(ms / 1000)).toString()}s`;
|
|
412
|
+
}
|
|
291
413
|
function expoMessageForSubscription(subscription, dispatch, headless) {
|
|
292
414
|
if (headless) {
|
|
293
415
|
return {
|
|
@@ -305,6 +427,7 @@ function expoMessageForSubscription(subscription, dispatch, headless) {
|
|
|
305
427
|
const title = titleForEvent(dispatch.event);
|
|
306
428
|
const body = bodyForEvent(dispatch.event);
|
|
307
429
|
const data = {
|
|
430
|
+
...notifyDataFields(dispatch.data),
|
|
308
431
|
deviceID: dispatch.deviceID ?? null,
|
|
309
432
|
event: dispatch.event,
|
|
310
433
|
title,
|
|
@@ -333,6 +456,54 @@ function expoMessageForSubscription(subscription, dispatch, headless) {
|
|
|
333
456
|
}
|
|
334
457
|
return message;
|
|
335
458
|
}
|
|
459
|
+
function fcmCallMessageForSubscription(subscription, dispatch) {
|
|
460
|
+
return {
|
|
461
|
+
message: {
|
|
462
|
+
android: {
|
|
463
|
+
priority: "HIGH",
|
|
464
|
+
ttl: callWakeTtl(dispatch),
|
|
465
|
+
},
|
|
466
|
+
data: stringRecord({
|
|
467
|
+
...notifyDataFields(dispatch.data),
|
|
468
|
+
deviceID: dispatch.deviceID ?? "",
|
|
469
|
+
event: dispatch.event,
|
|
470
|
+
transmissionID: dispatch.transmissionID,
|
|
471
|
+
}),
|
|
472
|
+
token: subscription.token,
|
|
473
|
+
},
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
async function fetchFcmAccessToken(config) {
|
|
477
|
+
const assertion = jwt.sign({
|
|
478
|
+
scope: "https://www.googleapis.com/auth/firebase.messaging",
|
|
479
|
+
}, config.privateKey, {
|
|
480
|
+
algorithm: "RS256",
|
|
481
|
+
audience: FCM_TOKEN_ENDPOINT,
|
|
482
|
+
expiresIn: "55m",
|
|
483
|
+
issuer: config.clientEmail,
|
|
484
|
+
subject: config.clientEmail,
|
|
485
|
+
});
|
|
486
|
+
const body = new URLSearchParams({
|
|
487
|
+
assertion,
|
|
488
|
+
grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
|
|
489
|
+
});
|
|
490
|
+
const res = await fetchWithTimeout(FCM_TOKEN_ENDPOINT, {
|
|
491
|
+
body,
|
|
492
|
+
headers: {
|
|
493
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
494
|
+
},
|
|
495
|
+
method: "POST",
|
|
496
|
+
}, "FCM OAuth token request");
|
|
497
|
+
if (!res.ok) {
|
|
498
|
+
const responseBody = await res.text().catch(() => "");
|
|
499
|
+
throw new Error(`FCM OAuth token request failed with status ${res.status.toString()}${responseBody ? `: ${responseBody.slice(0, 500)}` : ""}`);
|
|
500
|
+
}
|
|
501
|
+
const raw = await res.json();
|
|
502
|
+
if (!isRecord(raw) || typeof raw["access_token"] !== "string") {
|
|
503
|
+
throw new Error("FCM OAuth token response did not include access_token");
|
|
504
|
+
}
|
|
505
|
+
return raw["access_token"];
|
|
506
|
+
}
|
|
336
507
|
async function fetchWithTimeout(input, init, label) {
|
|
337
508
|
const controller = new AbortController();
|
|
338
509
|
const timer = setTimeout(() => {
|
|
@@ -378,6 +549,22 @@ function normalizeExpoTickets(data) {
|
|
|
378
549
|
const tickets = Array.isArray(data) ? data : [data];
|
|
379
550
|
return tickets.filter(isExpoPushTicket);
|
|
380
551
|
}
|
|
552
|
+
function normalizePrivateKey(value) {
|
|
553
|
+
return value.replaceAll("\\n", "\n");
|
|
554
|
+
}
|
|
555
|
+
function notifyDataFields(data) {
|
|
556
|
+
if (!isRecord(data)) {
|
|
557
|
+
return {};
|
|
558
|
+
}
|
|
559
|
+
const out = {};
|
|
560
|
+
for (const key of ["callID", "expiresAt", "mailID", "mailNonce"]) {
|
|
561
|
+
const value = data[key];
|
|
562
|
+
if (typeof value === "string") {
|
|
563
|
+
out[key] = value;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
return out;
|
|
567
|
+
}
|
|
381
568
|
function parseExpoPushResponse(raw) {
|
|
382
569
|
if (!isRecord(raw)) {
|
|
383
570
|
return { errors: [], tickets: [] };
|
|
@@ -407,6 +594,127 @@ function parseExpoReceipts(data) {
|
|
|
407
594
|
}
|
|
408
595
|
return receipts;
|
|
409
596
|
}
|
|
597
|
+
function readApnsConfig() {
|
|
598
|
+
const teamID = readEnv("SPIRE_APNS_TEAM_ID");
|
|
599
|
+
const keyID = readEnv("SPIRE_APNS_KEY_ID");
|
|
600
|
+
const bundleID = readEnv("SPIRE_APNS_BUNDLE_ID");
|
|
601
|
+
const topic = readEnv("SPIRE_APNS_TOPIC") ?? `${bundleID ?? ""}.voip`;
|
|
602
|
+
const privateKey = readPrivateKeyEnv("SPIRE_APNS_PRIVATE_KEY", "SPIRE_APNS_PRIVATE_KEY_FILE");
|
|
603
|
+
if (!teamID || !keyID || !bundleID || !topic || !privateKey) {
|
|
604
|
+
return null;
|
|
605
|
+
}
|
|
606
|
+
const environment = readEnv("SPIRE_APNS_ENV") === "sandbox" ? "sandbox" : "production";
|
|
607
|
+
return {
|
|
608
|
+
environment,
|
|
609
|
+
keyID,
|
|
610
|
+
privateKey,
|
|
611
|
+
teamID,
|
|
612
|
+
topic,
|
|
613
|
+
};
|
|
614
|
+
}
|
|
615
|
+
function readEnv(name) {
|
|
616
|
+
const value = process.env[name]?.trim();
|
|
617
|
+
return value && value.length > 0 ? value : null;
|
|
618
|
+
}
|
|
619
|
+
function readFcmConfig() {
|
|
620
|
+
const json = readEnv("SPIRE_FCM_SERVICE_ACCOUNT_JSON");
|
|
621
|
+
if (json) {
|
|
622
|
+
try {
|
|
623
|
+
const raw = JSON.parse(json);
|
|
624
|
+
if (isRecord(raw) &&
|
|
625
|
+
typeof raw["client_email"] === "string" &&
|
|
626
|
+
typeof raw["private_key"] === "string" &&
|
|
627
|
+
typeof raw["project_id"] === "string") {
|
|
628
|
+
return {
|
|
629
|
+
clientEmail: raw["client_email"],
|
|
630
|
+
privateKey: normalizePrivateKey(raw["private_key"]),
|
|
631
|
+
projectID: raw["project_id"],
|
|
632
|
+
};
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
catch {
|
|
636
|
+
return null;
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
const clientEmail = readEnv("SPIRE_FCM_CLIENT_EMAIL");
|
|
640
|
+
const projectID = readEnv("SPIRE_FCM_PROJECT_ID");
|
|
641
|
+
const privateKey = readPrivateKeyEnv("SPIRE_FCM_PRIVATE_KEY", "SPIRE_FCM_PRIVATE_KEY_FILE");
|
|
642
|
+
if (!clientEmail || !projectID || !privateKey) {
|
|
643
|
+
return null;
|
|
644
|
+
}
|
|
645
|
+
return { clientEmail, privateKey, projectID };
|
|
646
|
+
}
|
|
647
|
+
function readPrivateKeyEnv(valueName, fileName) {
|
|
648
|
+
const inline = readEnv(valueName);
|
|
649
|
+
if (inline) {
|
|
650
|
+
return normalizePrivateKey(inline);
|
|
651
|
+
}
|
|
652
|
+
const file = readEnv(fileName);
|
|
653
|
+
if (!file) {
|
|
654
|
+
return null;
|
|
655
|
+
}
|
|
656
|
+
try {
|
|
657
|
+
return normalizePrivateKey(readFileSync(file, "utf8"));
|
|
658
|
+
}
|
|
659
|
+
catch {
|
|
660
|
+
return null;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
function sendApnsVoipNotification(config, providerToken, subscription, dispatch) {
|
|
664
|
+
const host = config.environment === "sandbox"
|
|
665
|
+
? "api.sandbox.push.apple.com"
|
|
666
|
+
: "api.push.apple.com";
|
|
667
|
+
const payload = JSON.stringify({
|
|
668
|
+
aps: {
|
|
669
|
+
"content-available": 1,
|
|
670
|
+
},
|
|
671
|
+
...notifyDataFields(dispatch.data),
|
|
672
|
+
event: dispatch.event,
|
|
673
|
+
transmissionID: dispatch.transmissionID,
|
|
674
|
+
});
|
|
675
|
+
return new Promise((resolve, reject) => {
|
|
676
|
+
const client = http2.connect(`https://${host}`);
|
|
677
|
+
const timer = setTimeout(() => {
|
|
678
|
+
client.close();
|
|
679
|
+
reject(new Error(`APNs VoIP request timed out after ${EXPO_REQUEST_TIMEOUT_MS.toString()}ms`));
|
|
680
|
+
}, EXPO_REQUEST_TIMEOUT_MS);
|
|
681
|
+
timer.unref?.();
|
|
682
|
+
client.once("error", (err) => {
|
|
683
|
+
clearTimeout(timer);
|
|
684
|
+
reject(err);
|
|
685
|
+
});
|
|
686
|
+
const req = client.request({
|
|
687
|
+
":method": "POST",
|
|
688
|
+
":path": `/3/device/${subscription.token}`,
|
|
689
|
+
"apns-expiration": apnsExpiration(dispatch),
|
|
690
|
+
"apns-priority": "10",
|
|
691
|
+
"apns-push-type": "voip",
|
|
692
|
+
"apns-topic": config.topic,
|
|
693
|
+
authorization: `bearer ${providerToken}`,
|
|
694
|
+
});
|
|
695
|
+
let status = 0;
|
|
696
|
+
let body = "";
|
|
697
|
+
req.setEncoding("utf8");
|
|
698
|
+
req.on("response", (headers) => {
|
|
699
|
+
const rawStatus = headers[":status"];
|
|
700
|
+
status = typeof rawStatus === "number" ? rawStatus : 0;
|
|
701
|
+
});
|
|
702
|
+
req.on("data", (chunk) => {
|
|
703
|
+
body += chunk;
|
|
704
|
+
});
|
|
705
|
+
req.on("error", (err) => {
|
|
706
|
+
clearTimeout(timer);
|
|
707
|
+
client.close();
|
|
708
|
+
reject(err);
|
|
709
|
+
});
|
|
710
|
+
req.on("end", () => {
|
|
711
|
+
clearTimeout(timer);
|
|
712
|
+
client.close();
|
|
713
|
+
resolve({ body, status });
|
|
714
|
+
});
|
|
715
|
+
req.end(payload);
|
|
716
|
+
});
|
|
717
|
+
}
|
|
410
718
|
function shouldDeferMailPush(dispatch, websocketDeliveries) {
|
|
411
719
|
return (dispatch.event === "mail" &&
|
|
412
720
|
websocketDeliveries > 0 &&
|
|
@@ -417,7 +725,20 @@ function shouldSendHeadlessPush(dispatch) {
|
|
|
417
725
|
return (dispatch.headlessPushUserID !== undefined &&
|
|
418
726
|
dispatch.userID === dispatch.headlessPushUserID);
|
|
419
727
|
}
|
|
728
|
+
function stringRecord(input) {
|
|
729
|
+
const out = {};
|
|
730
|
+
for (const [key, value] of Object.entries(input)) {
|
|
731
|
+
if (typeof value === "string") {
|
|
732
|
+
out[key] = value;
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
return out;
|
|
736
|
+
}
|
|
420
737
|
function titleForEvent(event) {
|
|
738
|
+
if (event === "callWake")
|
|
739
|
+
return "Incoming Vex call";
|
|
740
|
+
if (event === "callInvite")
|
|
741
|
+
return "Incoming Vex call";
|
|
421
742
|
if (event === "mail")
|
|
422
743
|
return "New Message";
|
|
423
744
|
if (event === "deviceRequest")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationService.js","sourceRoot":"","sources":["../src/NotificationService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NotificationService.js","sourceRoot":"","sources":["../src/NotificationService.ts"],"names":[],"mappings":"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"}
|
package/dist/Spire.d.ts
CHANGED
package/dist/Spire.js
CHANGED
|
@@ -18,9 +18,12 @@ import morgan from "morgan";
|
|
|
18
18
|
import { stringify as uuidStringify } from "uuid";
|
|
19
19
|
import { WebSocketServer } from "ws";
|
|
20
20
|
import { z } from "zod/v4";
|
|
21
|
+
import { CallManager } from "./CallManager.js";
|
|
21
22
|
import { ClientManager } from "./ClientManager.js";
|
|
22
23
|
import { Database, hashPasswordArgon2, verifyPassword } from "./Database.js";
|
|
24
|
+
import { resolveIceServersFromEnv } from "./IceServers.js";
|
|
23
25
|
import { NotificationService } from "./NotificationService.js";
|
|
26
|
+
import { callWakeDispatchData } from "./server/callWake.js";
|
|
24
27
|
import { initApp, protect } from "./server/index.js";
|
|
25
28
|
import { MailIngressValidationError, validateMailIngress, } from "./server/mailIngress.js";
|
|
26
29
|
import { passkeySecondFactorError } from "./server/passkeySecondFactor.js";
|
|
@@ -77,8 +80,8 @@ const mailBatchPostPayload = z.object({
|
|
|
77
80
|
mails: z.array(mailPostPayload).min(1).max(MAIL_BATCH_MAX_ITEMS),
|
|
78
81
|
});
|
|
79
82
|
const notificationSubscribePayload = z.object({
|
|
80
|
-
channel: z.
|
|
81
|
-
events: z.array(z.string().min(1)).
|
|
83
|
+
channel: z.enum(["apnsVoip", "expo", "fcmCall"]),
|
|
84
|
+
events: z.array(z.string().min(1)).optional(),
|
|
82
85
|
platform: z.enum(["android", "ios", "web"]).optional(),
|
|
83
86
|
token: z.string().min(1),
|
|
84
87
|
});
|
|
@@ -138,6 +141,7 @@ let pendingFipsKeyPair = null;
|
|
|
138
141
|
export class Spire extends EventEmitter {
|
|
139
142
|
actionTokens = [];
|
|
140
143
|
api = express();
|
|
144
|
+
calls;
|
|
141
145
|
clients = [];
|
|
142
146
|
commitSha = getCommitSha();
|
|
143
147
|
cryptoProfile;
|
|
@@ -177,7 +181,9 @@ export class Spire extends EventEmitter {
|
|
|
177
181
|
// that lets attackers spoof the header and bypass rate limiting.
|
|
178
182
|
// If spire is deployed without a proxy, set this to 0 instead.
|
|
179
183
|
this.api.set("trust proxy", 1);
|
|
184
|
+
this.api.disable("etag");
|
|
180
185
|
this.db = new Database(options);
|
|
186
|
+
this.calls = new CallManager(this.db, this.notify.bind(this));
|
|
181
187
|
this.notifications = new NotificationService(this.db, this.clients, this.removeClient.bind(this));
|
|
182
188
|
this.db.on("ready", () => {
|
|
183
189
|
this.dbReady = true;
|
|
@@ -329,7 +335,7 @@ export class Spire extends EventEmitter {
|
|
|
329
335
|
JSON.stringify(jwtResult.error.issues));
|
|
330
336
|
}
|
|
331
337
|
const userDetails = jwtResult.data.user;
|
|
332
|
-
const client = new ClientManager(ws, this.db, this.notify.bind(this), userDetails);
|
|
338
|
+
const client = new ClientManager(ws, this.db, this.calls, this.notify.bind(this), userDetails);
|
|
333
339
|
client.on("fail", () => {
|
|
334
340
|
this.removeClient(client);
|
|
335
341
|
});
|
|
@@ -655,7 +661,13 @@ export class Spire extends EventEmitter {
|
|
|
655
661
|
}
|
|
656
662
|
await this.db.saveMail(mail, header, senderDeviceDetails.deviceID, authorUserDetails.userID);
|
|
657
663
|
res.sendStatus(200);
|
|
658
|
-
|
|
664
|
+
const callWake = callWakeDispatchData(mail);
|
|
665
|
+
if (callWake) {
|
|
666
|
+
this.notify(recipientDeviceDetails.owner, "callWake", crypto.randomUUID(), callWake, mail.recipient, undefined, mail.nonce);
|
|
667
|
+
}
|
|
668
|
+
else {
|
|
669
|
+
this.notify(recipientDeviceDetails.owner, "mail", crypto.randomUUID(), null, mail.recipient, mail.authorID, mail.nonce);
|
|
670
|
+
}
|
|
659
671
|
});
|
|
660
672
|
this.api.post("/mail/batch", protect, async (req, res) => {
|
|
661
673
|
const senderDeviceDetails = req.device;
|
|
@@ -748,9 +760,25 @@ export class Spire extends EventEmitter {
|
|
|
748
760
|
}
|
|
749
761
|
res.send(msgpack.encode({ results }));
|
|
750
762
|
for (const entry of deliveredEntries) {
|
|
751
|
-
|
|
763
|
+
const callWake = callWakeDispatchData(entry.mail);
|
|
764
|
+
if (callWake) {
|
|
765
|
+
this.notify(entry.recipientDevice.owner, "callWake", crypto.randomUUID(), callWake, entry.mail.recipient, undefined, entry.mail.nonce);
|
|
766
|
+
}
|
|
767
|
+
else {
|
|
768
|
+
this.notify(entry.recipientDevice.owner, "mail", crypto.randomUUID(), null, entry.mail.recipient, entry.mail.authorID, entry.mail.nonce);
|
|
769
|
+
}
|
|
752
770
|
}
|
|
753
771
|
});
|
|
772
|
+
this.api.get("/calls/active", protect, (req, res) => {
|
|
773
|
+
const user = getUser(req);
|
|
774
|
+
res.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate");
|
|
775
|
+
res.setHeader("Pragma", "no-cache");
|
|
776
|
+
res.setHeader("Expires", "0");
|
|
777
|
+
res.json({ calls: this.calls.activeCallsForUser(user.userID) });
|
|
778
|
+
});
|
|
779
|
+
this.api.get("/calls/ice-servers", protect, async (_req, res) => {
|
|
780
|
+
res.json({ iceServers: await resolveIceServersFromEnv() });
|
|
781
|
+
});
|
|
754
782
|
this.api.post("/device/:id/notifications/subscriptions", protect, async (req, res) => {
|
|
755
783
|
const device = req.device;
|
|
756
784
|
if (!device) {
|
|
@@ -772,7 +800,10 @@ export class Spire extends EventEmitter {
|
|
|
772
800
|
const subscription = await this.db.saveNotificationSubscription({
|
|
773
801
|
channel: parsed.data.channel,
|
|
774
802
|
deviceID: device.deviceID,
|
|
775
|
-
events: parsed.data.events
|
|
803
|
+
events: parsed.data.events ??
|
|
804
|
+
(parsed.data.channel === "expo"
|
|
805
|
+
? ["mail"]
|
|
806
|
+
: ["callWake"]),
|
|
776
807
|
platform: parsed.data.platform ?? null,
|
|
777
808
|
token: parsed.data.token,
|
|
778
809
|
userID: getUser(req).userID,
|