instar 1.3.1597 → 1.3.1599
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/dashboard/desktop.css +8 -0
- package/dashboard/desktop.html +10 -0
- package/dashboard/desktop.js +98 -1
- package/dist/core/DesktopAccessAudit.d.ts +3 -1
- package/dist/core/DesktopAccessAudit.d.ts.map +1 -1
- package/dist/core/DesktopAccessAudit.js +1 -0
- package/dist/core/DesktopAccessAudit.js.map +1 -1
- package/dist/core/DesktopAead.d.ts +8 -1
- package/dist/core/DesktopAead.d.ts.map +1 -1
- package/dist/core/DesktopAead.js +18 -1
- package/dist/core/DesktopAead.js.map +1 -1
- package/dist/core/DesktopHelperRetention.d.ts +5 -1
- package/dist/core/DesktopHelperRetention.d.ts.map +1 -1
- package/dist/core/DesktopHelperRetention.js.map +1 -1
- package/dist/core/DesktopHost.d.ts +26 -1
- package/dist/core/DesktopHost.d.ts.map +1 -1
- package/dist/core/DesktopHost.js.map +1 -1
- package/dist/core/DesktopLockState.d.ts +38 -0
- package/dist/core/DesktopLockState.d.ts.map +1 -0
- package/dist/core/DesktopLockState.js +43 -0
- package/dist/core/DesktopLockState.js.map +1 -0
- package/dist/core/DesktopLockedController.d.ts +138 -0
- package/dist/core/DesktopLockedController.d.ts.map +1 -0
- package/dist/core/DesktopLockedController.js +442 -0
- package/dist/core/DesktopLockedController.js.map +1 -0
- package/dist/core/DesktopOperatorAssertion.d.ts +39 -0
- package/dist/core/DesktopOperatorAssertion.d.ts.map +1 -1
- package/dist/core/DesktopOperatorAssertion.js +49 -0
- package/dist/core/DesktopOperatorAssertion.js.map +1 -1
- package/dist/core/DesktopProbeReadiness.d.ts.map +1 -1
- package/dist/core/DesktopProbeReadiness.js +4 -1
- package/dist/core/DesktopProbeReadiness.js.map +1 -1
- package/dist/core/DesktopProvenVersions.d.ts +19 -0
- package/dist/core/DesktopProvenVersions.d.ts.map +1 -0
- package/dist/core/DesktopProvenVersions.js +8 -0
- package/dist/core/DesktopProvenVersions.js.map +1 -0
- package/dist/core/DirectDesktopAccess.d.ts +20 -1
- package/dist/core/DirectDesktopAccess.d.ts.map +1 -1
- package/dist/core/DirectDesktopAccess.js +263 -10
- package/dist/core/DirectDesktopAccess.js.map +1 -1
- package/dist/core/MacDesktopHost.d.ts +36 -1
- package/dist/core/MacDesktopHost.d.ts.map +1 -1
- package/dist/core/MacDesktopHost.js +132 -38
- package/dist/core/MacDesktopHost.js.map +1 -1
- package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
- package/dist/core/WriteDomainRegistry.js +8 -0
- package/dist/core/WriteDomainRegistry.js.map +1 -1
- package/dist/core/types.d.ts +6 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/native/instar-desktop-host +0 -0
- package/dist/native/instar-desktop-host.json +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +1 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +4 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +117 -4
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +2 -1
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/DesktopMeshBroker.d.ts +6 -0
- package/dist/server/DesktopMeshBroker.d.ts.map +1 -1
- package/dist/server/DesktopMeshBroker.js +17 -1
- package/dist/server/DesktopMeshBroker.js.map +1 -1
- package/dist/server/DesktopStreamManager.d.ts +11 -3
- package/dist/server/DesktopStreamManager.d.ts.map +1 -1
- package/dist/server/DesktopStreamManager.js +24 -1
- package/dist/server/DesktopStreamManager.js.map +1 -1
- package/dist/server/machineRoutes.d.ts +1 -0
- package/dist/server/machineRoutes.d.ts.map +1 -1
- package/dist/server/machineRoutes.js +14 -0
- package/dist/server/machineRoutes.js.map +1 -1
- package/dist/server/routes.d.ts +9 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +99 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/testing/selfActionRegistry.d.ts.map +1 -1
- package/dist/testing/selfActionRegistry.js +58 -0
- package/dist/testing/selfActionRegistry.js.map +1 -1
- package/package.json +1 -1
- package/scripts/build-native-desktop-host.mjs +4 -2
- package/src/data/builtin-manifest.json +48 -48
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/scaffold/templates.ts +1 -1
- package/upgrades/1.3.1598.md +24 -0
- package/upgrades/1.3.1599.md +20 -0
- package/upgrades/eli16/kept-helper-both-permissions.md +25 -0
- package/upgrades/side-effects/desktop-locked-screen.md +129 -0
- package/upgrades/side-effects/kept-helper-both-permissions.md +38 -0
package/dashboard/desktop.css
CHANGED
|
@@ -41,3 +41,11 @@ body.desktop-live #localCursor{display:block}
|
|
|
41
41
|
.setup-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
|
|
42
42
|
.setup-note:empty { display: none; }
|
|
43
43
|
.setup-quiet { background: none; border: none; color: inherit; opacity: 0.7; text-decoration: underline; }
|
|
44
|
+
|
|
45
|
+
#lockedPassword{position:absolute;z-index:8;left:max(.5rem,env(safe-area-inset-left));right:max(.5rem,env(safe-area-inset-right));top:max(.5rem,env(safe-area-inset-top));display:grid;gap:.4rem;padding:.6rem;background:#111827f2;border:1px solid #64748b;border-radius:10px;color:#f1f5f9}
|
|
46
|
+
#lockedPassword[hidden],#leaveUnlockedButton[hidden]{display:none}
|
|
47
|
+
#lockedPassword input{width:100%;font-size:16px;padding:.55rem}
|
|
48
|
+
#lockedPassword p{margin:0;font-size:.8rem}
|
|
49
|
+
#leaveUnlockedButton{position:absolute;z-index:8;right:max(.5rem,env(safe-area-inset-right));bottom:4rem;padding:.55rem .8rem}
|
|
50
|
+
#lockedCard{margin-top:.8rem}
|
|
51
|
+
#lockedCard[hidden]{display:none}
|
package/dashboard/desktop.html
CHANGED
|
@@ -19,6 +19,10 @@
|
|
|
19
19
|
<label>Machine <select id="machine"></select></label>
|
|
20
20
|
<button id="requestButton">Open selected machine</button>
|
|
21
21
|
<ul id="machineNotes" class="machine-notes" aria-label="Machines that are not ready"></ul>
|
|
22
|
+
<div id="lockedCard" hidden>
|
|
23
|
+
<p id="lockedCardText"></p>
|
|
24
|
+
<button id="lockedToggle" type="button" hidden></button>
|
|
25
|
+
</div>
|
|
22
26
|
</section>
|
|
23
27
|
<section id="setup" hidden>
|
|
24
28
|
<h2>Machines</h2>
|
|
@@ -86,6 +90,12 @@
|
|
|
86
90
|
<button data-remote-key="F11" type="button">F11</button>
|
|
87
91
|
<button data-remote-key="F12" type="button">F12</button>
|
|
88
92
|
</div>
|
|
93
|
+
<form id="lockedPassword" hidden>
|
|
94
|
+
<label>Mac password <input id="lockedPasswordInput" type="password" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" maxlength="256"></label>
|
|
95
|
+
<button type="submit">Unlock</button>
|
|
96
|
+
<p>The machine serving this page and the tunnel provider can read what you type here. The Instar app is safer.</p>
|
|
97
|
+
</form>
|
|
98
|
+
<button id="leaveUnlockedButton" type="button" hidden>Leave unlocked</button>
|
|
89
99
|
<div id="keyboardBar" hidden>
|
|
90
100
|
<label class="type-label" for="typeText">Type on remote desktop</label>
|
|
91
101
|
<input id="typeText" maxlength="64" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false" enterkeyhint="done">
|
package/dashboard/desktop.js
CHANGED
|
@@ -251,7 +251,7 @@ const base64ToBytes = text => Uint8Array.from(atob(text), character => character
|
|
|
251
251
|
function recordIv(direction, sequence) {
|
|
252
252
|
const iv = new Uint8Array(12);
|
|
253
253
|
const view = new DataView(iv.buffer);
|
|
254
|
-
view.setUint32(0,
|
|
254
|
+
view.setUint32(0, { frame: 1, input: 2, control: 3 }[direction]);
|
|
255
255
|
view.setBigUint64(4, sequence);
|
|
256
256
|
return iv;
|
|
257
257
|
}
|
|
@@ -410,11 +410,65 @@ function receiveH264(bytes, epoch) {
|
|
|
410
410
|
timestamp, data }));
|
|
411
411
|
needsVideoKeyframe = false;
|
|
412
412
|
}
|
|
413
|
+
const CONTROL_MARKER = 0xc7;
|
|
414
|
+
let controlSequence = 0n;
|
|
415
|
+
let lockedSealKey = '';
|
|
416
|
+
let lockedScreenState = '';
|
|
417
|
+
let lockedBoxAllowed = false;
|
|
418
|
+
let secretSequence = 0;
|
|
419
|
+
function syncLockedPassword() {
|
|
420
|
+
const show = lockedBoxAllowed && lockedScreenState === 'locked-in-session' && !!lockedSealKey;
|
|
421
|
+
$('lockedPassword').hidden = !show;
|
|
422
|
+
if (!show) $('lockedPasswordInput').value = '';
|
|
423
|
+
}
|
|
424
|
+
function lockedMessage(reason) {
|
|
425
|
+
return { 'relock-pending': 'This Mac is finishing a relock. Try again in a couple of minutes.',
|
|
426
|
+
'attempts-per-request': 'Too many tries in this session.', 'attempts-per-day': 'Too many tries today.',
|
|
427
|
+
'seal-stale': 'The connection changed. Type your password again.',
|
|
428
|
+
aborted: 'Stopped before the password finished. Type it again.',
|
|
429
|
+
'field-dirty': 'Clearing the password field. Try again in a moment.',
|
|
430
|
+
'browser-box-off': 'Password entry from a browser is off for this Mac.',
|
|
431
|
+
'tunnel-not-first-tier': 'Password entry is off while the backup connection is in use.' }[reason]
|
|
432
|
+
?? 'This Mac did not accept that. Try again.';
|
|
433
|
+
}
|
|
434
|
+
async function receiveControl(record) {
|
|
435
|
+
const view = new DataView(record.buffer, record.byteOffset, record.byteLength);
|
|
436
|
+
const sequence = view.getBigUint64(0) & 0x00ff_ffff_ffff_ffffn;
|
|
437
|
+
if (sequence <= controlSequence) throw new Error('Remote control record invalid.');
|
|
438
|
+
const plain = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: recordIv('control', sequence),
|
|
439
|
+
additionalData: recordAad('control') }, aesKey, record.subarray(8));
|
|
440
|
+
controlSequence = sequence;
|
|
441
|
+
const value = JSON.parse(new TextDecoder().decode(plain));
|
|
442
|
+
if (value.type === 'seal') lockedSealKey = value.key;
|
|
443
|
+
if (value.type === 'state') { lockedScreenState = value.state; lockedBoxAllowed = value.box === true; }
|
|
444
|
+
if (value.type === 'secret-result' && value.refused) status(lockedMessage(value.refused));
|
|
445
|
+
if (value.type === 'secret-result' && value.sent) { $('leaveUnlockedButton').hidden = false; }
|
|
446
|
+
if (value.type === 'relock') status(value.phase === 'left-unlocked' ? 'This Mac will stay unlocked.' : 'Relocking has begun.');
|
|
447
|
+
syncLockedPassword();
|
|
448
|
+
}
|
|
449
|
+
/** Sealed for the helper alone: Node and the front carry bytes they cannot read. */
|
|
450
|
+
async function sendLockedPassword(text) {
|
|
451
|
+
const helperKey = lockedSealKey;
|
|
452
|
+
const pair = await crypto.subtle.generateKey({ name: 'ECDH', namedCurve: 'P-256' }, true, ['deriveBits']);
|
|
453
|
+
const helper = await crypto.subtle.importKey('raw', base64ToBytes(helperKey), { name: 'ECDH', namedCurve: 'P-256' }, false, []);
|
|
454
|
+
const bits = await crypto.subtle.deriveBits({ name: 'ECDH', public: helper }, pair.privateKey, 256);
|
|
455
|
+
const hkdf = await crypto.subtle.importKey('raw', bits, 'HKDF', false, ['deriveKey']);
|
|
456
|
+
const key = await crypto.subtle.deriveKey({ name: 'HKDF', hash: 'SHA-256', salt: new Uint8Array(0),
|
|
457
|
+
info: encoder.encode(`instar-desktop-secret-v1:${requestId}:${helperKey}`) }, hkdf,
|
|
458
|
+
{ name: 'AES-GCM', length: 256 }, false, ['encrypt']);
|
|
459
|
+
const seq = ++secretSequence;
|
|
460
|
+
const iv = crypto.getRandomValues(new Uint8Array(12));
|
|
461
|
+
const ct = await crypto.subtle.encrypt({ name: 'AES-GCM', iv,
|
|
462
|
+
additionalData: encoder.encode(JSON.stringify(['instar-desktop-secret-v1', requestId, seq])) }, key, encoder.encode(text));
|
|
463
|
+
const ephemeral = await crypto.subtle.exportKey('raw', pair.publicKey);
|
|
464
|
+
return sendCommand({ type: 'secret', secret: { ephemeral: bytesToBase64(ephemeral), iv: bytesToBase64(iv), ct: bytesToBase64(ct), seq } });
|
|
465
|
+
}
|
|
413
466
|
async function receiveFrame(recordBuffer, epoch) {
|
|
414
467
|
if (!inputEnabled || epoch !== streamEpoch) return;
|
|
415
468
|
if (!aesKey || !(recordBuffer instanceof ArrayBuffer) || recordBuffer.byteLength < 28
|
|
416
469
|
|| recordBuffer.byteLength > 1_600_000) throw new Error('Encrypted frame invalid.');
|
|
417
470
|
const record = new Uint8Array(recordBuffer);
|
|
471
|
+
if (record[0] === CONTROL_MARKER) { await receiveControl(record); return; }
|
|
418
472
|
const sequence = new DataView(recordBuffer).getBigUint64(0);
|
|
419
473
|
// The target may drop an already-encrypted frame under backpressure. A
|
|
420
474
|
// strictly increasing nonce still rejects replay/reordering without treating
|
|
@@ -699,6 +753,7 @@ async function loadTargetsAndMaybeOpen({ open = true } = {}) {
|
|
|
699
753
|
const trustedKey = typeof target.targetSigningPublicKey === 'string'
|
|
700
754
|
? target.targetSigningPublicKey : '';
|
|
701
755
|
option.disabled = !target.ready || !trustedKey;
|
|
756
|
+
setTimeout(() => { void refreshLockedCard(); }, 0);
|
|
702
757
|
option.textContent = option.disabled
|
|
703
758
|
? `${target.label} — ${target.unavailableReason || 'Unavailable right now'}`
|
|
704
759
|
: target.label;
|
|
@@ -817,6 +872,8 @@ async function requestDesktop() {
|
|
|
817
872
|
browserEcdhPublicKey: bytesToBase64(ecdhPublicKey),
|
|
818
873
|
browserNonce: crypto.randomUUID().replaceAll('-', ''),
|
|
819
874
|
videoCodec,
|
|
875
|
+
client: 'browser',
|
|
876
|
+
controlRecords: true,
|
|
820
877
|
});
|
|
821
878
|
requestId = result.requestId;
|
|
822
879
|
const approved = await api(`/desktop/requests/${encodeURIComponent(requestId)}`);
|
|
@@ -875,6 +932,10 @@ async function openStream(result, resume = null) {
|
|
|
875
932
|
sendChain = Promise.resolve();
|
|
876
933
|
receiveChain = Promise.resolve();
|
|
877
934
|
socket.binaryType = 'arraybuffer';
|
|
935
|
+
controlSequence = 0n;
|
|
936
|
+
lockedSealKey = '';
|
|
937
|
+
secretSequence = 0;
|
|
938
|
+
syncLockedPassword();
|
|
878
939
|
return new Promise((resolve, reject) => {
|
|
879
940
|
let opened = false;
|
|
880
941
|
let settled = false;
|
|
@@ -930,8 +991,17 @@ async function openStream(result, resume = null) {
|
|
|
930
991
|
});
|
|
931
992
|
}
|
|
932
993
|
|
|
994
|
+
const LOCK_SCREEN_KEYS = new Set(['Enter', 'Tab', 'Escape', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown']);
|
|
995
|
+
/** A password typed at the shield must never leave as plain input. The helper
|
|
996
|
+
* also refuses it, but only this stops it reaching the server at all. */
|
|
997
|
+
function refusedAtLock(action) {
|
|
998
|
+
if (!['locked-in-session', 'locked-by-policy', 'screensaver-or-sleep', 'unknown'].includes(lockedScreenState)) return false;
|
|
999
|
+
if (action.kind === 'type') return true;
|
|
1000
|
+
return action.kind === 'keyDown' && !LOCK_SCREEN_KEYS.has(action.key);
|
|
1001
|
+
}
|
|
933
1002
|
function send(action) {
|
|
934
1003
|
if (!inputEnabled) return Promise.resolve(false);
|
|
1004
|
+
if (refusedAtLock(action)) return Promise.resolve(true);
|
|
935
1005
|
if (screenSwitch && Date.now() - screenSwitch.at >= SCREEN_SWITCH_LIMIT_MS) screenSwitch = null;
|
|
936
1006
|
if (screenSwitch && ['click', 'buttonDown', 'move'].includes(action.kind)) return Promise.resolve(false);
|
|
937
1007
|
return sendCommand({ type: 'input', action });
|
|
@@ -1559,6 +1629,33 @@ $('stopButton').addEventListener('click', async () => {
|
|
|
1559
1629
|
catch { message = 'The viewer closed, but the target has not confirmed revocation. Access expires automatically.'; }
|
|
1560
1630
|
leave(message);
|
|
1561
1631
|
});
|
|
1632
|
+
$('lockedPassword')?.addEventListener('submit', event => {
|
|
1633
|
+
event.preventDefault();
|
|
1634
|
+
const input = $('lockedPasswordInput');
|
|
1635
|
+
const text = input.value;
|
|
1636
|
+
input.value = '';
|
|
1637
|
+
if (text) void sendLockedPassword(text);
|
|
1638
|
+
});
|
|
1639
|
+
const LOCKED_REASONS = { 'unsupported-macos': 'Not available yet: this Mac\u2019s macOS has not passed the crash and Stop tests.' };
|
|
1640
|
+
async function refreshLockedCard() {
|
|
1641
|
+
let rows;
|
|
1642
|
+
try { rows = (await api('/desktop/locked/status?scope=pool')).machines; }
|
|
1643
|
+
catch { $('lockedCard').hidden = true; return; }
|
|
1644
|
+
const row = rows?.find(item => item.machineId === $('machine').value);
|
|
1645
|
+
if (!row) { $('lockedCard').hidden = true; return; }
|
|
1646
|
+
$('lockedCard').hidden = !row.enabled && !!row.refusal;
|
|
1647
|
+
$('lockedCardText').textContent = row.refusal ? LOCKED_REASONS[row.refusal] ?? 'Opening this Mac at its lock screen is unavailable.'
|
|
1648
|
+
: row.enabled ? 'You can open this Mac at its lock screen. It relocks when you finish.' : 'Opening this Mac at its lock screen is off.';
|
|
1649
|
+
$('lockedToggle').hidden = !!row.refusal;
|
|
1650
|
+
$('lockedToggle').textContent = row.enabled ? 'Turn off' : 'Turn on';
|
|
1651
|
+
$('lockedToggle').onclick = async () => {
|
|
1652
|
+
try { await api('/desktop/locked/settings', 'POST', { machineId: row.machineId, enabled: !row.enabled }); }
|
|
1653
|
+
catch (error) { status(error.message); }
|
|
1654
|
+
void refreshLockedCard();
|
|
1655
|
+
};
|
|
1656
|
+
}
|
|
1657
|
+
$('machine')?.addEventListener('change', () => { void refreshLockedCard(); });
|
|
1658
|
+
$('leaveUnlockedButton')?.addEventListener('click', () => { void sendCommand({ type: 'leave-unlocked' }); });
|
|
1562
1659
|
window.addEventListener('beforeunload', () => {
|
|
1563
1660
|
stopping = true;
|
|
1564
1661
|
sendCommand({ type: 'stop' });
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export interface DesktopAuditEvent {
|
|
2
|
-
kind: 'start' | 'stop';
|
|
2
|
+
kind: 'start' | 'stop' | 'leave-unlocked';
|
|
3
3
|
grantId: string;
|
|
4
4
|
machineId: string;
|
|
5
5
|
operatorUid: string;
|
|
6
6
|
authMethod?: 'pin' | 'telegram';
|
|
7
7
|
inputBucket?: 'none' | '1-9' | '10-99' | '100+';
|
|
8
|
+
/** leave-unlocked only: true when the tap beat the relock guard. */
|
|
9
|
+
acknowledged?: boolean;
|
|
8
10
|
}
|
|
9
11
|
export declare class DesktopAccessAudit {
|
|
10
12
|
private readonly dir;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopAccessAudit.d.ts","sourceRoot":"","sources":["../../src/core/DesktopAccessAudit.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"DesktopAccessAudit.d.ts","sourceRoot":"","sources":["../../src/core/DesktopAccessAudit.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAChD,oEAAoE;IACpE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,YAAY,QAAQ,EAAE,MAAM,EAI3B;IAED,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAYrC;IAED,OAAO,CAAC,KAAK;CASd"}
|
|
@@ -19,6 +19,7 @@ export class DesktopAccessAudit {
|
|
|
19
19
|
operatorRef: crypto.createHash('sha256').update(event.operatorUid).digest('hex').slice(0, 16),
|
|
20
20
|
...(event.authMethod ? { authMethod: event.authMethod } : {}),
|
|
21
21
|
...(event.inputBucket ? { inputBucket: event.inputBucket } : {}),
|
|
22
|
+
...(event.acknowledged !== undefined ? { acknowledged: event.acknowledged } : {}),
|
|
22
23
|
};
|
|
23
24
|
fs.appendFileSync(file, JSON.stringify(entry) + '\n', { mode: 0o600 });
|
|
24
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopAccessAudit.js","sourceRoot":"","sources":["../../src/core/DesktopAccessAudit.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DesktopAccessAudit.js","sourceRoot":"","sources":["../../src/core/DesktopAccessAudit.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAarD,MAAM,OAAO,kBAAkB;IACZ,GAAG,CAAS;IAC7B,YAAY,QAAgB;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,MAAM,CAAC,KAAwB;QAC7B,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;YAChD,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACtF,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7F,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClF,CAAC;QACF,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,MAAM,EAAE,CAAC;gBACrD,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
export type DesktopDirection = 'frame' | 'input';
|
|
1
|
+
export type DesktopDirection = 'frame' | 'input' | 'control';
|
|
2
|
+
/** First byte of a control record. Frame sequences never reach it, and only a
|
|
3
|
+
* viewer that declared controlRecords is ever sent one. */
|
|
4
|
+
export declare const DESKTOP_CONTROL_MARKER = 199;
|
|
2
5
|
export declare const DESKTOP_MAX_PLAINTEXT_FRAME_BYTES: number;
|
|
3
6
|
export declare class DesktopAead {
|
|
4
7
|
private readonly key;
|
|
5
8
|
private readonly requestId;
|
|
6
9
|
private nextFrame;
|
|
7
10
|
private nextInput;
|
|
11
|
+
private nextControl;
|
|
8
12
|
constructor(key: Buffer, requestId: string);
|
|
9
13
|
encryptFrame(frame: Buffer): Buffer;
|
|
14
|
+
/** Its own sequence and IV domain: a control record overtaking a frame in
|
|
15
|
+
* flight must never make that frame's sequence look stale to a viewer. */
|
|
16
|
+
encryptControl(value: unknown): Buffer;
|
|
10
17
|
decryptInput(record: Buffer): unknown;
|
|
11
18
|
}
|
|
12
19
|
export declare function deriveDesktopKey(browserEcdhPublicKey: Buffer, requestId: string, machineId: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopAead.d.ts","sourceRoot":"","sources":["../../src/core/DesktopAead.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DesktopAead.d.ts","sourceRoot":"","sources":["../../src/core/DesktopAead.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAC7D;2DAC2D;AAC3D,eAAO,MAAM,sBAAsB,MAAO,CAAC;AAG3C,eAAO,MAAM,iCAAiC,QAA4B,CAAC;AAa3E,qBAAa,WAAW;IAKV,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJpE,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAM;IAEzB,YAA6B,GAAG,EAAE,MAAM,EAAmB,SAAS,EAAE,MAAM,EAE3E;IAED,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASlC;IAED;8EAC0E;IAC1E,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASrC;IAED,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUpC;CACF;AAED,wBAAgB,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;IACpG,GAAG,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CACpD,CASA"}
|
package/dist/core/DesktopAead.js
CHANGED
|
@@ -3,11 +3,15 @@
|
|
|
3
3
|
* prevent reflection, reordering and replay. A new ECDH key is used per grant. */
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { H264_MAX_ACCESS_UNIT } from './DesktopVideo.js';
|
|
6
|
+
/** First byte of a control record. Frame sequences never reach it, and only a
|
|
7
|
+
* viewer that declared controlRecords is ever sent one. */
|
|
8
|
+
export const DESKTOP_CONTROL_MARKER = 0xc7;
|
|
9
|
+
const IV_DOMAIN = { frame: 1, input: 2, control: 3 };
|
|
6
10
|
// The native access unit may fill its cap; the authenticated H.264 wrapper adds 18 bytes.
|
|
7
11
|
export const DESKTOP_MAX_PLAINTEXT_FRAME_BYTES = H264_MAX_ACCESS_UNIT + 18;
|
|
8
12
|
function iv(direction, sequence) {
|
|
9
13
|
const nonce = Buffer.alloc(12);
|
|
10
|
-
nonce.writeUInt32BE(direction
|
|
14
|
+
nonce.writeUInt32BE(IV_DOMAIN[direction], 0);
|
|
11
15
|
nonce.writeBigUInt64BE(sequence, 4);
|
|
12
16
|
return nonce;
|
|
13
17
|
}
|
|
@@ -19,6 +23,7 @@ export class DesktopAead {
|
|
|
19
23
|
requestId;
|
|
20
24
|
nextFrame = 1n;
|
|
21
25
|
nextInput = 1n;
|
|
26
|
+
nextControl = 1n;
|
|
22
27
|
constructor(key, requestId) {
|
|
23
28
|
this.key = key;
|
|
24
29
|
this.requestId = requestId;
|
|
@@ -36,6 +41,18 @@ export class DesktopAead {
|
|
|
36
41
|
header.writeBigUInt64BE(sequence);
|
|
37
42
|
return Buffer.concat([header, encrypted, cipher.getAuthTag()]);
|
|
38
43
|
}
|
|
44
|
+
/** Its own sequence and IV domain: a control record overtaking a frame in
|
|
45
|
+
* flight must never make that frame's sequence look stale to a viewer. */
|
|
46
|
+
encryptControl(value) {
|
|
47
|
+
const sequence = this.nextControl++;
|
|
48
|
+
const cipher = crypto.createCipheriv('aes-256-gcm', this.key, iv('control', sequence));
|
|
49
|
+
cipher.setAAD(aad(this.requestId, 'control'));
|
|
50
|
+
const encrypted = Buffer.concat([cipher.update(JSON.stringify(value), 'utf8'), cipher.final()]);
|
|
51
|
+
const header = Buffer.alloc(8);
|
|
52
|
+
header.writeBigUInt64BE(sequence);
|
|
53
|
+
header[0] = DESKTOP_CONTROL_MARKER;
|
|
54
|
+
return Buffer.concat([header, encrypted, cipher.getAuthTag()]);
|
|
55
|
+
}
|
|
39
56
|
decryptInput(record) {
|
|
40
57
|
if (record.length < 8 + 16 + 2 || record.length > 4_096)
|
|
41
58
|
throw new Error('desktop input record size invalid');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopAead.js","sourceRoot":"","sources":["../../src/core/DesktopAead.ts"],"names":[],"mappings":"AAAA;;kFAEkF;AAClF,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,0FAA0F;AAC1F,MAAM,CAAC,MAAM,iCAAiC,GAAG,oBAAoB,GAAG,EAAE,CAAC;AAE3E,SAAS,EAAE,CAAC,SAA2B,EAAE,QAAgB;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/B,KAAK,CAAC,aAAa,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"DesktopAead.js","sourceRoot":"","sources":["../../src/core/DesktopAead.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export interface DesktopHelperResolution {
|
|
|
16
16
|
}
|
|
17
17
|
/** Why a missing permission needs a person. `same-program` means a grant was
|
|
18
18
|
* removed by someone or something else, so no update story applies. */
|
|
19
|
-
export type DesktopHelperPermissionChange = {
|
|
19
|
+
export type DesktopHelperPermissionChange = ({
|
|
20
20
|
kind: 'source-changed';
|
|
21
21
|
version: string;
|
|
22
22
|
helperPath: string;
|
|
@@ -24,6 +24,10 @@ export type DesktopHelperPermissionChange = {
|
|
|
24
24
|
kind: 'first-grant';
|
|
25
25
|
version: string;
|
|
26
26
|
helperPath: string;
|
|
27
|
+
}) & {
|
|
28
|
+
/** Set while the installed copy serves on a grant the kept copy lacks: every
|
|
29
|
+
* permission the kept copy still needs, so one trip to the Mac is enough. */
|
|
30
|
+
keptMissing?: string;
|
|
27
31
|
};
|
|
28
32
|
export interface DesktopHelperRetentionOptions {
|
|
29
33
|
packagedBinary: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopHelperRetention.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAC9C,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAM1D,MAAM,MAAM,qBAAqB,GAC7B,UAAU,GAAG,aAAa,GAAG,mBAAmB,GAAG,qBAAqB,GACxE,+BAA+B,GAAG,iBAAiB,GAAG,qBAAqB,GAAG,aAAa,CAAC;AAEhG,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC;AAED;uEACuE;AACvE,MAAM,MAAM,6BAA6B,
|
|
1
|
+
{"version":3,"file":"DesktopHelperRetention.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopHelperRetention.js","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DesktopHelperRetention.js","sourceRoot":"","sources":["../../src/core/DesktopHelperRetention.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,13 @@ export declare function isDesktopKey(key: unknown): key is DesktopKey;
|
|
|
43
43
|
export declare function isDesktopButton(button: unknown): button is DesktopButton;
|
|
44
44
|
/** Shape check applied before any host sees an action. */
|
|
45
45
|
export declare function validDesktopInput(action: DesktopInput): boolean;
|
|
46
|
+
/** Sealed to the input-stream helper's key. Node carries bytes it cannot read. */
|
|
47
|
+
export interface DesktopSealedSecret {
|
|
48
|
+
ephemeral: string;
|
|
49
|
+
iv: string;
|
|
50
|
+
ct: string;
|
|
51
|
+
seq: number;
|
|
52
|
+
}
|
|
46
53
|
export interface DesktopProbe {
|
|
47
54
|
screenPermission: boolean;
|
|
48
55
|
inputPermission: boolean;
|
|
@@ -53,6 +60,9 @@ export interface DesktopProbe {
|
|
|
53
60
|
onConsole?: boolean;
|
|
54
61
|
loginDone?: boolean;
|
|
55
62
|
screenLocked?: boolean;
|
|
63
|
+
osMajor?: number;
|
|
64
|
+
/** The classified lock reading, when the locked-screen controller exists. */
|
|
65
|
+
lockState?: import('./DesktopLockState.js').DesktopLockState;
|
|
56
66
|
/** macOS only: which identity holds the permission. `own` is the helper
|
|
57
67
|
* itself; `inherited` depends on what started this server's process tree. */
|
|
58
68
|
screenGrant?: 'own' | 'inherited' | 'none';
|
|
@@ -61,6 +71,8 @@ export interface DesktopProbe {
|
|
|
61
71
|
helperSource?: 'retained' | 'packaged';
|
|
62
72
|
helperFallback?: string;
|
|
63
73
|
helperChange?: DesktopHelperPermissionChange;
|
|
74
|
+
/** macOS only, while the locked-screen feature is on. */
|
|
75
|
+
lockInputs?: import('./DesktopLockState.js').DesktopLockInputs;
|
|
64
76
|
}
|
|
65
77
|
export type DesktopPlatform = 'macos' | 'windows';
|
|
66
78
|
export interface DesktopDisplay {
|
|
@@ -105,7 +117,20 @@ export interface DesktopHost {
|
|
|
105
117
|
x: number;
|
|
106
118
|
y: number;
|
|
107
119
|
}>;
|
|
108
|
-
|
|
120
|
+
/** A `refused` reply is not a failure: the helper did nothing and lives on. */
|
|
121
|
+
input(action: DesktopInput): Promise<void | {
|
|
122
|
+
refused: string;
|
|
123
|
+
}>;
|
|
124
|
+
secretType?(input: {
|
|
125
|
+
requestId: string;
|
|
126
|
+
key: string;
|
|
127
|
+
secret: DesktopSealedSecret;
|
|
128
|
+
}): Promise<void | {
|
|
129
|
+
refused: string;
|
|
130
|
+
}>;
|
|
131
|
+
abortInput?(): void;
|
|
132
|
+
ensureInputStream?(): void;
|
|
133
|
+
setSealKeyHandler?(handler: (key: string) => void): void;
|
|
109
134
|
cancelInput(): void;
|
|
110
135
|
setInputFailureHandler?(handler: () => void): void;
|
|
111
136
|
startIndicator(onUnexpectedExit: () => void): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopHost.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF;oFACoF;AACpF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE;AACxC,iEAAiE;GAC/D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE;AAChD,gFAAgF;GAC9E;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAMxD;sEACsE;AACtE,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAIC,CAAC;AAG5C,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAE5D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,aAAa,CAExE;AAED,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAkB/D;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;iFAC6E;IAC7E,WAAW,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3C,UAAU,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC;IAC1C,4EAA4E;IAC5E,YAAY,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"DesktopHost.d.ts","sourceRoot":"","sources":["../../src/core/DesktopHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesktopHost.js","sourceRoot":"","sources":["../../src/core/DesktopHost.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DesktopHost.js","sourceRoot":"","sources":["../../src/core/DesktopHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads whether a Mac is really locked. The flag is one input, never the
|
|
3
|
+
* answer: the session-only inputs name whose session is on the console and stay
|
|
4
|
+
* true at the shield, so only the flag and the shield window can tell locked
|
|
5
|
+
* from unlocked. Fixed predicates, no model; a real frame settles capture.
|
|
6
|
+
* Spec: docs/specs/desktop-locked-screen.md, "Lock reading".
|
|
7
|
+
*/
|
|
8
|
+
export type DesktopLockState = 'unlocked' | 'screensaver-or-sleep' | 'locked-in-session' | 'locked-by-policy' | 'login-window-switched' | 'other-user-on-console' | 'unknown';
|
|
9
|
+
/** `pending` is a refresh after a state change. It falls on the locked side. */
|
|
10
|
+
export type DesktopLockPolicy = 'off' | 'on' | 'delayed' | 'unreadable' | 'pending';
|
|
11
|
+
export interface DesktopLockInputs {
|
|
12
|
+
shieldWindow: boolean;
|
|
13
|
+
secureInputOwner: 'loginwindow' | 'other' | 'none' | 'unreadable';
|
|
14
|
+
displayAsleep: boolean;
|
|
15
|
+
screensaver: boolean;
|
|
16
|
+
onlineDisplays: number;
|
|
17
|
+
thisUser: string;
|
|
18
|
+
consoleUser?: string;
|
|
19
|
+
osMajor: number;
|
|
20
|
+
sampledAtMs: number;
|
|
21
|
+
bootSession?: string;
|
|
22
|
+
loginSession?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const LOCK_SAMPLE_MAX_AGE_MS = 2000;
|
|
25
|
+
export interface DesktopLockSample {
|
|
26
|
+
screenLocked?: boolean;
|
|
27
|
+
onConsole?: boolean;
|
|
28
|
+
loginDone?: boolean;
|
|
29
|
+
osMajor?: number;
|
|
30
|
+
lockInputs?: DesktopLockInputs;
|
|
31
|
+
}
|
|
32
|
+
/** `unknown` comes first: a stale, partial or self-contradicting sample never
|
|
33
|
+
* reaches the table. */
|
|
34
|
+
export declare function classifyDesktopLock(sample: DesktopLockSample, policy: DesktopLockPolicy, nowMs: number): DesktopLockState;
|
|
35
|
+
export declare function isLockedClass(state: DesktopLockState): boolean;
|
|
36
|
+
/** Parses `sysadminctl -screenLock status`, which reports on stderr. */
|
|
37
|
+
export declare function parseScreenLockPolicy(output: string): DesktopLockPolicy;
|
|
38
|
+
//# sourceMappingURL=DesktopLockState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DesktopLockState.d.ts","sourceRoot":"","sources":["../../src/core/DesktopLockState.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACxB,UAAU,GAAG,sBAAsB,GAAG,mBAAmB,GAAG,kBAAkB,GAC9E,uBAAuB,GAAG,uBAAuB,GAAG,SAAS,CAAC;AAElE,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpF,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC;IAClE,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED;wBACwB;AACxB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAiBzH;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAE9D;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAKvE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const LOCK_SAMPLE_MAX_AGE_MS = 2_000;
|
|
2
|
+
/** `unknown` comes first: a stale, partial or self-contradicting sample never
|
|
3
|
+
* reaches the table. */
|
|
4
|
+
export function classifyDesktopLock(sample, policy, nowMs) {
|
|
5
|
+
const inputs = sample.lockInputs;
|
|
6
|
+
const flag = sample.screenLocked;
|
|
7
|
+
if (!inputs || typeof flag !== 'boolean' || typeof sample.onConsole !== 'boolean'
|
|
8
|
+
|| typeof sample.loginDone !== 'boolean' || !inputs.thisUser
|
|
9
|
+
|| Math.abs(nowMs - inputs.sampledAtMs) > LOCK_SAMPLE_MAX_AGE_MS)
|
|
10
|
+
return 'unknown';
|
|
11
|
+
const console = inputs.consoleUser;
|
|
12
|
+
const quiet = inputs.screensaver || inputs.displayAsleep;
|
|
13
|
+
if (!flag && inputs.shieldWindow)
|
|
14
|
+
return 'unknown';
|
|
15
|
+
if (flag && !inputs.shieldWindow && !quiet)
|
|
16
|
+
return 'unknown';
|
|
17
|
+
if (console && console !== 'loginwindow' && console !== 'root' && console !== inputs.thisUser)
|
|
18
|
+
return 'other-user-on-console';
|
|
19
|
+
if (!console || console === 'loginwindow' || console === 'root' || !sample.onConsole)
|
|
20
|
+
return 'login-window-switched';
|
|
21
|
+
if (flag && inputs.shieldWindow)
|
|
22
|
+
return 'locked-in-session';
|
|
23
|
+
if (quiet && (flag || policy !== 'off'))
|
|
24
|
+
return 'locked-by-policy';
|
|
25
|
+
if (quiet)
|
|
26
|
+
return 'screensaver-or-sleep';
|
|
27
|
+
if (!flag && !inputs.shieldWindow)
|
|
28
|
+
return 'unlocked';
|
|
29
|
+
return 'unknown';
|
|
30
|
+
}
|
|
31
|
+
export function isLockedClass(state) {
|
|
32
|
+
return state === 'locked-in-session' || state === 'locked-by-policy' || state === 'unknown';
|
|
33
|
+
}
|
|
34
|
+
/** Parses `sysadminctl -screenLock status`, which reports on stderr. */
|
|
35
|
+
export function parseScreenLockPolicy(output) {
|
|
36
|
+
if (/screenLock is off/i.test(output))
|
|
37
|
+
return 'off';
|
|
38
|
+
const delay = /screenLock delay is (-?\d+)/i.exec(output);
|
|
39
|
+
if (!delay)
|
|
40
|
+
return /immediate/i.test(output) ? 'on' : 'unreadable';
|
|
41
|
+
return Number(delay[1]) === 0 ? 'on' : 'delayed';
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=DesktopLockState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DesktopLockState.js","sourceRoot":"","sources":["../../src/core/DesktopLockState.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAU5C;wBACwB;AACxB,MAAM,UAAU,mBAAmB,CAAC,MAAyB,EAAE,MAAyB,EAAE,KAAa;IACrG,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS;WAC5E,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ;WACzD,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,sBAAsB;QAAE,OAAO,SAAS,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,aAAa,CAAC;IACzD,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,OAAO,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC,QAAQ;QAAE,OAAO,uBAAuB,CAAC;IAC9H,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,uBAAuB,CAAC;IACrH,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,mBAAmB,CAAC;IAC5D,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACnE,IAAI,KAAK;QAAE,OAAO,sBAAsB,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY;QAAE,OAAO,UAAU,CAAC;IACrD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAuB;IACnD,OAAO,KAAK,KAAK,mBAAmB,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,SAAS,CAAC;AAC9F,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IACnE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC"}
|