tabby-rdp 0.2.7 → 0.3.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/CHANGELOG.md +61 -2
- package/README.md +181 -21
- package/dist/connectionStatus.js +140 -0
- package/dist/connectionStatus.js.map +1 -0
- package/dist/desk.js +21 -10
- package/dist/desk.js.map +1 -1
- package/dist/deskScript.js +3 -0
- package/dist/deskScript.js.map +1 -1
- package/dist/desktop.service.js +993 -53
- package/dist/desktop.service.js.map +1 -1
- package/dist/desktopForm.js +64 -19
- package/dist/desktopForm.js.map +1 -1
- package/dist/desktops.js +60 -21
- package/dist/desktops.js.map +1 -1
- package/dist/fileTransfer.js +152 -5
- package/dist/fileTransfer.js.map +1 -1
- package/dist/header.js +22 -7
- package/dist/header.js.map +1 -1
- package/dist/help.js +235 -0
- package/dist/help.js.map +1 -0
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/keyboard.js +142 -5
- package/dist/keyboard.js.map +1 -1
- package/dist/microphone.js +295 -0
- package/dist/microphone.js.map +1 -0
- package/dist/osd.js +79 -0
- package/dist/osd.js.map +1 -0
- package/dist/probe.js +33 -0
- package/dist/probe.js.map +1 -0
- package/dist/rdcleanpath.js +132 -7
- package/dist/rdcleanpath.js.map +1 -1
- package/dist/rdpFile.js +47 -0
- package/dist/rdpFile.js.map +1 -0
- package/dist/rdpProfile.js +367 -0
- package/dist/rdpProfile.js.map +1 -0
- package/dist/remoteSetup.js +90 -11
- package/dist/remoteSetup.js.map +1 -1
- package/dist/settingsPage.js +538 -0
- package/dist/settingsPage.js.map +1 -0
- package/dist/signin.js +21 -2
- package/dist/signin.js.map +1 -1
- package/dist/ssh.js +28 -0
- package/dist/ssh.js.map +1 -1
- package/dist/targets.js +148 -8
- package/dist/targets.js.map +1 -1
- package/dist/ui.js +154 -24
- package/dist/ui.js.map +1 -1
- package/dist/vms.js +90 -0
- package/dist/vms.js.map +1 -0
- package/dist/wake.js +124 -0
- package/dist/wake.js.map +1 -0
- package/package.json +2 -1
- package/vendor/IRONRDP-LICENSE +3 -3
- package/vendor/iron-remote-desktop-rdp.js +698 -451
- package/vendor/iron-remote-desktop.js +87 -81
- package/vendor/ironrdp_web_bg.wasm +0 -0
package/dist/osd.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OSD_STYLE = exports.OSD_DEFAULTS = exports.OSD_POSITIONS = exports.OSD_SIZES = exports.OSD_FONTS = void 0;
|
|
4
|
+
exports.osdSettings = osdSettings;
|
|
5
|
+
exports.renderOsd = renderOsd;
|
|
6
|
+
/** Font stacks: macOS's, then Windows' (Bahnschrift) and common Linux ones, then any sans-serif. */
|
|
7
|
+
exports.OSD_FONTS = {
|
|
8
|
+
condensed: { label: 'Condensed (DIN Condensed)', family: '"DIN Condensed", "Bahnschrift Condensed", Bahnschrift, "Roboto Condensed", "Arial Narrow", sans-serif', weight: 700, stretch: 'condensed' },
|
|
9
|
+
din: { label: 'Road sign (DIN Alternate)', family: '"DIN Alternate", Bahnschrift, "D-DIN", Roboto, sans-serif', weight: 700, stretch: 'normal' },
|
|
10
|
+
slender: { label: 'Slender (Avenir Next Condensed)', family: '"Avenir Next Condensed", "Bahnschrift SemiLight Condensed", "Roboto Condensed", "Arial Narrow", sans-serif', weight: 500, stretch: 'condensed' },
|
|
11
|
+
slenderBold: { label: 'Slender, heavier', family: '"Avenir Next Condensed", "Bahnschrift SemiBold Condensed", "Roboto Condensed", "Arial Narrow", sans-serif', weight: 600, stretch: 'condensed' },
|
|
12
|
+
system: { label: 'System font', family: 'system-ui, sans-serif', weight: 600, stretch: 'normal' },
|
|
13
|
+
};
|
|
14
|
+
/** Letter height in px; smaller in a narrow pane (see render()). */
|
|
15
|
+
exports.OSD_SIZES = { small: 28, medium: 44, large: 60, huge: 80 };
|
|
16
|
+
exports.OSD_POSITIONS = ['top-left', 'top-center', 'top-right', 'middle', 'bottom-left', 'bottom-center', 'bottom-right'];
|
|
17
|
+
exports.OSD_DEFAULTS = { show: 'auto', font: 'condensed', size: 'medium', position: 'top-right', color: '', seconds: 2.5 };
|
|
18
|
+
/** The config value, with anything missing or unknown replaced by the default. */
|
|
19
|
+
function osdSettings(value) {
|
|
20
|
+
const v = value && typeof value === 'object' ? value : {};
|
|
21
|
+
const seconds = Number(v.seconds);
|
|
22
|
+
return {
|
|
23
|
+
show: ['auto', 'always', 'off'].includes(v.show) ? v.show : exports.OSD_DEFAULTS.show,
|
|
24
|
+
font: v.font in exports.OSD_FONTS ? v.font : exports.OSD_DEFAULTS.font,
|
|
25
|
+
size: v.size in exports.OSD_SIZES ? v.size : exports.OSD_DEFAULTS.size,
|
|
26
|
+
position: exports.OSD_POSITIONS.includes(v.position) ? v.position : exports.OSD_DEFAULTS.position,
|
|
27
|
+
color: typeof v.color === 'string' && CSS.supports('color', v.color) ? v.color : '',
|
|
28
|
+
seconds: Number.isFinite(seconds) && seconds >= 0.5 && seconds <= 30 ? seconds : exports.OSD_DEFAULTS.seconds,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
exports.OSD_STYLE = `
|
|
32
|
+
.trd-osd { position: absolute; inset: 0; pointer-events: none; z-index: 3; opacity: 0; transition: opacity 0.5s; overflow: hidden; }
|
|
33
|
+
.trd-osd.trd-shown { opacity: 1; transition: opacity 0.12s; }
|
|
34
|
+
.trd-osd-glow { position: absolute; width: 520px; height: 300px; max-width: 100%; max-height: 100%; }
|
|
35
|
+
.trd-osd-box { position: absolute; display: flex; flex-direction: column; gap: 0.14em; color: #fff; text-transform: uppercase;
|
|
36
|
+
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); white-space: nowrap; max-width: calc(100% - 40px); }
|
|
37
|
+
.trd-osd-name { line-height: 1; letter-spacing: 0.04em; overflow: hidden; text-overflow: ellipsis; }
|
|
38
|
+
.trd-osd-sub { display: flex; align-items: center; gap: 0.6em; font-size: max(11px, 0.3em); letter-spacing: 0.22em; }
|
|
39
|
+
.trd-osd-sub:empty { display: none; }
|
|
40
|
+
.trd-osd-bar { width: 1.6em; height: 3px; flex: none; background: var(--bs-primary, #3b82f6); }
|
|
41
|
+
`;
|
|
42
|
+
/** Where the letters and the glow sit, per position. */
|
|
43
|
+
function place(position) {
|
|
44
|
+
const [v, h] = position === 'middle' ? ['middle', 'center'] : position.split('-');
|
|
45
|
+
const box = [
|
|
46
|
+
// Below a desktop's own top bar (GNOME's is about 32 px), not over its clock.
|
|
47
|
+
v === 'top' ? 'top: 56px' : v === 'bottom' ? 'bottom: 20px' : 'top: 50%',
|
|
48
|
+
h === 'left' ? 'left: 24px' : h === 'right' ? 'right: 24px' : 'left: 50%',
|
|
49
|
+
`transform: translate(${h === 'center' ? '-50%' : '0'}, ${v === 'middle' ? '-50%' : '0'})`,
|
|
50
|
+
].join('; ');
|
|
51
|
+
const at = `${v === 'middle' ? 'center' : v} ${h === 'center' ? 'center' : h}`;
|
|
52
|
+
const glow = [
|
|
53
|
+
v === 'top' ? 'top: 0' : v === 'bottom' ? 'bottom: 0' : 'top: 50%',
|
|
54
|
+
h === 'left' ? 'left: 0' : h === 'right' ? 'right: 0' : 'left: 50%',
|
|
55
|
+
`transform: translate(${h === 'center' ? '-50%' : '0'}, ${v === 'middle' ? '-50%' : '0'})`,
|
|
56
|
+
`background: radial-gradient(ellipse at ${at}, rgba(0, 0, 0, 0.42), rgba(0, 0, 0, 0.18) 45%, transparent 72%)`,
|
|
57
|
+
].join('; ');
|
|
58
|
+
return { box, glow, align: h === 'left' ? 'flex-start' : h === 'right' ? 'flex-end' : 'center' };
|
|
59
|
+
}
|
|
60
|
+
/** Fills `el` (a .trd-osd) with `name` and an optional second line, as the settings say. */
|
|
61
|
+
function renderOsd(el, name, sub, settings) {
|
|
62
|
+
const font = exports.OSD_FONTS[settings.font];
|
|
63
|
+
const { box, glow, align } = place(settings.position);
|
|
64
|
+
// Smaller in a narrow pane: a name should fit in about two thirds of it.
|
|
65
|
+
const width = el.offsetWidth || 800; // layout width: the settings preview is a scaled-down desktop
|
|
66
|
+
const size = Math.max(18, Math.min(exports.OSD_SIZES[settings.size], width / Math.max(4, name.length) * 1.1));
|
|
67
|
+
el.innerHTML = `<div class="trd-osd-glow" style="${glow}"></div>
|
|
68
|
+
<div class="trd-osd-box" style="${box}; align-items: ${align}; font-family: ${font.family.replace(/"/g, '"')};
|
|
69
|
+
font-weight: ${font.weight}; font-stretch: ${font.stretch}; font-size: ${size}px${settings.color ? `; color: ${settings.color}` : ''}">
|
|
70
|
+
<div class="trd-osd-name"></div><div class="trd-osd-sub"></div></div>`;
|
|
71
|
+
el.querySelector('.trd-osd-name').textContent = name;
|
|
72
|
+
const subEl = el.querySelector('.trd-osd-sub');
|
|
73
|
+
if (sub) {
|
|
74
|
+
const bar = document.createElement('span');
|
|
75
|
+
bar.className = 'trd-osd-bar';
|
|
76
|
+
subEl.append(bar, document.createTextNode(sub));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=osd.js.map
|
package/dist/osd.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"osd.js","sourceRoot":"","sources":["../src/osd.ts"],"names":[],"mappings":"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"}
|
package/dist/probe.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.probeArrived = probeArrived;
|
|
4
|
+
exports.probesIn = probesIn;
|
|
5
|
+
/**
|
|
6
|
+
* Which terminal pane a remote terminal belongs to: the remote writes `ESC ] 7777 ; probe ; <id> BEL` to that terminal
|
|
7
|
+
* (see NESTED_SSH_SCRIPT in targets.ts), and the pane whose output carries it is the one (desk.ts strips it on the way
|
|
8
|
+
* in, so nothing shows). Exact where a split's panes share a host, and even their size.
|
|
9
|
+
*/
|
|
10
|
+
const listeners = new Set();
|
|
11
|
+
/** Called by desk.ts for each probe in a pane's output. */
|
|
12
|
+
function probeArrived(id, pane) {
|
|
13
|
+
listeners.forEach(f => f(id, pane));
|
|
14
|
+
}
|
|
15
|
+
/** Collects the probes (ids starting with `prefix`) that arrive in `pane` while `during` runs, and briefly after. */
|
|
16
|
+
async function probesIn(pane, prefix, during, settleMs = 400) {
|
|
17
|
+
const ids = new Set();
|
|
18
|
+
const listener = (id, where) => {
|
|
19
|
+
if (where === pane && id.startsWith(prefix)) {
|
|
20
|
+
ids.add(id);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
listeners.add(listener);
|
|
24
|
+
try {
|
|
25
|
+
const result = await during();
|
|
26
|
+
await new Promise(resolve => setTimeout(resolve, settleMs));
|
|
27
|
+
return { result, ids };
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
listeners.delete(listener);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../src/probe.ts"],"names":[],"mappings":";;AAQA,oCAEC;AAGD,4BAeC;AA5BD;;;;GAIG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsC,CAAA;AAE/D,2DAA2D;AAC3D,SAAgB,YAAY,CAAE,EAAU,EAAE,IAAY;IAClD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;AACvC,CAAC;AAED,qHAAqH;AAC9G,KAAK,UAAU,QAAQ,CAAK,IAAY,EAAE,MAAc,EAAE,MAAwB,EAAE,QAAQ,GAAG,GAAG;IACrG,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;IAC7B,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,KAAa,EAAE,EAAE;QAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,CAAC;IACL,CAAC,CAAA;IACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvB,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAA;QAC7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC3D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IAC1B,CAAC;YAAS,CAAC;QACP,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC9B,CAAC;AACL,CAAC"}
|
package/dist/rdcleanpath.js
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeFingerprint = normalizeFingerprint;
|
|
3
4
|
exports.startRDCleanPathProxy = startRDCleanPathProxy;
|
|
4
5
|
// RDCleanPath proxy for the IronRDP web client, running inside Tabby's renderer.
|
|
5
6
|
// The WASM client talks WebSocket to this proxy; the proxy opens the upstream stream
|
|
6
7
|
// (a plain socket here, an SSH direct-tcpip channel later), forwards the X.224 request,
|
|
7
|
-
// terminates TLS,
|
|
8
|
+
// terminates TLS, checks the server's certificate, hands the cert chain back to the client (for CredSSP), then relays.
|
|
8
9
|
const tls = require("tls");
|
|
9
10
|
const crypto_1 = require("crypto");
|
|
10
11
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
11
12
|
const { WebSocketServer } = require('ws');
|
|
12
13
|
const VERSION_1 = 3390;
|
|
13
14
|
const GENERAL_ERROR = 1;
|
|
15
|
+
/** A SHA-256 fingerprint as `AB:CD:…` (openssl and Node print it so), from any hex spelling; '' if it isn't one. */
|
|
16
|
+
function normalizeFingerprint(value) {
|
|
17
|
+
const hex = String(value ?? '').replace(/[\s:]/g, '').toUpperCase();
|
|
18
|
+
return /^[0-9A-F]{64}$/.test(hex) ? hex.match(/../g).join(':') : '';
|
|
19
|
+
}
|
|
20
|
+
function fingerprintOf(der) {
|
|
21
|
+
return normalizeFingerprint((0, crypto_1.createHash)('sha256').update(der).digest('hex'));
|
|
22
|
+
}
|
|
14
23
|
// ---- minimal DER -------------------------------------------------------------------------------
|
|
15
24
|
function derLength(n) {
|
|
16
25
|
if (n < 0x80) {
|
|
@@ -137,6 +146,84 @@ function certChainOf(socket) {
|
|
|
137
146
|
}
|
|
138
147
|
return chain;
|
|
139
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* The server's answer to the client's security negotiation, when it rules out TLS (which IronRDP and RDCleanPath
|
|
151
|
+
* need): a server with RDP's standard security only (xrdp with security_layer=rdp, for example) answers without a
|
|
152
|
+
* negotiation response, or with PROTOCOL_RDP, or refuses the negotiation. Null when TLS can go ahead.
|
|
153
|
+
*/
|
|
154
|
+
function noTls(x224) {
|
|
155
|
+
// TPKT (4), X.224 Connection Confirm (7), then RDP_NEG_RSP or RDP_NEG_FAILURE (8): type, flags, length, value.
|
|
156
|
+
const standardOnly = 'the RDP server only offers standard RDP security, without TLS (for xrdp: set security_layer=negotiate in /etc/xrdp/xrdp.ini and restart xrdp)';
|
|
157
|
+
if (x224.length < 19) {
|
|
158
|
+
return standardOnly;
|
|
159
|
+
}
|
|
160
|
+
const type = x224[11];
|
|
161
|
+
const value = x224.readUInt32LE(15);
|
|
162
|
+
if (type === 0x02) {
|
|
163
|
+
return value === 0 ? standardOnly : null;
|
|
164
|
+
}
|
|
165
|
+
if (type === 0x03) {
|
|
166
|
+
switch (value) {
|
|
167
|
+
case 2: return standardOnly; // SSL_NOT_ALLOWED_BY_SERVER
|
|
168
|
+
case 3: return 'the RDP server has no TLS certificate (for xrdp: see certificate= and key_file= in /etc/xrdp/xrdp.ini)';
|
|
169
|
+
default: return `the RDP server refused the security negotiation (code ${value})`;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* xrdp signs in with the Client Info PDU's credentials only when its INFO_AUTOLOGON flag is set, and otherwise shows
|
|
176
|
+
* its own login window; IronRDP's web client never sets it. The proxy has the client's side in the clear (it does
|
|
177
|
+
* the TLS), so it sets the flag in that one PDU, in place, and passes everything else through untouched.
|
|
178
|
+
* Returns a function from client data to what goes upstream.
|
|
179
|
+
*/
|
|
180
|
+
function autologon() {
|
|
181
|
+
const INFO_AUTOLOGON = 0x08;
|
|
182
|
+
const SEC_INFO_PKT = 0x40;
|
|
183
|
+
let pending = Buffer.alloc(0);
|
|
184
|
+
let done = false;
|
|
185
|
+
// TPKT (4), X.224 Data (3: 02 f0 80), MCS Send Data Request (0x64, initiator 2, channel 2, priority 1, PER length
|
|
186
|
+
// 1 or 2), basic security header (flags 2 with SEC_INFO_PKT, flagsHi 2), then TS_INFO_PACKET: CodePage 4, flags 4.
|
|
187
|
+
const patch = (pdu) => {
|
|
188
|
+
if (pdu.length < 14 || pdu[4] !== 0x02 || pdu[5] !== 0xf0 || pdu[7] >> 2 !== 25) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
const sec = 13 + (pdu[13] & 0x80 ? 2 : 1);
|
|
192
|
+
if (pdu.length < sec + 12 || !(pdu.readUInt16LE(sec) & SEC_INFO_PKT)) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
const flags = sec + 4 + 4;
|
|
196
|
+
pdu.writeUInt32LE((pdu.readUInt32LE(flags) | INFO_AUTOLOGON) >>> 0, flags);
|
|
197
|
+
return true;
|
|
198
|
+
};
|
|
199
|
+
return data => {
|
|
200
|
+
if (done) {
|
|
201
|
+
return data;
|
|
202
|
+
}
|
|
203
|
+
pending = Buffer.concat([pending, data]); // a copy: patched in place
|
|
204
|
+
let p = 0;
|
|
205
|
+
// Whole TPKT frames; a partial one waits for the rest. Anything else (fast-path input) means the connection
|
|
206
|
+
// sequence, and with it the Client Info PDU, is over.
|
|
207
|
+
while (pending.length - p >= 4) {
|
|
208
|
+
if (pending[p] !== 0x03) {
|
|
209
|
+
done = true;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
const length = pending.readUInt16BE(p + 2);
|
|
213
|
+
if (length < 4 || pending.length - p < length) {
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
done = patch(pending.subarray(p, p + length));
|
|
217
|
+
p += length;
|
|
218
|
+
if (done) {
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
const out = done ? pending : pending.subarray(0, p);
|
|
223
|
+
pending = done ? Buffer.alloc(0) : pending.subarray(p);
|
|
224
|
+
return out;
|
|
225
|
+
};
|
|
226
|
+
}
|
|
140
227
|
// ---- proxy -------------------------------------------------------------------------------------
|
|
141
228
|
/**
|
|
142
229
|
* TLS for servers whose certificate only allows key encipherment, like Windows' self-signed RDP certificate.
|
|
@@ -148,12 +235,18 @@ const KEY_ENCIPHERMENT_ONLY_TLS = {
|
|
|
148
235
|
maxVersion: 'TLSv1.2',
|
|
149
236
|
ciphers: 'AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256',
|
|
150
237
|
};
|
|
238
|
+
class NoTlsError extends Error {
|
|
239
|
+
}
|
|
151
240
|
/** Sends the client's X.224 request upstream, reads the confirm, then does TLS there. */
|
|
152
241
|
async function handshake(openUpstream, destination, x224Request, legacyTls) {
|
|
153
242
|
const raw = await openUpstream(destination);
|
|
154
243
|
try {
|
|
155
244
|
raw.write(x224Request);
|
|
156
245
|
const x224 = await readTpkt(raw);
|
|
246
|
+
const refused = noTls(x224);
|
|
247
|
+
if (refused) {
|
|
248
|
+
throw new NoTlsError(refused);
|
|
249
|
+
}
|
|
157
250
|
const upstream = tls.connect({ socket: raw, rejectUnauthorized: false, ...legacyTls ? KEY_ENCIPHERMENT_ONLY_TLS : {} });
|
|
158
251
|
await new Promise((resolve, reject) => {
|
|
159
252
|
upstream.once('secureConnect', resolve);
|
|
@@ -166,10 +259,12 @@ async function handshake(openUpstream, destination, x224Request, legacyTls) {
|
|
|
166
259
|
throw e;
|
|
167
260
|
}
|
|
168
261
|
}
|
|
169
|
-
async function startRDCleanPathProxy(openUpstream, log = () => { }) {
|
|
262
|
+
async function startRDCleanPathProxy(openUpstream, checkCertificate, log = () => { }, options = {}) {
|
|
170
263
|
const token = (0, crypto_1.randomBytes)(24).toString('hex');
|
|
264
|
+
let failure = null;
|
|
171
265
|
// Set once the server turned out to need KEY_ENCIPHERMENT_ONLY_TLS; later connections start with it.
|
|
172
266
|
let legacyTls = false;
|
|
267
|
+
const stats = { bytesIn: 0, bytesOut: 0 };
|
|
173
268
|
const wss = new WebSocketServer({ host: '127.0.0.1', port: 0 });
|
|
174
269
|
await new Promise((resolve, reject) => {
|
|
175
270
|
wss.once('listening', resolve);
|
|
@@ -181,6 +276,14 @@ async function startRDCleanPathProxy(openUpstream, log = () => { }) {
|
|
|
181
276
|
const early = [];
|
|
182
277
|
let upstream = null;
|
|
183
278
|
let raw = null;
|
|
279
|
+
const toServer = options.autologon ? autologon() : (data) => data;
|
|
280
|
+
const send = (data) => {
|
|
281
|
+
const out = toServer(data);
|
|
282
|
+
if (out.length) {
|
|
283
|
+
upstream.write(out);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
failure = null;
|
|
184
287
|
const fail = (why) => {
|
|
185
288
|
log(`RDCleanPath failed: ${why}`);
|
|
186
289
|
try {
|
|
@@ -193,7 +296,8 @@ async function startRDCleanPathProxy(openUpstream, log = () => { }) {
|
|
|
193
296
|
};
|
|
194
297
|
ws.on('message', async (data) => {
|
|
195
298
|
if (stage === 'relay') {
|
|
196
|
-
|
|
299
|
+
stats.bytesOut += data.length;
|
|
300
|
+
send(data);
|
|
197
301
|
return;
|
|
198
302
|
}
|
|
199
303
|
if (stage === 'handshake') {
|
|
@@ -230,17 +334,32 @@ async function startRDCleanPathProxy(openUpstream, log = () => { }) {
|
|
|
230
334
|
raw = up.raw;
|
|
231
335
|
upstream = up.upstream;
|
|
232
336
|
const x224 = up.x224;
|
|
233
|
-
|
|
337
|
+
// Both handshakes above, the first and the legacy-TLS retry, end here: the certificate is checked
|
|
338
|
+
// before the client gets the response it waits for to start CredSSP, and before anything it sent
|
|
339
|
+
// early goes upstream.
|
|
340
|
+
const chain = certChainOf(upstream);
|
|
341
|
+
if (!chain.length) {
|
|
342
|
+
return fail('the server sent no certificate');
|
|
343
|
+
}
|
|
344
|
+
await checkCertificate(fingerprintOf(chain[0]));
|
|
345
|
+
ws.send(encodeResponse(x224, chain, req.destination));
|
|
234
346
|
stage = 'relay';
|
|
235
|
-
upstream.on('data', (d) =>
|
|
347
|
+
upstream.on('data', (d) => {
|
|
348
|
+
stats.bytesIn += d.length;
|
|
349
|
+
ws.send(d);
|
|
350
|
+
});
|
|
236
351
|
upstream.on('close', () => ws.close());
|
|
237
352
|
upstream.on('error', (e) => { log(`upstream error: ${e.message}`); ws.close(); });
|
|
238
353
|
for (const d of early) {
|
|
239
|
-
|
|
354
|
+
stats.bytesOut += d.length;
|
|
355
|
+
send(d);
|
|
240
356
|
}
|
|
241
357
|
log(`RDCleanPath relay up to ${req.destination}`);
|
|
242
358
|
}
|
|
243
359
|
catch (e) {
|
|
360
|
+
if (e instanceof NoTlsError) {
|
|
361
|
+
failure = e.message;
|
|
362
|
+
}
|
|
244
363
|
fail(e?.message ?? String(e));
|
|
245
364
|
}
|
|
246
365
|
});
|
|
@@ -250,6 +369,12 @@ async function startRDCleanPathProxy(openUpstream, log = () => { }) {
|
|
|
250
369
|
});
|
|
251
370
|
});
|
|
252
371
|
const { port } = wss.address();
|
|
253
|
-
return {
|
|
372
|
+
return {
|
|
373
|
+
url: `ws://127.0.0.1:${port}`,
|
|
374
|
+
token,
|
|
375
|
+
stats,
|
|
376
|
+
get failure() { return failure; },
|
|
377
|
+
close: () => wss.close(),
|
|
378
|
+
};
|
|
254
379
|
}
|
|
255
380
|
//# sourceMappingURL=rdcleanpath.js.map
|
package/dist/rdcleanpath.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rdcleanpath.js","sourceRoot":"","sources":["../src/rdcleanpath.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rdcleanpath.js","sourceRoot":"","sources":["../src/rdcleanpath.ts"],"names":[],"mappings":"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"}
|
package/dist/rdpFile.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseRdpFile = parseRdpFile;
|
|
4
|
+
/** mstsc writes UTF-16LE with a byte order mark; other tools write UTF-8, with or without one. */
|
|
5
|
+
function decode(data) {
|
|
6
|
+
const b = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
|
|
7
|
+
if (b[0] === 0xff && b[1] === 0xfe) {
|
|
8
|
+
return b.subarray(2).toString('utf16le');
|
|
9
|
+
}
|
|
10
|
+
if (b[0] === 0xfe && b[1] === 0xff) {
|
|
11
|
+
return Buffer.from(b.subarray(2)).swap16().toString('utf16le');
|
|
12
|
+
}
|
|
13
|
+
if (b[0] === 0xef && b[1] === 0xbb && b[2] === 0xbf) {
|
|
14
|
+
return b.subarray(3).toString('utf8');
|
|
15
|
+
}
|
|
16
|
+
// UTF-16LE without a byte order mark: the first character is ASCII, followed by a zero byte.
|
|
17
|
+
if (b.length >= 2 && b[0] !== 0 && b[1] === 0) {
|
|
18
|
+
return b.subarray(0, b.length & ~1).toString('utf16le');
|
|
19
|
+
}
|
|
20
|
+
return b.toString('utf8');
|
|
21
|
+
}
|
|
22
|
+
/** The connection a .rdp file describes, or null without a usable `full address`. */
|
|
23
|
+
function parseRdpFile(data) {
|
|
24
|
+
const settings = new Map();
|
|
25
|
+
for (const line of decode(data).split(/\r?\n/)) {
|
|
26
|
+
const m = /^\s*([^:]+?)\s*:\s*([sib])\s*:(.*)$/i.exec(line);
|
|
27
|
+
if (m) {
|
|
28
|
+
settings.set(m[1].toLowerCase(), m[3].trim());
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const full = settings.get('full address') ?? '';
|
|
32
|
+
// host, host:port, [v6]:port, or a bare IPv6 address (colons, no brackets).
|
|
33
|
+
const m = /^\[([^\]]+)\](?::(\d+))?$|^([^:\s]+)(?::(\d+))?$/.exec(full);
|
|
34
|
+
const host = m?.[1] ?? m?.[3] ?? (/^[0-9a-f:.]+$/i.test(full) && (full.match(/:/g)?.length ?? 0) > 1 ? full : null);
|
|
35
|
+
// A port in the address wins over `server port`, as in mstsc.
|
|
36
|
+
const port = Number(m?.[2] ?? m?.[4] ?? (settings.get('server port') || 3389));
|
|
37
|
+
if (!host || !Number.isInteger(port) || port < 1 || port > 65535) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
host,
|
|
42
|
+
port,
|
|
43
|
+
...settings.get('username') ? { username: settings.get('username') } : {},
|
|
44
|
+
...settings.get('domain') ? { domain: settings.get('domain') } : {},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=rdpFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rdpFile.js","sourceRoot":"","sources":["../src/rdpFile.ts"],"names":[],"mappings":"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"}
|