@similie/hyphen-rtsp-tunnel 1.1.3 → 1.1.4
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/services/events.d.ts +1 -1
- package/dist/services/events.d.ts.map +1 -1
- package/dist/services/rtsp-tunnel-gateway.d.ts +11 -1
- package/dist/services/rtsp-tunnel-gateway.d.ts.map +1 -1
- package/dist/services/rtsp-tunnel-gateway.js +227 -82
- package/dist/services/rtsp-tunnel-gateway.js.map +1 -1
- package/dist/services/sqs-notifier.js +2 -1
- package/dist/services/sqs-notifier.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,7 +18,7 @@ export type SnapshotFailedEvent = {
|
|
|
18
18
|
deviceId: string;
|
|
19
19
|
payloadId: string | null;
|
|
20
20
|
remote: string;
|
|
21
|
-
stage: "hello" | "auth" | "capture" | "proxy" | "unknown" | "store";
|
|
21
|
+
stage: "hello" | "auth" | "capture" | "proxy" | "unknown" | "store" | "queue";
|
|
22
22
|
error: string;
|
|
23
23
|
};
|
|
24
24
|
export declare class RtspTunnelEvents extends EventEmitter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/services/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/services/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9E,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,YAAY,CAAC,CAAC,EAAE,qBAAqB;IAGrC,UAAU,CAAC,CAAC,EAAE,mBAAmB;IAGjC,UAAU,CAAC,CAAC,EAAE,mBAAmB;CAGlC"}
|
|
@@ -21,6 +21,9 @@ export declare class RtspTunnelGateway {
|
|
|
21
21
|
private readonly requireAuth;
|
|
22
22
|
private readonly helloWaitMs;
|
|
23
23
|
private readonly captureTimeoutMs;
|
|
24
|
+
private readonly queueMax;
|
|
25
|
+
private readonly queuePerDevice;
|
|
26
|
+
private readonly queueLogEvery;
|
|
24
27
|
private server;
|
|
25
28
|
private wss;
|
|
26
29
|
private proxyServer;
|
|
@@ -28,6 +31,10 @@ export declare class RtspTunnelGateway {
|
|
|
28
31
|
private sessions;
|
|
29
32
|
private globalCaptureInFlight;
|
|
30
33
|
private globalCaptureSessionId;
|
|
34
|
+
private captureQueue;
|
|
35
|
+
private queuedCountByDevice;
|
|
36
|
+
private draining;
|
|
37
|
+
private enqueueCount;
|
|
31
38
|
private started;
|
|
32
39
|
constructor(ctx: ModuleContext);
|
|
33
40
|
private deviceSensorsKey;
|
|
@@ -49,8 +56,11 @@ export declare class RtspTunnelGateway {
|
|
|
49
56
|
private verifyAuth;
|
|
50
57
|
private pullCameraProfile;
|
|
51
58
|
private buildTunnelParams;
|
|
59
|
+
private dequeueSessionEntries;
|
|
60
|
+
private enqueueCapture;
|
|
61
|
+
private drainQueue;
|
|
62
|
+
private runCaptureForSession;
|
|
52
63
|
private captureOnce;
|
|
53
|
-
private maybeAutoCapture;
|
|
54
64
|
private parseHello;
|
|
55
65
|
private onConnection;
|
|
56
66
|
private onProxyConnection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rtsp-tunnel-gateway.d.ts","sourceRoot":"","sources":["../../src/services/rtsp-tunnel-gateway.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rtsp-tunnel-gateway.d.ts","sourceRoot":"","sources":["../../src/services/rtsp-tunnel-gateway.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,sCAAsC,CAAC;AA+B9C,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AASF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,SAAgB,MAAM,mBAA0B;IAGhD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IAEtE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAEpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAEhE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEqC;IAE5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6C;IACzE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6C;IAEzE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+C;IAC3E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE/B;IAGF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkD;IAC3E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAE7B;IACF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;IAGF,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,IAAI,CAAa;IAEzB,OAAO,CAAC,QAAQ,CAA8B;IAG9C,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,sBAAsB,CAAuB;IAGrD,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAK;IAEzB,OAAO,CAAC,OAAO,CAAS;gBAEZ,GAAG,EAAE,aAAa;IAK9B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;YAIL,UAAU;IAUlB,6BAA6B,CACjC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMnB,oBAAoB,CAAC,QAAQ,EAAE,MAAM;IAUrC,KAAK;IAoCL,IAAI;IA2CV,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,YAAY;YAIN,UAAU;YAQV,iBAAiB;YAqBjB,iBAAiB;IAc/B,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,cAAc;YAgER,UAAU;YAqCV,oBAAoB;YAyDpB,WAAW;IAwFzB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,YAAY;IAmMpB,OAAO,CAAC,iBAAiB;CAyC1B"}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
// rtsp-tunnel-gateway.ts (Phase 1: queued, single-proxy, single-capture at a time)
|
|
2
|
+
// Notes:
|
|
3
|
+
// - Keeps your single local TCP proxy (PROXY_PORT) and still only runs 1 ffmpeg capture at a time
|
|
4
|
+
// - Adds a FIFO capture queue so multiple device sessions won't get "booted" just because a capture is in progress
|
|
5
|
+
// - De-dupes queue per deviceId (1 pending per device by default)
|
|
6
|
+
// - Cleans up queue entries when sessions close
|
|
7
|
+
//
|
|
8
|
+
// Env knobs (optional):
|
|
9
|
+
// CAPTURE_QUEUE_MAX=200 # hard cap; oldest/newest handling is "reject new"
|
|
10
|
+
// CAPTURE_QUEUE_PER_DEVICE=1 # max pending per device (default 1)
|
|
11
|
+
// CAPTURE_QUEUE_LOG_EVERY=10 # log queue stats every N enqueues (default 10)
|
|
1
12
|
import fs from "node:fs";
|
|
2
13
|
import http from "node:http";
|
|
3
14
|
import https from "node:https";
|
|
@@ -29,15 +40,24 @@ export class RtspTunnelGateway {
|
|
|
29
40
|
requireAuth = (process.env.REQUIRE_AUTH ?? "0") === "1";
|
|
30
41
|
helloWaitMs = Number(process.env.HELLO_WAIT_MS ?? "2000");
|
|
31
42
|
captureTimeoutMs = Number(process.env.CAPTURE_TIMEOUT_MS ?? "45000");
|
|
43
|
+
// Queue controls
|
|
44
|
+
queueMax = Number(process.env.CAPTURE_QUEUE_MAX ?? "200");
|
|
45
|
+
queuePerDevice = Number(process.env.CAPTURE_QUEUE_PER_DEVICE ?? "1");
|
|
46
|
+
queueLogEvery = Number(process.env.CAPTURE_QUEUE_LOG_EVERY ?? "10");
|
|
32
47
|
// ---- runtime ----
|
|
33
48
|
server = null;
|
|
34
49
|
wss = null;
|
|
35
50
|
proxyServer = null;
|
|
36
51
|
auth;
|
|
37
52
|
sessions = new Map();
|
|
38
|
-
//
|
|
53
|
+
// Single active capture pairing for the single TCP proxy server
|
|
39
54
|
globalCaptureInFlight = false;
|
|
40
55
|
globalCaptureSessionId = null;
|
|
56
|
+
// Queue state
|
|
57
|
+
captureQueue = [];
|
|
58
|
+
queuedCountByDevice = new Map();
|
|
59
|
+
draining = false;
|
|
60
|
+
enqueueCount = 0;
|
|
41
61
|
started = false;
|
|
42
62
|
constructor(ctx) {
|
|
43
63
|
this.ctx = ctx;
|
|
@@ -52,9 +72,8 @@ export class RtspTunnelGateway {
|
|
|
52
72
|
async pullDevice(identity) {
|
|
53
73
|
const key = this.deviceIdKey(identity);
|
|
54
74
|
const stored = await RedisCache.get(key);
|
|
55
|
-
if (stored)
|
|
75
|
+
if (stored)
|
|
56
76
|
return stored;
|
|
57
|
-
}
|
|
58
77
|
const device = await this.auth.device(identity);
|
|
59
78
|
await RedisCache.set(key, device);
|
|
60
79
|
return device || {};
|
|
@@ -67,13 +86,11 @@ export class RtspTunnelGateway {
|
|
|
67
86
|
async pullDeviceSensorMeta(identity) {
|
|
68
87
|
const key = this.deviceSensorsKey(identity);
|
|
69
88
|
const stored = await RedisCache.get(key);
|
|
70
|
-
if (stored)
|
|
89
|
+
if (stored)
|
|
71
90
|
return stored;
|
|
72
|
-
}
|
|
73
91
|
const { values } = await this.auth.deviceSensors(identity);
|
|
74
92
|
await RedisCache.set(key, values);
|
|
75
93
|
return values;
|
|
76
|
-
//
|
|
77
94
|
}
|
|
78
95
|
async start() {
|
|
79
96
|
if (this.started)
|
|
@@ -91,17 +108,21 @@ export class RtspTunnelGateway {
|
|
|
91
108
|
await new Promise((resolve) => {
|
|
92
109
|
this.server.listen(this.wsPort, "0.0.0.0", () => resolve());
|
|
93
110
|
});
|
|
94
|
-
// Local TCP proxy
|
|
111
|
+
// Local TCP proxy (single port) for ffmpeg
|
|
95
112
|
this.proxyServer = net.createServer((sock) => this.onProxyConnection(sock));
|
|
96
113
|
await new Promise((resolve) => {
|
|
97
114
|
this.proxyServer.listen(this.proxyPort, "127.0.0.1", () => resolve());
|
|
98
115
|
});
|
|
99
|
-
this.ctx.log(`[rtsp-tunnel] gateway started wsPort=${this.wsPort} tls=${this.wsTls ? "on" : "off"} proxyPort=${this.proxyPort}`);
|
|
116
|
+
this.ctx.log(`[rtsp-tunnel] gateway started wsPort=${this.wsPort} tls=${this.wsTls ? "on" : "off"} proxyPort=${this.proxyPort} queueMax=${this.queueMax} queuePerDevice=${this.queuePerDevice}`);
|
|
100
117
|
}
|
|
101
118
|
async stop() {
|
|
102
119
|
if (!this.started)
|
|
103
120
|
return;
|
|
104
121
|
this.started = false;
|
|
122
|
+
// Stop queue
|
|
123
|
+
this.captureQueue = [];
|
|
124
|
+
this.queuedCountByDevice.clear();
|
|
125
|
+
this.draining = false;
|
|
105
126
|
// Clean sessions
|
|
106
127
|
for (const s of this.sessions.values()) {
|
|
107
128
|
try {
|
|
@@ -153,7 +174,6 @@ export class RtspTunnelGateway {
|
|
|
153
174
|
return ws.readyState === WebSocket.OPEN;
|
|
154
175
|
}
|
|
155
176
|
sendOpen(ws) {
|
|
156
|
-
// OPEN signal only; device uses build-flag camera host/port.
|
|
157
177
|
try {
|
|
158
178
|
ws.send(Buffer.from([3]));
|
|
159
179
|
}
|
|
@@ -174,21 +194,17 @@ export class RtspTunnelGateway {
|
|
|
174
194
|
makeNonceB64() {
|
|
175
195
|
return crypto.randomBytes(24).toString("base64");
|
|
176
196
|
}
|
|
177
|
-
// ---- AUTH HOOK (stub) ----
|
|
178
|
-
// Later: use ctx + ellipsies/models to load public key by deviceId and verify signature.
|
|
179
197
|
async verifyAuth(deviceId, nonceB64, sigB64) {
|
|
180
198
|
return this.auth.verify(deviceId, nonceB64, sigB64);
|
|
181
199
|
}
|
|
182
200
|
async pullCameraProfile(identity) {
|
|
183
201
|
const sensorMeta = (await this.pullDeviceSensorMeta(identity)) || {};
|
|
184
|
-
if (!sensorMeta || !Object.keys(sensorMeta).length)
|
|
202
|
+
if (!sensorMeta || !Object.keys(sensorMeta).length)
|
|
185
203
|
return null;
|
|
186
|
-
}
|
|
187
204
|
for (const s in sensorMeta) {
|
|
188
205
|
const meta = sensorMeta[s]?.meta || {};
|
|
189
|
-
if (!meta)
|
|
206
|
+
if (!meta)
|
|
190
207
|
continue;
|
|
191
|
-
}
|
|
192
208
|
const keys = Object.keys(meta);
|
|
193
209
|
if (keys.includes("RTSP_PATH") ||
|
|
194
210
|
keys.includes("CAM_USER") ||
|
|
@@ -200,16 +216,193 @@ export class RtspTunnelGateway {
|
|
|
200
216
|
}
|
|
201
217
|
async buildTunnelParams(identity) {
|
|
202
218
|
const cmProfile = await this.pullCameraProfile(identity);
|
|
203
|
-
// console.log("[rtsp-tunnel] buildTunnelParams cmProfile=", { cmProfile });
|
|
204
219
|
const defProfile = {
|
|
205
|
-
camUser: cmProfile
|
|
206
|
-
camPass: cmProfile
|
|
207
|
-
rtspPath: cmProfile
|
|
220
|
+
camUser: cmProfile?.CAM_USER || this.camUser,
|
|
221
|
+
camPass: cmProfile?.CAM_PASS || this.camPass,
|
|
222
|
+
rtspPath: cmProfile?.RTSP_PATH || this.rtspPath,
|
|
208
223
|
};
|
|
209
224
|
return defProfile;
|
|
210
225
|
}
|
|
226
|
+
// ---------- Queue helpers ----------
|
|
227
|
+
dequeueSessionEntries(session) {
|
|
228
|
+
// Remove any queue entries for this session
|
|
229
|
+
if (!session.queued)
|
|
230
|
+
return;
|
|
231
|
+
const before = this.captureQueue.length;
|
|
232
|
+
this.captureQueue = this.captureQueue.filter((q) => q.sid !== session.id);
|
|
233
|
+
const after = this.captureQueue.length;
|
|
234
|
+
const dev = session.deviceId;
|
|
235
|
+
const n = this.queuedCountByDevice.get(dev) ?? 0;
|
|
236
|
+
if (n > 1)
|
|
237
|
+
this.queuedCountByDevice.set(dev, n - 1);
|
|
238
|
+
else
|
|
239
|
+
this.queuedCountByDevice.delete(dev);
|
|
240
|
+
session.queued = false;
|
|
241
|
+
if (before !== after) {
|
|
242
|
+
this.ctx.log("[rtsp-tunnel] dequeue stale session", {
|
|
243
|
+
sid: session.id,
|
|
244
|
+
device: dev,
|
|
245
|
+
removed: before - after,
|
|
246
|
+
q: after,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
enqueueCapture(session, reason) {
|
|
251
|
+
if (!this.autoCapture)
|
|
252
|
+
return;
|
|
253
|
+
if (!this.isWsOpen(session.ws))
|
|
254
|
+
return;
|
|
255
|
+
if (session.closed)
|
|
256
|
+
return;
|
|
257
|
+
if (session.captureActive)
|
|
258
|
+
return;
|
|
259
|
+
if (session.deviceId === "unknown")
|
|
260
|
+
return;
|
|
261
|
+
if (this.requireAuth && !session.authed)
|
|
262
|
+
return;
|
|
263
|
+
// enforce per-device pending limit
|
|
264
|
+
const dev = session.deviceId;
|
|
265
|
+
const pending = this.queuedCountByDevice.get(dev) ?? 0;
|
|
266
|
+
if (pending >= this.queuePerDevice) {
|
|
267
|
+
// already queued (or too many queued) for this device
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
if (this.captureQueue.length >= this.queueMax) {
|
|
271
|
+
this.ctx.log("[rtsp-tunnel] capture queue full; dropping request", {
|
|
272
|
+
device: dev,
|
|
273
|
+
sid: session.id,
|
|
274
|
+
q: this.captureQueue.length,
|
|
275
|
+
max: this.queueMax,
|
|
276
|
+
});
|
|
277
|
+
// Optionally: emit failed with stage=queue
|
|
278
|
+
this.events.emitFailed({
|
|
279
|
+
sessionId: session.id,
|
|
280
|
+
deviceId: dev,
|
|
281
|
+
payloadId: session.payloadId,
|
|
282
|
+
remote: session.remote,
|
|
283
|
+
stage: "queue",
|
|
284
|
+
error: "capture queue full",
|
|
285
|
+
});
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
this.captureQueue.push({
|
|
289
|
+
sid: session.id,
|
|
290
|
+
deviceId: dev,
|
|
291
|
+
enqueuedAt: Date.now(),
|
|
292
|
+
reason,
|
|
293
|
+
});
|
|
294
|
+
this.queuedCountByDevice.set(dev, pending + 1);
|
|
295
|
+
session.queued = true;
|
|
296
|
+
this.enqueueCount += 1;
|
|
297
|
+
if (this.enqueueCount % this.queueLogEvery === 0) {
|
|
298
|
+
this.ctx.log("[rtsp-tunnel] queue stats", {
|
|
299
|
+
q: this.captureQueue.length,
|
|
300
|
+
devicesQueued: this.queuedCountByDevice.size,
|
|
301
|
+
inFlight: this.globalCaptureInFlight,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
this.ctx.log("[rtsp-tunnel] capture queued", {
|
|
306
|
+
device: dev,
|
|
307
|
+
sid: session.id,
|
|
308
|
+
q: this.captureQueue.length,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
void this.drainQueue();
|
|
312
|
+
}
|
|
313
|
+
async drainQueue() {
|
|
314
|
+
if (this.draining)
|
|
315
|
+
return;
|
|
316
|
+
this.draining = true;
|
|
317
|
+
try {
|
|
318
|
+
while (this.started) {
|
|
319
|
+
if (this.globalCaptureInFlight)
|
|
320
|
+
return;
|
|
321
|
+
const next = this.captureQueue.shift();
|
|
322
|
+
if (!next)
|
|
323
|
+
return;
|
|
324
|
+
// decrement per-device pending now that we're attempting it
|
|
325
|
+
const devPending = this.queuedCountByDevice.get(next.deviceId) ?? 0;
|
|
326
|
+
if (devPending > 1)
|
|
327
|
+
this.queuedCountByDevice.set(next.deviceId, devPending - 1);
|
|
328
|
+
else
|
|
329
|
+
this.queuedCountByDevice.delete(next.deviceId);
|
|
330
|
+
const session = this.sessions.get(next.sid);
|
|
331
|
+
if (!session)
|
|
332
|
+
continue;
|
|
333
|
+
session.queued = false;
|
|
334
|
+
// Validate again (session could have changed since enqueue)
|
|
335
|
+
if (session.closed || !this.isWsOpen(session.ws))
|
|
336
|
+
continue;
|
|
337
|
+
if (session.deviceId === "unknown")
|
|
338
|
+
continue;
|
|
339
|
+
if (this.requireAuth && !session.authed)
|
|
340
|
+
continue;
|
|
341
|
+
if (session.captureActive)
|
|
342
|
+
continue;
|
|
343
|
+
// Run capture (still 1 at a time)
|
|
344
|
+
await this.runCaptureForSession(session);
|
|
345
|
+
// Loop continues; captureOnce will clear globalCaptureInFlight
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
finally {
|
|
349
|
+
this.draining = false;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
async runCaptureForSession(session) {
|
|
353
|
+
try {
|
|
354
|
+
this.ctx.log("[rtsp-tunnel] capture start", {
|
|
355
|
+
device: session.deviceId,
|
|
356
|
+
sid: session.id,
|
|
357
|
+
remote: session.remote,
|
|
358
|
+
q: this.captureQueue.length,
|
|
359
|
+
});
|
|
360
|
+
const params = await this.buildTunnelParams(session.deviceId);
|
|
361
|
+
const file = await this.captureOnce(session, params);
|
|
362
|
+
const capturedAt = new Date().toISOString();
|
|
363
|
+
this.events.emitCaptured({
|
|
364
|
+
sessionId: session.id,
|
|
365
|
+
deviceId: session.deviceId,
|
|
366
|
+
payloadId: session.payloadId,
|
|
367
|
+
remote: session.remote,
|
|
368
|
+
localPath: file,
|
|
369
|
+
capturedAt,
|
|
370
|
+
tzOffsetHours: session.tzOffsetHours ?? null,
|
|
371
|
+
});
|
|
372
|
+
this.ctx.log("[rtsp-tunnel] capture saved", {
|
|
373
|
+
device: session.deviceId,
|
|
374
|
+
sid: session.id,
|
|
375
|
+
file,
|
|
376
|
+
});
|
|
377
|
+
// snapshot-window behavior (keep as-is)
|
|
378
|
+
try {
|
|
379
|
+
session.ws.close();
|
|
380
|
+
}
|
|
381
|
+
catch { }
|
|
382
|
+
}
|
|
383
|
+
catch (e) {
|
|
384
|
+
this.ctx.log("[rtsp-tunnel] capture error", {
|
|
385
|
+
device: session.deviceId,
|
|
386
|
+
sid: session.id,
|
|
387
|
+
error: e?.message ?? String(e),
|
|
388
|
+
});
|
|
389
|
+
try {
|
|
390
|
+
session.ws.close();
|
|
391
|
+
}
|
|
392
|
+
catch { }
|
|
393
|
+
this.events.emitFailed({
|
|
394
|
+
sessionId: session.id,
|
|
395
|
+
deviceId: session.deviceId,
|
|
396
|
+
payloadId: session.payloadId,
|
|
397
|
+
remote: session.remote,
|
|
398
|
+
stage: "capture",
|
|
399
|
+
error: e?.message ?? "unknown error",
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
// ---------- capture core ----------
|
|
211
404
|
async captureOnce(session, params) {
|
|
212
|
-
if (!
|
|
405
|
+
if (!params.camPass)
|
|
213
406
|
throw new Error("CAM_PASS is required");
|
|
214
407
|
if (!this.isWsOpen(session.ws))
|
|
215
408
|
throw new Error("WS not open");
|
|
@@ -224,7 +417,6 @@ export class RtspTunnelGateway {
|
|
|
224
417
|
session.captureActive = true;
|
|
225
418
|
const outFile = this.mkOutFile(session.deviceId);
|
|
226
419
|
const rtspUrl = `rtsp://${encodeURIComponent(params.camUser)}:${encodeURIComponent(params.camPass)}@127.0.0.1:${this.proxyPort}${params.rtspPath}`;
|
|
227
|
-
// console.log("[rtsp-tunnel] captureOnce rtspUrl=", { rtspUrl });
|
|
228
420
|
const code = await new Promise((resolve) => {
|
|
229
421
|
const ff = spawn("ffmpeg", [
|
|
230
422
|
"-hide_banner",
|
|
@@ -234,13 +426,13 @@ export class RtspTunnelGateway {
|
|
|
234
426
|
"tcp",
|
|
235
427
|
"-i",
|
|
236
428
|
rtspUrl,
|
|
237
|
-
"-an",
|
|
429
|
+
"-an",
|
|
238
430
|
"-frames:v",
|
|
239
431
|
"1",
|
|
240
432
|
"-q:v",
|
|
241
433
|
"3",
|
|
242
434
|
"-update",
|
|
243
|
-
"1",
|
|
435
|
+
"1",
|
|
244
436
|
outFile,
|
|
245
437
|
], { stdio: ["ignore", "inherit", "inherit"] });
|
|
246
438
|
session.ffmpeg = ff;
|
|
@@ -272,61 +464,7 @@ export class RtspTunnelGateway {
|
|
|
272
464
|
throw new Error("ffmpeg success but file not found");
|
|
273
465
|
return outFile;
|
|
274
466
|
}
|
|
275
|
-
|
|
276
|
-
if (!this.autoCapture)
|
|
277
|
-
return;
|
|
278
|
-
if (!this.isWsOpen(session.ws))
|
|
279
|
-
return;
|
|
280
|
-
if (session.captureActive)
|
|
281
|
-
return;
|
|
282
|
-
if (this.globalCaptureInFlight)
|
|
283
|
-
return;
|
|
284
|
-
if (session.deviceId === "unknown")
|
|
285
|
-
return;
|
|
286
|
-
if (this.requireAuth && !session.authed)
|
|
287
|
-
return;
|
|
288
|
-
(async () => {
|
|
289
|
-
try {
|
|
290
|
-
this.ctx.log("[rtsp-tunnel] auto capture start", {
|
|
291
|
-
device: session.deviceId,
|
|
292
|
-
session: session.remote,
|
|
293
|
-
});
|
|
294
|
-
const params = await this.buildTunnelParams(session.deviceId);
|
|
295
|
-
const file = await this.captureOnce(session, params);
|
|
296
|
-
const capturedAt = new Date().toISOString();
|
|
297
|
-
this.events.emitCaptured({
|
|
298
|
-
sessionId: session.id,
|
|
299
|
-
deviceId: session.deviceId,
|
|
300
|
-
payloadId: session.payloadId,
|
|
301
|
-
remote: session.remote,
|
|
302
|
-
localPath: file,
|
|
303
|
-
capturedAt,
|
|
304
|
-
tzOffsetHours: session.tzOffsetHours ?? null,
|
|
305
|
-
});
|
|
306
|
-
this.ctx.log("[rtsp-tunnel] auto capture saved", file);
|
|
307
|
-
// snapshot-window behavior
|
|
308
|
-
try {
|
|
309
|
-
session.ws.close();
|
|
310
|
-
}
|
|
311
|
-
catch { }
|
|
312
|
-
}
|
|
313
|
-
catch (e) {
|
|
314
|
-
this.ctx.log("[rtsp-tunnel] auto capture error", e?.message ?? e);
|
|
315
|
-
try {
|
|
316
|
-
session.ws.close();
|
|
317
|
-
}
|
|
318
|
-
catch { }
|
|
319
|
-
this.events.emitFailed({
|
|
320
|
-
sessionId: session.id,
|
|
321
|
-
deviceId: session.deviceId,
|
|
322
|
-
payloadId: session.payloadId,
|
|
323
|
-
remote: session.remote,
|
|
324
|
-
stage: "capture",
|
|
325
|
-
error: e?.message ?? "unknown error",
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
})();
|
|
329
|
-
}
|
|
467
|
+
// ---------- WS handling ----------
|
|
330
468
|
parseHello(msg) {
|
|
331
469
|
const parts = msg.trim().split(/\s+/);
|
|
332
470
|
if (parts.length < 2)
|
|
@@ -335,7 +473,6 @@ export class RtspTunnelGateway {
|
|
|
335
473
|
return null;
|
|
336
474
|
// HELLO <deviceId>
|
|
337
475
|
if (parts.length === 2) {
|
|
338
|
-
``;
|
|
339
476
|
return { payloadId: null, deviceId: parts[1] || "" };
|
|
340
477
|
}
|
|
341
478
|
// HELLO <payloadId> <deviceId>
|
|
@@ -360,6 +497,7 @@ export class RtspTunnelGateway {
|
|
|
360
497
|
helloTimer: null,
|
|
361
498
|
closed: false,
|
|
362
499
|
cleanup: () => { },
|
|
500
|
+
queued: false,
|
|
363
501
|
};
|
|
364
502
|
this.sessions.set(id, session);
|
|
365
503
|
this.ctx.log("[rtsp-tunnel] device connected", { remote, id: `sid=${id}` });
|
|
@@ -369,6 +507,8 @@ export class RtspTunnelGateway {
|
|
|
369
507
|
if (session.closed)
|
|
370
508
|
return;
|
|
371
509
|
session.closed = true;
|
|
510
|
+
// Remove any queued work for this session
|
|
511
|
+
this.dequeueSessionEntries(session);
|
|
372
512
|
if (session.helloTimer) {
|
|
373
513
|
clearTimeout(session.helloTimer);
|
|
374
514
|
session.helloTimer = null;
|
|
@@ -399,8 +539,10 @@ export class RtspTunnelGateway {
|
|
|
399
539
|
device: session.deviceId,
|
|
400
540
|
remote,
|
|
401
541
|
sid: id,
|
|
402
|
-
why
|
|
542
|
+
why,
|
|
403
543
|
});
|
|
544
|
+
// In case the in-flight capture was canceled, try draining
|
|
545
|
+
void this.drainQueue();
|
|
404
546
|
};
|
|
405
547
|
session.cleanup = cleanup;
|
|
406
548
|
ws.on("close", () => cleanup("ws_close"));
|
|
@@ -430,7 +572,8 @@ export class RtspTunnelGateway {
|
|
|
430
572
|
if (!this.requireAuth) {
|
|
431
573
|
session.authed = true;
|
|
432
574
|
this.sendText(ws, "AUTH_OK");
|
|
433
|
-
|
|
575
|
+
// Phase 1 queue: enqueue instead of capture immediately
|
|
576
|
+
this.enqueueCapture(session, "auto");
|
|
434
577
|
}
|
|
435
578
|
return;
|
|
436
579
|
}
|
|
@@ -462,7 +605,8 @@ export class RtspTunnelGateway {
|
|
|
462
605
|
}
|
|
463
606
|
session.authed = true;
|
|
464
607
|
this.sendText(ws, "AUTH_OK");
|
|
465
|
-
|
|
608
|
+
// Phase 1 queue: enqueue instead of capture immediately
|
|
609
|
+
this.enqueueCapture(session, "auto");
|
|
466
610
|
return;
|
|
467
611
|
}
|
|
468
612
|
return;
|
|
@@ -490,6 +634,7 @@ export class RtspTunnelGateway {
|
|
|
490
634
|
catch { }
|
|
491
635
|
}, this.helloWaitMs);
|
|
492
636
|
}
|
|
637
|
+
// ---------- TCP proxy handling ----------
|
|
493
638
|
onProxyConnection(ffSock) {
|
|
494
639
|
this.ctx.log("[rtsp-tunnel] ffmpeg connected");
|
|
495
640
|
const sid = this.globalCaptureSessionId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rtsp-tunnel-gateway.js","sourceRoot":"","sources":["../../src/services/rtsp-tunnel-gateway.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rtsp-tunnel-gateway.js","sourceRoot":"","sources":["../../src/services/rtsp-tunnel-gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export class SqsNotifier {
|
|
|
15
15
|
isFifo = false;
|
|
16
16
|
ctx = null;
|
|
17
17
|
constructor() {
|
|
18
|
-
const queueUrl =
|
|
18
|
+
const queueUrl = envTrim("SQS_QUEUE_URL");
|
|
19
19
|
const region = envTrim("AWS_SQS_REGION") ?? envTrim("AWS_REGION") ?? "ap-southeast-1";
|
|
20
20
|
if (!queueUrl) {
|
|
21
21
|
this.enabled = false;
|
|
@@ -91,6 +91,7 @@ export class SqsNotifier {
|
|
|
91
91
|
event: eventName,
|
|
92
92
|
capturedAt: payload.capturedAt || null,
|
|
93
93
|
at: payload.at || null,
|
|
94
|
+
tzOffsetHours: payload.tzOffsetHours ?? null,
|
|
94
95
|
deviceId: payload.deviceId || "unknown",
|
|
95
96
|
payloadId: payload.payloadId ?? null,
|
|
96
97
|
sessionId: payload.sessionId || null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqs-notifier.js","sourceRoot":"","sources":["../../src/services/sqs-notifier.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAItC;;;;;;;GAOG;AACH,MAAM,OAAO,WAAW;IACN,OAAO,CAAU;IAEzB,GAAG,GAAqB,IAAI,CAAC;IAC7B,QAAQ,GAAkB,IAAI,CAAC;IAC/B,MAAM,GAAG,KAAK,CAAC;IAEf,GAAG,GAAyB,IAAI,CAAC;IAEzC;QACE,MAAM,QAAQ,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"sqs-notifier.js","sourceRoot":"","sources":["../../src/services/sqs-notifier.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@similie/hyphen-rtsp-tunnel",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "API plugin module for Hyphen Command Center. Provides TCP and WebSocket interfaces for managing RTSP streams and related services using HyphenOS.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "adam.smith@similie.org",
|