green-screen-proxy 1.3.8 → 1.4.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/controller.d.ts +14 -2
- package/dist/controller.d.ts.map +1 -1
- package/dist/controller.js +19 -0
- package/dist/controller.js.map +1 -1
- package/dist/protocols/tn5250-handler.d.ts +12 -0
- package/dist/protocols/tn5250-handler.d.ts.map +1 -1
- package/dist/protocols/tn5250-handler.js +27 -1
- package/dist/protocols/tn5250-handler.js.map +1 -1
- package/dist/protocols/types.d.ts +30 -1
- package/dist/protocols/types.d.ts.map +1 -1
- package/dist/protocols/types.js +26 -0
- package/dist/protocols/types.js.map +1 -1
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +229 -60
- package/dist/routes.js.map +1 -1
- package/dist/session-keys.d.ts +16 -0
- package/dist/session-keys.d.ts.map +1 -0
- package/dist/session-keys.js +77 -0
- package/dist/session-keys.js.map +1 -0
- package/dist/session.d.ts +71 -2
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +198 -7
- package/dist/session.js.map +1 -1
- package/dist/structural-signature.d.ts +18 -0
- package/dist/structural-signature.d.ts.map +1 -0
- package/dist/structural-signature.js +73 -0
- package/dist/structural-signature.js.map +1 -0
- package/dist/tn5250/connection.d.ts +29 -1
- package/dist/tn5250/connection.d.ts.map +1 -1
- package/dist/tn5250/connection.js +74 -4
- package/dist/tn5250/connection.js.map +1 -1
- package/dist/tn5250/constants.d.ts.map +1 -1
- package/dist/tn5250/constants.js +14 -7
- package/dist/tn5250/constants.js.map +1 -1
- package/dist/tn5250/ebcdic.d.ts +15 -3
- package/dist/tn5250/ebcdic.d.ts.map +1 -1
- package/dist/tn5250/ebcdic.js +63 -3
- package/dist/tn5250/ebcdic.js.map +1 -1
- package/dist/tn5250/parser.d.ts.map +1 -1
- package/dist/tn5250/parser.js +30 -11
- package/dist/tn5250/parser.js.map +1 -1
- package/dist/tn5250/screen-id.d.ts +26 -0
- package/dist/tn5250/screen-id.d.ts.map +1 -0
- package/dist/tn5250/screen-id.js +183 -0
- package/dist/tn5250/screen-id.js.map +1 -0
- package/dist/tn5250/screen.d.ts +13 -11
- package/dist/tn5250/screen.d.ts.map +1 -1
- package/dist/tn5250/screen.js +76 -18
- package/dist/tn5250/screen.js.map +1 -1
- package/dist/websocket.d.ts +10 -0
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +110 -12
- package/dist/websocket.js.map +1 -1
- package/package.json +1 -1
package/dist/routes.js
CHANGED
|
@@ -1,72 +1,156 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { createSession, getSession, getDefaultSession, getAllSessions,
|
|
2
|
+
import { createSession, getSession, getDefaultSession, getAllSessions, gracefullyDestroySession, } from './session.js';
|
|
3
3
|
import { TN5250Handler } from './protocols/index.js';
|
|
4
|
-
import { broadcastScreenToSession, destroyWsSession } from './websocket.js';
|
|
4
|
+
import { broadcastScreenToSession, cancelOrphanReapOnRestActivity, destroyWsSession, } from './websocket.js';
|
|
5
|
+
import { getKeyedSessionId, bindKey, withKeyLock } from './session-keys.js';
|
|
5
6
|
const router = Router();
|
|
6
|
-
/**
|
|
7
|
+
/** Build the success payload for a connected session: its id, whether it was
|
|
8
|
+
* reused (vs freshly opened), the host's signed-on state, and the current
|
|
9
|
+
* screen. ``authenticated`` lets a connect-by-key caller tell "the proxy
|
|
10
|
+
* re-handed-me the existing signed-on session" from "I need to drive
|
|
11
|
+
* post-sign-on myself". */
|
|
12
|
+
function sessionConnectPayload(session, reused) {
|
|
13
|
+
return {
|
|
14
|
+
success: true,
|
|
15
|
+
sessionId: session.id,
|
|
16
|
+
reused,
|
|
17
|
+
authenticated: session.status.status === 'authenticated',
|
|
18
|
+
...session.getScreenData(),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/** Create a session and open its TCP connection (no sign-on). */
|
|
22
|
+
async function freshConnectSession(opts) {
|
|
23
|
+
const session = createSession(opts.protocol);
|
|
24
|
+
console.log(`[connect] Created session ${session.id.slice(0, 8)} for ${opts.host}:${opts.port}`);
|
|
25
|
+
if (typeof opts.screenTimeout === 'number' && opts.screenTimeout > 0) {
|
|
26
|
+
session.screenTimeout = opts.screenTimeout;
|
|
27
|
+
}
|
|
28
|
+
const connectOptions = {};
|
|
29
|
+
if (opts.terminalType)
|
|
30
|
+
connectOptions.terminalType = opts.terminalType;
|
|
31
|
+
if (opts.codePage)
|
|
32
|
+
connectOptions.codePage = opts.codePage;
|
|
33
|
+
if (typeof opts.connectTimeout === 'number' && opts.connectTimeout > 0)
|
|
34
|
+
connectOptions.connectTimeout = opts.connectTimeout;
|
|
35
|
+
if (opts.deviceName)
|
|
36
|
+
connectOptions.deviceName = opts.deviceName;
|
|
37
|
+
if (opts.autoReconnect)
|
|
38
|
+
connectOptions.autoReconnect = true;
|
|
39
|
+
await session.connect(opts.host, opts.port, Object.keys(connectOptions).length > 0 ? connectOptions : undefined);
|
|
40
|
+
return session;
|
|
41
|
+
}
|
|
42
|
+
/** Auto-sign-on if credentials were supplied and the session isn't already
|
|
43
|
+
* authenticated (the reuse path may hand back an already-signed-on session).
|
|
44
|
+
* Mirrors the legacy inline behaviour: failed sign-on leaves status as
|
|
45
|
+
* 'connected' so the screen (with its CPF error) still reaches the caller. */
|
|
46
|
+
async function ensureSignedOn(session, username, password) {
|
|
47
|
+
if (!username || !password) {
|
|
48
|
+
// No creds — give the host a beat to paint the initial screen.
|
|
49
|
+
await new Promise((r) => setTimeout(r, session.screenTimeout));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (session.status.status === 'authenticated')
|
|
53
|
+
return;
|
|
54
|
+
if (!(session.handler instanceof TN5250Handler))
|
|
55
|
+
return;
|
|
56
|
+
const result = await session.handler.performAutoSignIn(username, password);
|
|
57
|
+
if (result?.authenticated)
|
|
58
|
+
session.markAuthenticated(username);
|
|
59
|
+
}
|
|
60
|
+
/** Resolve session from header, query param, or default. Resets idle
|
|
61
|
+
* timer on access AND cancels any pending orphan-reap — REST activity
|
|
62
|
+
* proves the client is still around, even if its WebSocket dropped. */
|
|
7
63
|
function resolveSession(req) {
|
|
8
64
|
const sessionId = req.headers['x-session-id'] ||
|
|
9
65
|
req.query.sessionId;
|
|
10
66
|
const session = sessionId ? getSession(sessionId) : getDefaultSession();
|
|
11
|
-
if (session)
|
|
67
|
+
if (session) {
|
|
12
68
|
session.touch();
|
|
69
|
+
cancelOrphanReapOnRestActivity(session.id);
|
|
70
|
+
}
|
|
13
71
|
return session;
|
|
14
72
|
}
|
|
73
|
+
/** Delay between keystrokes when typing a field char-by-char. */
|
|
74
|
+
const KEYSTROKE_DELAY_MS = 15;
|
|
75
|
+
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
76
|
+
/**
|
|
77
|
+
* Type `text` into the current field one character at a time, broadcasting a
|
|
78
|
+
* screen frame after each keystroke so WS-attached dashboards render genuine
|
|
79
|
+
* per-keystroke "typing" instead of the whole value snapping in at once.
|
|
80
|
+
*
|
|
81
|
+
* The cursor/field is validated per character: `sendText` (→ `insertText`)
|
|
82
|
+
* returns false at a non-writable position, so a misplaced cursor fails fast
|
|
83
|
+
* and the caller can abort the batch rather than silently dropping the value.
|
|
84
|
+
* Keystrokes are KEYSTROKE_DELAY_MS apart with no trailing delay.
|
|
85
|
+
*
|
|
86
|
+
* Returns false if a character could not be written (nothing more is typed).
|
|
87
|
+
*/
|
|
88
|
+
async function typeTextAnimated(session, text) {
|
|
89
|
+
const chars = [...text];
|
|
90
|
+
for (let i = 0; i < chars.length; i++) {
|
|
91
|
+
const ok = session.sendText(chars[i]);
|
|
92
|
+
if (!ok)
|
|
93
|
+
return false;
|
|
94
|
+
broadcastScreenToSession(session.id, session.getScreenData());
|
|
95
|
+
if (i < chars.length - 1)
|
|
96
|
+
await delay(KEYSTROKE_DELAY_MS);
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
15
100
|
// POST /connect
|
|
16
101
|
router.post('/connect', async (req, res) => {
|
|
17
102
|
try {
|
|
18
|
-
const { host = 'pub400.com', port = 23, protocol = 'tn5250', terminalType, screenTimeout, connectTimeout, username, password } = req.body || {};
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
103
|
+
const { host = 'pub400.com', port = 23, protocol = 'tn5250', terminalType, codePage, screenTimeout, connectTimeout, username, password, key, forceNew, deviceName, autoReconnect } = req.body || {};
|
|
104
|
+
const opts = { host, port, protocol, terminalType, codePage, screenTimeout, connectTimeout, deviceName, autoReconnect };
|
|
105
|
+
// ── Connect-by-key: at most one live session per key ──
|
|
106
|
+
// A burst of reconnects for one logical agent serialises on the per-key
|
|
107
|
+
// mutex; the first opens the session, the rest observe it live and reuse
|
|
108
|
+
// it. This defeats the "N reconnects → N host devices → LMTDEVSSN/CPF1220
|
|
109
|
+
// contention" storm structurally, instead of relying on the integrator to
|
|
110
|
+
// coordinate. The key is opaque — never interpreted here.
|
|
111
|
+
if (typeof key === 'string' && key.length > 0) {
|
|
112
|
+
return await withKeyLock(key, async () => {
|
|
113
|
+
const existingId = forceNew ? undefined : getKeyedSessionId(key);
|
|
114
|
+
const existing = existingId ? getSession(existingId) : undefined;
|
|
115
|
+
let session;
|
|
116
|
+
let reused = false;
|
|
117
|
+
if (existing && existing.status.connected) {
|
|
118
|
+
session = existing;
|
|
119
|
+
reused = true;
|
|
120
|
+
session.touch();
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
// Release any prior keyed session's device (dead, or forceNew) before
|
|
124
|
+
// replacing it, so the host's device pool stays clean.
|
|
125
|
+
const priorId = getKeyedSessionId(key);
|
|
126
|
+
if (priorId && getSession(priorId)) {
|
|
127
|
+
void gracefullyDestroySession(priorId).catch(() => { });
|
|
128
|
+
}
|
|
129
|
+
session = await freshConnectSession(opts);
|
|
130
|
+
bindKey(key, session.id);
|
|
131
|
+
}
|
|
132
|
+
// Sign on if creds were given and the session isn't already
|
|
133
|
+
// authenticated — covers both a fresh session and a reused one that
|
|
134
|
+
// was opened (via connect()) but not yet signed on.
|
|
135
|
+
await ensureSignedOn(session, username, password);
|
|
136
|
+
res.setHeader('X-Session-Id', session.id);
|
|
137
|
+
return res.json(sessionConnectPayload(session, reused));
|
|
138
|
+
});
|
|
29
139
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
140
|
+
// ── No key: legacy behaviour — sign off the caller's previous session
|
|
141
|
+
// (by X-Session-Id only; other agents may legitimately hold concurrent
|
|
142
|
+
// sessions to the same host), then open a fresh one. A graceful SIGNOFF
|
|
143
|
+
// releases the IBM i QPADEV device; a hard drop would leave it hanging
|
|
144
|
+
// until QDEVRCYACN reaps it, and under churn those trip QMAXSIGN/QAUTOVRT.
|
|
145
|
+
const previousSessionId = req.headers['x-session-id'];
|
|
146
|
+
if (previousSessionId && getSession(previousSessionId)) {
|
|
147
|
+
console.log(`[connect] Signing off caller's previous session ${previousSessionId.slice(0, 8)} for ${host}:${port} before new connect`);
|
|
148
|
+
void gracefullyDestroySession(previousSessionId).catch(() => { });
|
|
34
149
|
}
|
|
35
|
-
|
|
150
|
+
const session = await freshConnectSession(opts);
|
|
36
151
|
res.setHeader('X-Session-Id', session.id);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
options.terminalType = terminalType;
|
|
40
|
-
if (typeof connectTimeout === 'number' && connectTimeout > 0)
|
|
41
|
-
options.connectTimeout = connectTimeout;
|
|
42
|
-
await session.connect(host, port, Object.keys(options).length > 0 ? options : undefined);
|
|
43
|
-
// Auto-sign-in if credentials provided and handler supports it
|
|
44
|
-
if (username && password && session.handler instanceof TN5250Handler) {
|
|
45
|
-
const result = await session.handler.performAutoSignIn(username, password);
|
|
46
|
-
if (result) {
|
|
47
|
-
if (result.authenticated) {
|
|
48
|
-
session.markAuthenticated(username);
|
|
49
|
-
}
|
|
50
|
-
// On failed sign-in (host still showing the sign-on screen, e.g.
|
|
51
|
-
// wrong password or CPF1220 device-session-limit), DO NOT mark
|
|
52
|
-
// as authenticated. The caller still receives the screen so the
|
|
53
|
-
// error message is visible to the user, but gracefulDestroy will
|
|
54
|
-
// not attempt a futile SIGNOFF on the sign-on screen.
|
|
55
|
-
return res.json({
|
|
56
|
-
success: true,
|
|
57
|
-
sessionId: session.id,
|
|
58
|
-
...result.screen,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
// Wait for initial screen data
|
|
63
|
-
await new Promise(resolve => setTimeout(resolve, session.screenTimeout));
|
|
64
|
-
const screenData = session.getScreenData();
|
|
65
|
-
res.json({
|
|
66
|
-
success: true,
|
|
67
|
-
sessionId: session.id,
|
|
68
|
-
...screenData,
|
|
69
|
-
});
|
|
152
|
+
await ensureSignedOn(session, username, password);
|
|
153
|
+
return res.json(sessionConnectPayload(session, false));
|
|
70
154
|
}
|
|
71
155
|
catch (err) {
|
|
72
156
|
res.status(500).json({
|
|
@@ -159,16 +243,56 @@ router.post('/reconnect', async (req, res) => {
|
|
|
159
243
|
}
|
|
160
244
|
});
|
|
161
245
|
// GET /status
|
|
246
|
+
//
|
|
247
|
+
// Two roles, distinguished by whether a session resolves:
|
|
248
|
+
// - With a session (x-session-id / ?sessionId= / a single default session):
|
|
249
|
+
// returns that session's ConnectionStatus. Used by the REST adapter and
|
|
250
|
+
// the Python client.
|
|
251
|
+
// - With no session resolved (the multi-session case — e.g. the Docker
|
|
252
|
+
// healthcheck / integrator readiness probe hitting it bare): the proxy
|
|
253
|
+
// has no single global connection state, so report SERVER liveness plus
|
|
254
|
+
// the live session count instead of a misleading per-session
|
|
255
|
+
// 'disconnected' stub. Callers wanting per-session state must pass a
|
|
256
|
+
// session id (or use /sessions).
|
|
162
257
|
router.get('/status', (req, res) => {
|
|
163
258
|
const session = resolveSession(req);
|
|
164
259
|
if (!session) {
|
|
165
260
|
return res.json({
|
|
166
|
-
|
|
167
|
-
|
|
261
|
+
ok: true,
|
|
262
|
+
sessions: getAllSessions().length,
|
|
168
263
|
});
|
|
169
264
|
}
|
|
170
265
|
res.json(session.status);
|
|
171
266
|
});
|
|
267
|
+
// GET /liveness — unambiguous half-open detection.
|
|
268
|
+
//
|
|
269
|
+
// Returns wall-clock ms timestamps of the most recent byte SENT to the
|
|
270
|
+
// host and the most recent byte RECEIVED from the host. The intended
|
|
271
|
+
// use: after writing an AID at time T, poll this endpoint after a
|
|
272
|
+
// short window and check whether ``lastReceivedAtMs > T``. If yes, the
|
|
273
|
+
// host responded → link alive. If no, the host has been silent since
|
|
274
|
+
// our send → link is half-open, treat as dead.
|
|
275
|
+
//
|
|
276
|
+
// This sidesteps the screen-state heuristic (kbd_locked) entirely.
|
|
277
|
+
// kbd_locked can stay true for legitimate reasons (error message
|
|
278
|
+
// awaiting Reset, host reply that omits CC2 unlock bit, etc.) and
|
|
279
|
+
// confuses any liveness check that reads it.
|
|
280
|
+
//
|
|
281
|
+
// 404 if no session — caller should treat that as "session is gone,
|
|
282
|
+
// reconnect from scratch".
|
|
283
|
+
router.get('/liveness', (req, res) => {
|
|
284
|
+
const session = resolveSession(req);
|
|
285
|
+
if (!session) {
|
|
286
|
+
return res.status(404).json({ error: 'session not found' });
|
|
287
|
+
}
|
|
288
|
+
const liveness = session.handler.getLiveness();
|
|
289
|
+
res.json({
|
|
290
|
+
connected: session.status.connected,
|
|
291
|
+
lastReceivedAtMs: liveness.lastReceivedAtMs,
|
|
292
|
+
lastSentAtMs: liveness.lastSentAtMs,
|
|
293
|
+
nowMs: Date.now(),
|
|
294
|
+
});
|
|
295
|
+
});
|
|
172
296
|
// GET /screen
|
|
173
297
|
router.get('/screen', (req, res) => {
|
|
174
298
|
const session = resolveSession(req);
|
|
@@ -231,6 +355,41 @@ router.post('/session/authenticated', (req, res) => {
|
|
|
231
355
|
session.markAuthenticated(username);
|
|
232
356
|
res.json({ success: true, status: session.status });
|
|
233
357
|
});
|
|
358
|
+
// POST /session/drive-lock — claim exclusive input for an automated driver.
|
|
359
|
+
//
|
|
360
|
+
// Server-side single-writer: while a holder owns the lock, the proxy rejects WS
|
|
361
|
+
// key/text/cursor commands from interactive clients (they become observe-only),
|
|
362
|
+
// so a dashboard operator cannot type into a session mid-run even if a
|
|
363
|
+
// client-side guard fails. The REST drive path (the lock owner itself) is
|
|
364
|
+
// exempt. Body: { holder: string } — opaque, e.g. "agent:<id>".
|
|
365
|
+
router.post('/session/drive-lock', (req, res) => {
|
|
366
|
+
const session = resolveSession(req);
|
|
367
|
+
if (!session) {
|
|
368
|
+
return res.status(404).json({ success: false, error: 'No active session' });
|
|
369
|
+
}
|
|
370
|
+
const { holder } = req.body || {};
|
|
371
|
+
if (!holder || typeof holder !== 'string') {
|
|
372
|
+
return res.status(400).json({ success: false, error: 'holder is required' });
|
|
373
|
+
}
|
|
374
|
+
const ok = session.acquireDrive(holder);
|
|
375
|
+
res.json({
|
|
376
|
+
success: ok,
|
|
377
|
+
driveHolder: session.driveHolder,
|
|
378
|
+
error: ok ? undefined : `drive lock already held by ${session.driveHolder}`,
|
|
379
|
+
});
|
|
380
|
+
});
|
|
381
|
+
// POST /session/drive-unlock — release the input lock (interactive clients may
|
|
382
|
+
// drive again). A holder mismatch is a no-op so a stale releaser can't free a
|
|
383
|
+
// lock it doesn't own; omit holder to force-release.
|
|
384
|
+
router.post('/session/drive-unlock', (req, res) => {
|
|
385
|
+
const session = resolveSession(req);
|
|
386
|
+
if (!session) {
|
|
387
|
+
return res.status(404).json({ success: false, error: 'No active session' });
|
|
388
|
+
}
|
|
389
|
+
const { holder } = req.body || {};
|
|
390
|
+
session.releaseDrive(typeof holder === 'string' ? holder : undefined);
|
|
391
|
+
res.json({ success: true, driveHolder: session.driveHolder });
|
|
392
|
+
});
|
|
234
393
|
// POST /wait-for-fields — wait until the current screen has at least N
|
|
235
394
|
// input fields (or timeout). Generic primitive that sign-on cascades use
|
|
236
395
|
// to robustly wait for a form to appear before typing credentials. Short-
|
|
@@ -333,14 +492,22 @@ router.post('/batch', async (req, res) => {
|
|
|
333
492
|
}
|
|
334
493
|
lastRemoteKey = !localKeys.has(op.value);
|
|
335
494
|
break;
|
|
336
|
-
case 'text':
|
|
337
|
-
session
|
|
495
|
+
case 'text': {
|
|
496
|
+
const typed = await typeTextAnimated(session, op.value);
|
|
497
|
+
if (!typed) {
|
|
498
|
+
return res.json({ success: false, error: `Cannot type "${op.value}" at current cursor position` });
|
|
499
|
+
}
|
|
338
500
|
lastRemoteKey = false;
|
|
339
501
|
break;
|
|
502
|
+
}
|
|
340
503
|
case 'setCursor':
|
|
341
504
|
session.setCursor(op.row, op.col);
|
|
342
505
|
lastRemoteKey = false;
|
|
343
506
|
break;
|
|
507
|
+
case 'eraseEOF':
|
|
508
|
+
session.eraseEOF();
|
|
509
|
+
lastRemoteKey = false;
|
|
510
|
+
break;
|
|
344
511
|
default:
|
|
345
512
|
return res.json({ success: false, error: `Unknown operation type: ${op.type}` });
|
|
346
513
|
}
|
|
@@ -365,7 +532,7 @@ router.post('/batch', async (req, res) => {
|
|
|
365
532
|
}
|
|
366
533
|
});
|
|
367
534
|
// POST /send-text
|
|
368
|
-
router.post('/send-text', (req, res) => {
|
|
535
|
+
router.post('/send-text', async (req, res) => {
|
|
369
536
|
const session = resolveSession(req);
|
|
370
537
|
if (!session) {
|
|
371
538
|
return res.status(404).json({ success: false, error: 'No active session' });
|
|
@@ -374,9 +541,11 @@ router.post('/send-text', (req, res) => {
|
|
|
374
541
|
if (typeof text !== 'string') {
|
|
375
542
|
return res.status(400).json({ success: false, error: 'text is required' });
|
|
376
543
|
}
|
|
377
|
-
|
|
544
|
+
// Type char-by-char (broadcasting each keystroke) so attached dashboards see
|
|
545
|
+
// genuine typing; typeTextAnimated emits the per-keystroke frames itself.
|
|
546
|
+
const ok = await typeTextAnimated(session, text);
|
|
378
547
|
const screenData = session.getScreenData();
|
|
379
|
-
//
|
|
548
|
+
// Final authoritative frame after the last keystroke.
|
|
380
549
|
if (ok) {
|
|
381
550
|
broadcastScreenToSession(session.id, screenData);
|
|
382
551
|
}
|
package/dist/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** The session id currently bound to `key`, or undefined. */
|
|
2
|
+
export declare function getKeyedSessionId(key: string): string | undefined;
|
|
3
|
+
/** Bind a key to its live session id (called once a keyed connect succeeds). */
|
|
4
|
+
export declare function bindKey(key: string, sessionId: string): void;
|
|
5
|
+
/**
|
|
6
|
+
* Run `fn` under the per-key mutex: keyed connects for the same key execute
|
|
7
|
+
* one-at-a-time, in arrival order. The first caller opens the session; while it
|
|
8
|
+
* runs, the rest wait, then observe the now-live session and reuse it. This is
|
|
9
|
+
* the single-flight guarantee that defeats the reconnect storm without the
|
|
10
|
+
* intent-coalescing hazards of sharing one promise across callers (a no-creds
|
|
11
|
+
* connect and a with-creds login want different end states).
|
|
12
|
+
*/
|
|
13
|
+
export declare function withKeyLock<T>(key: string, fn: () => Promise<T>): Promise<T>;
|
|
14
|
+
/** Drop any key bindings pointing at a session (called when it dies). */
|
|
15
|
+
export declare function unbindSession(sessionId: string): void;
|
|
16
|
+
//# sourceMappingURL=session-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-keys.d.ts","sourceRoot":"","sources":["../src/session-keys.ts"],"names":[],"mappings":"AAiCA,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBlF;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAIrD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { sessionLifecycle } from './session-store.js';
|
|
2
|
+
/**
|
|
3
|
+
* Idempotent connect-by-key registry.
|
|
4
|
+
*
|
|
5
|
+
* An integrator that drives one logical terminal (e.g. an automation bound to
|
|
6
|
+
* a specific host user / device) passes a stable opaque `key` on /connect. The
|
|
7
|
+
* proxy then guarantees AT MOST ONE live session per key:
|
|
8
|
+
*
|
|
9
|
+
* - all keyed connects for the same key are SERIALISED by a per-key mutex,
|
|
10
|
+
* so a concurrent burst can't race to open N sockets — the first opens the
|
|
11
|
+
* session, the rest observe it live and reuse it;
|
|
12
|
+
* - a connect for a key that already has a live session returns that session
|
|
13
|
+
* instead of opening another.
|
|
14
|
+
*
|
|
15
|
+
* This makes the classic "N concurrent reconnects → N host devices → device
|
|
16
|
+
* session-limit (LMTDEVSSN/CPF1220) contention" storm structurally impossible
|
|
17
|
+
* rather than merely policy-discouraged in the integrator. The key is opaque —
|
|
18
|
+
* the proxy never interprets it — so this stays protocol-generic.
|
|
19
|
+
*
|
|
20
|
+
* State is process-local (mirrors the default in-memory SessionStore). A
|
|
21
|
+
* multi-process deployment that swaps in a routing store would key the registry
|
|
22
|
+
* the same way at the routing layer.
|
|
23
|
+
*/
|
|
24
|
+
/** key → the sessionId of its current live session. Only holds sessions
|
|
25
|
+
* believed connected; cleared on `session.lost` so a dead key reconnects
|
|
26
|
+
* fresh instead of handing back a corpse. */
|
|
27
|
+
const keyToSessionId = new Map();
|
|
28
|
+
/** key → tail of its serialised operation chain (the per-key mutex). */
|
|
29
|
+
const keyLocks = new Map();
|
|
30
|
+
/** The session id currently bound to `key`, or undefined. */
|
|
31
|
+
export function getKeyedSessionId(key) {
|
|
32
|
+
return keyToSessionId.get(key);
|
|
33
|
+
}
|
|
34
|
+
/** Bind a key to its live session id (called once a keyed connect succeeds). */
|
|
35
|
+
export function bindKey(key, sessionId) {
|
|
36
|
+
keyToSessionId.set(key, sessionId);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Run `fn` under the per-key mutex: keyed connects for the same key execute
|
|
40
|
+
* one-at-a-time, in arrival order. The first caller opens the session; while it
|
|
41
|
+
* runs, the rest wait, then observe the now-live session and reuse it. This is
|
|
42
|
+
* the single-flight guarantee that defeats the reconnect storm without the
|
|
43
|
+
* intent-coalescing hazards of sharing one promise across callers (a no-creds
|
|
44
|
+
* connect and a with-creds login want different end states).
|
|
45
|
+
*/
|
|
46
|
+
export async function withKeyLock(key, fn) {
|
|
47
|
+
const prev = keyLocks.get(key) ?? Promise.resolve();
|
|
48
|
+
let release;
|
|
49
|
+
const mine = new Promise((r) => { release = r; });
|
|
50
|
+
// Our segment of the chain resolves only after the previous holder released
|
|
51
|
+
// (prev) AND we release (mine). The next caller awaits this as its `prev`.
|
|
52
|
+
const tail = prev.then(() => mine);
|
|
53
|
+
keyLocks.set(key, tail);
|
|
54
|
+
await prev; // wait our turn
|
|
55
|
+
try {
|
|
56
|
+
return await fn();
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
release();
|
|
60
|
+
// Drop the entry iff no later caller chained on (they'd have replaced the
|
|
61
|
+
// tail), so idle keys don't accumulate.
|
|
62
|
+
if (keyLocks.get(key) === tail)
|
|
63
|
+
keyLocks.delete(key);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** Drop any key bindings pointing at a session (called when it dies). */
|
|
67
|
+
export function unbindSession(sessionId) {
|
|
68
|
+
for (const [k, sid] of keyToSessionId) {
|
|
69
|
+
if (sid === sessionId)
|
|
70
|
+
keyToSessionId.delete(k);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// A lost session must not stay reachable by key — otherwise the next
|
|
74
|
+
// connect-by-key would hand back the dead session id forever. Clearing it
|
|
75
|
+
// here means the next connect for that key opens a fresh session.
|
|
76
|
+
sessionLifecycle.on('session.lost', (sessionId) => unbindSession(sessionId));
|
|
77
|
+
//# sourceMappingURL=session-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-keys.js","sourceRoot":"","sources":["../src/session-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;8CAE8C;AAC9C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEjD,wEAAwE;AACxE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAElD,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,SAAiB;IACpD,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAI,GAAW,EAAE,EAAoB;IACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACpD,IAAI,OAAoB,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,4EAA4E;IAC5E,2EAA2E;IAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,MAAM,IAAI,CAAC,CAAC,gBAAgB;IAC5B,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,CAAC;QACV,0EAA0E;QAC1E,wCAAwC;QACxC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,GAAG,KAAK,SAAS;YAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,0EAA0E;AAC1E,kEAAkE;AAClE,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC"}
|