tabby-rdp 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +90 -0
- package/README.md +93 -4
- package/dist/desktop.service.js +404 -43
- package/dist/desktop.service.js.map +1 -1
- package/dist/desktopForm.js +26 -1
- package/dist/desktopForm.js.map +1 -1
- package/dist/desktops.js +17 -1
- package/dist/desktops.js.map +1 -1
- package/dist/drives.js +284 -0
- package/dist/drives.js.map +1 -0
- package/dist/fileTransfer.js +128 -11
- package/dist/fileTransfer.js.map +1 -1
- package/dist/gateway.js +492 -0
- package/dist/gateway.js.map +1 -0
- package/dist/hyperv.js +79 -0
- package/dist/hyperv.js.map +1 -0
- package/dist/ntlm.js +226 -0
- package/dist/ntlm.js.map +1 -0
- package/dist/rdcleanpath.js +167 -26
- package/dist/rdcleanpath.js.map +1 -1
- package/dist/rdpFile.js +34 -0
- package/dist/rdpFile.js.map +1 -1
- package/dist/rdpProfile.js +39 -4
- package/dist/rdpProfile.js.map +1 -1
- package/dist/settingsPage.js +60 -6
- package/dist/settingsPage.js.map +1 -1
- package/dist/signin.js +26 -18
- package/dist/signin.js.map +1 -1
- package/dist/sshChannelStream.js +11 -1
- package/dist/sshChannelStream.js.map +1 -1
- package/dist/ui.js +10 -0
- package/dist/ui.js.map +1 -1
- package/dist/vms.js +20 -3
- package/dist/vms.js.map +1 -1
- package/dist/wake.js +16 -4
- package/dist/wake.js.map +1 -1
- package/package.json +1 -1
- package/vendor/iron-remote-desktop-rdp.js +418 -390
- package/vendor/ironrdp_web_bg.wasm +0 -0
package/dist/rdcleanpath.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeFingerprint = normalizeFingerprint;
|
|
4
|
+
exports.preconnectionPdu = preconnectionPdu;
|
|
5
|
+
exports.offersNla = offersNla;
|
|
4
6
|
exports.serverFraming = serverFraming;
|
|
5
7
|
exports.startRDCleanPathProxy = startRDCleanPathProxy;
|
|
6
8
|
// RDCleanPath proxy for the IronRDP web client, running inside Tabby's renderer.
|
|
@@ -89,6 +91,9 @@ function decodeRequest(buf) {
|
|
|
89
91
|
case 3:
|
|
90
92
|
req.proxyAuth = value.toString('utf8');
|
|
91
93
|
break;
|
|
94
|
+
case 5:
|
|
95
|
+
req.pcb = value.toString('utf8');
|
|
96
|
+
break;
|
|
92
97
|
case 6:
|
|
93
98
|
req.x224 = Buffer.from(value);
|
|
94
99
|
break;
|
|
@@ -97,8 +102,24 @@ function decodeRequest(buf) {
|
|
|
97
102
|
}
|
|
98
103
|
return req;
|
|
99
104
|
}
|
|
105
|
+
/** The response: the server's X.224 confirm (none for a Hyper-V VM's console), its certificate chain, its address. */
|
|
100
106
|
function encodeResponse(x224, certChain, serverAddr) {
|
|
101
|
-
return seq(explicit(0, derInteger(VERSION_1)), explicit(6, octets(x224)), explicit(7, seq(...certChain.map(octets))), explicit(9, utf8(serverAddr)));
|
|
107
|
+
return seq(explicit(0, derInteger(VERSION_1)), ...x224 ? [explicit(6, octets(x224))] : [], explicit(7, seq(...certChain.map(octets))), explicit(9, utf8(serverAddr)));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* A version 2 pre-connection PDU ([MS-RDPEPS] 2.2.1.2) carrying `text`: what a client sends first to a server that
|
|
111
|
+
* routes by it, as Hyper-V does to a VM's console by the VM's id.
|
|
112
|
+
*/
|
|
113
|
+
function preconnectionPdu(text) {
|
|
114
|
+
const blob = Buffer.from(text + '\0', 'utf16le');
|
|
115
|
+
const pdu = Buffer.alloc(18 + blob.length);
|
|
116
|
+
pdu.writeUInt32LE(pdu.length, 0); // cbSize
|
|
117
|
+
pdu.writeUInt32LE(0, 4); // Flags
|
|
118
|
+
pdu.writeUInt32LE(2, 8); // Version
|
|
119
|
+
pdu.writeUInt32LE(0, 12); // Id
|
|
120
|
+
pdu.writeUInt16LE(blob.length / 2, 16); // cchPCB, with the terminator
|
|
121
|
+
blob.copy(pdu, 18);
|
|
122
|
+
return pdu;
|
|
102
123
|
}
|
|
103
124
|
function encodeError() {
|
|
104
125
|
return seq(explicit(0, derInteger(VERSION_1)), explicit(1, seq(explicit(0, derInteger(GENERAL_ERROR)))));
|
|
@@ -112,6 +133,7 @@ function readTpkt(stream) {
|
|
|
112
133
|
stream.off('data', onData);
|
|
113
134
|
stream.off('error', onError);
|
|
114
135
|
stream.off('close', onClose);
|
|
136
|
+
stream.off('end', onClose);
|
|
115
137
|
};
|
|
116
138
|
const onError = (e) => { cleanup(); reject(e); };
|
|
117
139
|
const onClose = () => { cleanup(); reject(new Error('upstream closed during X.224')); };
|
|
@@ -134,6 +156,8 @@ function readTpkt(stream) {
|
|
|
134
156
|
stream.on('data', onData);
|
|
135
157
|
stream.on('error', onError);
|
|
136
158
|
stream.on('close', onClose);
|
|
159
|
+
// An SSH channel says when the server has closed its side ("end") without always saying it is closed.
|
|
160
|
+
stream.on('end', onClose);
|
|
137
161
|
});
|
|
138
162
|
}
|
|
139
163
|
function certChainOf(socket) {
|
|
@@ -152,6 +176,15 @@ function certChainOf(socket) {
|
|
|
152
176
|
* need): a server with RDP's standard security only (xrdp with security_layer=rdp, for example) answers without a
|
|
153
177
|
* negotiation response, or with PROTOCOL_RDP, or refuses the negotiation. Null when TLS can go ahead.
|
|
154
178
|
*/
|
|
179
|
+
/**
|
|
180
|
+
* Whether the server's answer to the connection request chose Network Level Authentication (CredSSP: HYBRID or
|
|
181
|
+
* HYBRID_EX). With it, the sign-in is a proof both ways and the password only goes to a server that knows it already.
|
|
182
|
+
* Without it (plain TLS, as xrdp does), the client sends the password itself in its Client Info PDU: encrypted on the
|
|
183
|
+
* way, readable to whatever answered.
|
|
184
|
+
*/
|
|
185
|
+
function offersNla(x224) {
|
|
186
|
+
return x224.length >= 19 && x224[11] === 0x02 && (x224.readUInt32LE(15) & (2 | 8)) !== 0;
|
|
187
|
+
}
|
|
155
188
|
function noTls(x224) {
|
|
156
189
|
// TPKT (4), X.224 Connection Confirm (7), then RDP_NEG_RSP or RDP_NEG_FAILURE (8): type, flags, length, value.
|
|
157
190
|
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)';
|
|
@@ -330,20 +363,55 @@ const KEY_ENCIPHERMENT_ONLY_TLS = {
|
|
|
330
363
|
};
|
|
331
364
|
class NoTlsError extends Error {
|
|
332
365
|
}
|
|
333
|
-
/**
|
|
334
|
-
|
|
366
|
+
/** The client's first message (the RDCleanPath request: a destination, a token, an X.224 request) is small. */
|
|
367
|
+
const MAX_HELLO = 64 * 1024;
|
|
368
|
+
/** How long a client has to send it, and how long the server has to answer X.224 and TLS. */
|
|
369
|
+
const HELLO_TIMEOUT_MS = 10_000;
|
|
370
|
+
const HANDSHAKE_TIMEOUT_MS = 45_000;
|
|
371
|
+
/** What the client may send ahead while the server is being reached (CredSSP hasn't started: next to nothing). */
|
|
372
|
+
const MAX_EARLY = 256 * 1024;
|
|
373
|
+
/** One client at a time uses a proxy; a reconnect can overlap the connection it replaces. */
|
|
374
|
+
const MAX_CLIENTS = 4;
|
|
375
|
+
/** A WebSocket message from the client: RDP PDUs, at most a few megabytes for a shared drive's read. */
|
|
376
|
+
const MAX_MESSAGE = 32 * 1024 * 1024;
|
|
377
|
+
/** Data waiting for the other side past this pauses the side it comes from, until half of it is gone. */
|
|
378
|
+
const HIGH_WATER = 8 * 1024 * 1024;
|
|
379
|
+
/**
|
|
380
|
+
* Sends the client's X.224 request upstream, reads the confirm, then does TLS there. With a pre-connection blob, that
|
|
381
|
+
* goes first; without an X.224 request (a Hyper-V VM's console), TLS follows the blob at once and X.224 is the
|
|
382
|
+
* client's to do later. `track` hears of each stream as soon as it exists, so the caller can end them if the client
|
|
383
|
+
* goes away meanwhile; `gone` says it has.
|
|
384
|
+
*/
|
|
385
|
+
async function handshake(openUpstream, destination, pcb, x224Request, legacyTls, track, gone, withoutNla) {
|
|
335
386
|
const raw = await openUpstream(destination);
|
|
387
|
+
track(raw);
|
|
336
388
|
try {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
if (
|
|
341
|
-
|
|
389
|
+
if (gone()) {
|
|
390
|
+
throw new Error('the client left');
|
|
391
|
+
}
|
|
392
|
+
if (pcb) {
|
|
393
|
+
raw.write(preconnectionPdu(pcb));
|
|
394
|
+
}
|
|
395
|
+
let x224 = null;
|
|
396
|
+
if (x224Request) {
|
|
397
|
+
raw.write(x224Request);
|
|
398
|
+
x224 = await readTpkt(raw);
|
|
399
|
+
const refused = noTls(x224);
|
|
400
|
+
if (refused) {
|
|
401
|
+
throw new NoTlsError(refused);
|
|
402
|
+
}
|
|
403
|
+
// Before TLS: a server that isn't to get the password gets nothing more at all.
|
|
404
|
+
if (!offersNla(x224)) {
|
|
405
|
+
await withoutNla?.();
|
|
406
|
+
}
|
|
342
407
|
}
|
|
343
408
|
const upstream = tls.connect({ socket: raw, rejectUnauthorized: false, ...legacyTls ? KEY_ENCIPHERMENT_ONLY_TLS : {} });
|
|
409
|
+
track(upstream);
|
|
344
410
|
await new Promise((resolve, reject) => {
|
|
345
411
|
upstream.once('secureConnect', resolve);
|
|
346
412
|
upstream.once('error', reject);
|
|
413
|
+
upstream.once('close', () => reject(new Error('upstream closed during TLS')));
|
|
414
|
+
upstream.once('end', () => reject(new Error('upstream closed during TLS')));
|
|
347
415
|
});
|
|
348
416
|
return { raw, upstream, x224 };
|
|
349
417
|
}
|
|
@@ -358,22 +426,49 @@ async function startRDCleanPathProxy(openUpstream, checkCertificate, log = () =>
|
|
|
358
426
|
// Set once the server turned out to need KEY_ENCIPHERMENT_ONLY_TLS; later connections start with it.
|
|
359
427
|
let legacyTls = false;
|
|
360
428
|
const stats = { bytesIn: 0, bytesOut: 0 };
|
|
361
|
-
const wss = new WebSocketServer({ host: '127.0.0.1', port: 0 });
|
|
429
|
+
const wss = new WebSocketServer({ host: '127.0.0.1', port: 0, maxPayload: MAX_MESSAGE });
|
|
362
430
|
await new Promise((resolve, reject) => {
|
|
363
431
|
wss.once('listening', resolve);
|
|
364
432
|
wss.once('error', reject);
|
|
365
433
|
});
|
|
434
|
+
wss.on('error', (e) => log(`proxy: ${e.message}`));
|
|
366
435
|
wss.on('connection', (ws) => {
|
|
436
|
+
// Anything on this computer can connect to the port; only the client that knows the token gets further than
|
|
437
|
+
// its first message, which has to be small and arrive soon.
|
|
438
|
+
if (wss.clients.size > MAX_CLIENTS) {
|
|
439
|
+
ws.terminate();
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
367
442
|
let buf = Buffer.alloc(0);
|
|
368
443
|
let stage = 'hello';
|
|
369
444
|
const early = [];
|
|
445
|
+
let earlySize = 0;
|
|
370
446
|
let upstream = null;
|
|
371
|
-
let
|
|
447
|
+
let closed = false;
|
|
448
|
+
// Every stream opened for this client, from the moment it exists: ended with the client.
|
|
449
|
+
const streams = new Set();
|
|
450
|
+
const track = (stream) => {
|
|
451
|
+
streams.add(stream);
|
|
452
|
+
stream.once('close', () => streams.delete(stream));
|
|
453
|
+
if (closed) {
|
|
454
|
+
stream.destroy();
|
|
455
|
+
}
|
|
456
|
+
};
|
|
457
|
+
const end = () => {
|
|
458
|
+
closed = true;
|
|
459
|
+
clearTimeout(deadline);
|
|
460
|
+
for (const stream of streams) {
|
|
461
|
+
stream.destroy();
|
|
462
|
+
}
|
|
463
|
+
};
|
|
464
|
+
let deadline = setTimeout(() => stage === 'hello' && ws.terminate(), HELLO_TIMEOUT_MS);
|
|
372
465
|
const toServer = options.autologon ? autologon() : (data) => data;
|
|
373
466
|
const send = (data) => {
|
|
374
467
|
const out = toServer(data);
|
|
375
|
-
|
|
376
|
-
|
|
468
|
+
// The server (or the SSH channel to it) not keeping up: stop reading from the client until it has.
|
|
469
|
+
if (out.length && !upstream.write(out) && upstream.writableLength > HIGH_WATER) {
|
|
470
|
+
ws.pause();
|
|
471
|
+
upstream.once('drain', () => ws.resume());
|
|
377
472
|
}
|
|
378
473
|
};
|
|
379
474
|
failure = null;
|
|
@@ -385,9 +480,13 @@ async function startRDCleanPathProxy(openUpstream, checkCertificate, log = () =>
|
|
|
385
480
|
}
|
|
386
481
|
catch { }
|
|
387
482
|
ws.close();
|
|
388
|
-
|
|
389
|
-
raw?.destroy();
|
|
483
|
+
end();
|
|
390
484
|
};
|
|
485
|
+
ws.on('error', (e) => {
|
|
486
|
+
log(`proxy: client: ${e.message}`);
|
|
487
|
+
ws.terminate();
|
|
488
|
+
end();
|
|
489
|
+
});
|
|
391
490
|
ws.on('message', async (data) => {
|
|
392
491
|
if (stage === 'relay') {
|
|
393
492
|
stats.bytesOut += data.length;
|
|
@@ -395,37 +494,53 @@ async function startRDCleanPathProxy(openUpstream, checkCertificate, log = () =>
|
|
|
395
494
|
return;
|
|
396
495
|
}
|
|
397
496
|
if (stage === 'handshake') {
|
|
497
|
+
earlySize += data.length;
|
|
498
|
+
if (earlySize > MAX_EARLY) {
|
|
499
|
+
return fail('the client sent too much before the server was reached');
|
|
500
|
+
}
|
|
398
501
|
early.push(data);
|
|
399
502
|
return;
|
|
400
503
|
}
|
|
504
|
+
// Before the token is checked: no more than a request's worth is kept, whatever length it claims.
|
|
505
|
+
if (buf.length + data.length > MAX_HELLO) {
|
|
506
|
+
ws.terminate();
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
401
509
|
buf = Buffer.concat([buf, data]);
|
|
402
510
|
const outer = readTlv(buf, 0);
|
|
403
511
|
if (!outer || buf.length < outer.end) {
|
|
404
512
|
return;
|
|
405
513
|
}
|
|
406
514
|
stage = 'handshake';
|
|
515
|
+
clearTimeout(deadline);
|
|
407
516
|
try {
|
|
408
517
|
const req = decodeRequest(buf.subarray(0, outer.end));
|
|
409
|
-
|
|
518
|
+
buf = Buffer.alloc(0);
|
|
519
|
+
if (req.version !== VERSION_1 || !req.destination || !req.x224 && !req.pcb?.trim()) {
|
|
410
520
|
return fail('malformed request');
|
|
411
521
|
}
|
|
412
522
|
if (req.proxyAuth !== token) {
|
|
413
523
|
return fail('bad token');
|
|
414
524
|
}
|
|
525
|
+
deadline = setTimeout(() => stage === 'handshake' && fail('the server didn\'t answer in time'), HANDSHAKE_TIMEOUT_MS);
|
|
415
526
|
let up;
|
|
416
527
|
try {
|
|
417
|
-
up = await handshake(openUpstream, req.destination, req.x224, legacyTls);
|
|
528
|
+
up = await handshake(openUpstream, req.destination, req.pcb, req.x224, legacyTls, track, () => closed, options.withoutNla);
|
|
418
529
|
}
|
|
419
530
|
catch (e) {
|
|
420
|
-
if (legacyTls || !/KEY_USAGE_BIT_INCORRECT/.test(e?.message ?? '')) {
|
|
531
|
+
if (closed || legacyTls || !/KEY_USAGE_BIT_INCORRECT/.test(e?.message ?? '')) {
|
|
421
532
|
throw e;
|
|
422
533
|
}
|
|
423
534
|
// The X.224 exchange is spent on that connection: start over on a fresh one.
|
|
424
535
|
log('TLS: the server certificate only allows key encipherment; using TLS 1.2 with RSA key exchange');
|
|
425
536
|
legacyTls = true;
|
|
426
|
-
up = await handshake(openUpstream, req.destination, req.x224, legacyTls);
|
|
537
|
+
up = await handshake(openUpstream, req.destination, req.pcb, req.x224, legacyTls, track, () => closed, options.withoutNla);
|
|
538
|
+
}
|
|
539
|
+
// Reached: from here on the time is the user's (a certificate to look at) and the session's.
|
|
540
|
+
clearTimeout(deadline);
|
|
541
|
+
if (closed) {
|
|
542
|
+
return;
|
|
427
543
|
}
|
|
428
|
-
raw = up.raw;
|
|
429
544
|
upstream = up.upstream;
|
|
430
545
|
const x224 = up.x224;
|
|
431
546
|
// Both handshakes above, the first and the legacy-TLS retry, end here: the certificate is checked
|
|
@@ -436,10 +551,14 @@ async function startRDCleanPathProxy(openUpstream, checkCertificate, log = () =>
|
|
|
436
551
|
return fail('the server sent no certificate');
|
|
437
552
|
}
|
|
438
553
|
await checkCertificate(fingerprintOf(chain[0]));
|
|
554
|
+
if (closed) {
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
439
557
|
ws.send(encodeResponse(x224, chain, req.destination));
|
|
440
558
|
stage = 'relay';
|
|
441
559
|
// PROTOCOL_HYBRID_EX in the server's negotiation response: an Early User Authorization Result follows CredSSP.
|
|
442
|
-
|
|
560
|
+
// (A Hyper-V VM's console: CredSSP first, then the X.224 exchange, which never asks for HYBRID_EX.)
|
|
561
|
+
const frames = serverFraming(!!x224 && x224.length >= 19 && x224[11] === 0x02 && x224.readUInt32LE(15) === 8);
|
|
443
562
|
upstream.on('data', (d) => {
|
|
444
563
|
stats.bytesIn += d.length;
|
|
445
564
|
let pdus;
|
|
@@ -455,8 +574,25 @@ async function startRDCleanPathProxy(openUpstream, checkCertificate, log = () =>
|
|
|
455
574
|
for (const pdu of pdus) {
|
|
456
575
|
ws.send(pdu);
|
|
457
576
|
}
|
|
577
|
+
// The client not keeping up: stop reading from the server until it has taken half of it.
|
|
578
|
+
if (ws.bufferedAmount > HIGH_WATER && !upstream.isPaused()) {
|
|
579
|
+
upstream.pause();
|
|
580
|
+
const wait = setInterval(() => {
|
|
581
|
+
if (closed || ws.bufferedAmount < HIGH_WATER / 2) {
|
|
582
|
+
clearInterval(wait);
|
|
583
|
+
upstream?.resume();
|
|
584
|
+
}
|
|
585
|
+
}, 50);
|
|
586
|
+
}
|
|
458
587
|
});
|
|
459
588
|
upstream.on('close', () => ws.close());
|
|
589
|
+
// The server closing its side is the end of the desktop: RDP has no use for a connection open one way.
|
|
590
|
+
// Through an SSH host that is all there may be to hear (the channel reports the end, and "closed" only
|
|
591
|
+
// once something more is sent into it), and a desktop waiting for "closed" stayed up, frozen.
|
|
592
|
+
upstream.on('end', () => {
|
|
593
|
+
ws.close();
|
|
594
|
+
upstream?.destroy();
|
|
595
|
+
});
|
|
460
596
|
upstream.on('error', (e) => { log(`upstream error: ${e.message}`); ws.close(); });
|
|
461
597
|
for (const d of early) {
|
|
462
598
|
stats.bytesOut += d.length;
|
|
@@ -465,13 +601,12 @@ async function startRDCleanPathProxy(openUpstream, checkCertificate, log = () =>
|
|
|
465
601
|
log(`RDCleanPath relay up to ${req.destination}`);
|
|
466
602
|
}
|
|
467
603
|
catch (e) {
|
|
468
|
-
|
|
604
|
+
if (!closed) {
|
|
605
|
+
fail(e?.message ?? String(e));
|
|
606
|
+
}
|
|
469
607
|
}
|
|
470
608
|
});
|
|
471
|
-
ws.on('close',
|
|
472
|
-
upstream?.destroy();
|
|
473
|
-
raw?.destroy();
|
|
474
|
-
});
|
|
609
|
+
ws.on('close', end);
|
|
475
610
|
});
|
|
476
611
|
const { port } = wss.address();
|
|
477
612
|
return {
|
|
@@ -479,7 +614,13 @@ async function startRDCleanPathProxy(openUpstream, checkCertificate, log = () =>
|
|
|
479
614
|
token,
|
|
480
615
|
stats,
|
|
481
616
|
get failure() { return failure; },
|
|
482
|
-
close: () =>
|
|
617
|
+
close: () => {
|
|
618
|
+
// Stops listening, and ends the clients there are: close() alone waits for them.
|
|
619
|
+
wss.close();
|
|
620
|
+
for (const client of wss.clients) {
|
|
621
|
+
client.terminate();
|
|
622
|
+
}
|
|
623
|
+
},
|
|
483
624
|
};
|
|
484
625
|
}
|
|
485
626
|
//# 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":";;AAyBA,oDAGC;AA4PD,sCAiFC;AAuCD,sDA+HC;AA/gBD,iFAAiF;AACjF,qFAAqF;AACrF,wFAAwF;AACxF,uHAAuH;AACvH,2BAA0B;AAC1B,mCAAgD;AAIhD,8DAA8D;AAC9D,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAA;AACtB,MAAM,aAAa,GAAG,CAAC,CAAA;AAWvB,oHAAoH;AACpH,SAAgB,oBAAoB,CAAE,KAAa;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IACnE,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACxE,CAAC;AAED,SAAS,aAAa,CAAE,GAAW;IAC/B,OAAO,oBAAoB,CAAC,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAC/E,CAAC;AAoBD,mGAAmG;AAEnG,SAAS,SAAS,CAAE,CAAS;IACzB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;AACvD,CAAC;AAED,SAAS,GAAG,CAAE,GAAW,EAAE,OAAe;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;AAClF,CAAC;AAED,SAAS,UAAU,CAAE,CAAS;IAC1B,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IACnB,CAAC;IACD,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC/B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;QACd,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AACnE,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAA;AACnE,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAC1C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;AAI7D,SAAS,OAAO,CAAE,GAAW,EAAE,GAAW;IACtC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAA;IACf,CAAC;IACD,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;IACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IACf,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAA;QACpB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAA;QACf,CAAC;QACD,GAAG,GAAG,CAAC,CAAA;QACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;QAC9B,CAAC;IACL,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAA;AACpD,CAAC;AAID,SAAS,aAAa,CAAE,GAAW;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,GAAG,GAAY,EAAE,CAAA;IACvB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAA;IACnB,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAE,CAAA;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAE,CAAA;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QAClD,QAAQ,KAAK,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC;gBAAE,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAK;YAC9D,KAAK,CAAC;gBAAE,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAK;YACvD,KAAK,CAAC;gBAAE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAK;YACrD,KAAK,CAAC;gBAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAK;QAChD,CAAC;QACD,CAAC,GAAG,KAAK,CAAC,GAAG,CAAA;IACjB,CAAC;IACD,OAAO,GAAG,CAAA;AACd,CAAC;AAED,SAAS,cAAc,CAAE,IAAY,EAAE,SAAmB,EAAE,UAAkB;IAC1E,OAAO,GAAG,CACN,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,EAClC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EACzB,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAC1C,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAChC,CAAA;AACL,CAAC;AAED,SAAS,WAAW;IAChB,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5G,CAAC;AAED,mGAAmG;AAEnG,gGAAgG;AAChG,SAAS,QAAQ,CAAE,MAAc;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACzB,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAC1B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC5B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAChC,CAAC,CAAA;QACD,MAAM,OAAO,GAAG,CAAC,CAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAA;QACtD,MAAM,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA,CAAC,CAAC,CAAA;QACtF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;YAC7B,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;YACjC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAM;YACV,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACnB,OAAM;YACV,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,OAAO,EAAE,CAAA;YACT,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACnB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;YACrC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QACjC,CAAC,CAAA;QACD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACzB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC3B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,WAAW,CAAE,MAAqB;IACvC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,IAAI,GAAQ,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,OAAO,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAA;IACjC,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,KAAK,CAAE,IAAY;IACxB,+GAA+G;IAC/G,MAAM,YAAY,GAAG,+IAA+I,CAAA;IACpK,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACnB,OAAO,YAAY,CAAA;IACvB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IACnC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5C,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,QAAQ,KAAK,EAAE,CAAC;YACZ,KAAK,CAAC,CAAC,CAAC,OAAO,YAAY,CAAA,CAAE,4BAA4B;YACzD,KAAK,CAAC,CAAC,CAAC,OAAO,wGAAwG,CAAA;YACvH,OAAO,CAAC,CAAC,OAAO,yDAAyD,KAAK,GAAG,CAAA;QACrF,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS;IACd,MAAM,cAAc,GAAG,IAAI,CAAA;IAC3B,MAAM,YAAY,GAAG,IAAI,CAAA;IACzB,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7B,IAAI,IAAI,GAAG,KAAK,CAAA;IAChB,kHAAkH;IAClH,mHAAmH;IACnH,MAAM,KAAK,GAAG,CAAC,GAAW,EAAW,EAAE;QACnC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAC9E,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;YACnE,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACzB,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAA;IACf,CAAC,CAAA;IACD,OAAO,IAAI,CAAC,EAAE;QACV,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,IAAI,CAAA;QACf,CAAC;QACD,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA,CAAE,2BAA2B;QACrE,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,4GAA4G;QAC5G,sDAAsD;QACtD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,GAAG,IAAI,CAAA;gBACX,MAAK;YACT,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YAC1C,IAAI,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;gBAC5C,MAAK;YACT,CAAC;YACD,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;YAC7C,CAAC,IAAI,MAAM,CAAA;YACX,IAAI,IAAI,EAAE,CAAC;gBACP,MAAK;YACT,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACnD,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,GAAG,CAAA;IACd,CAAC,CAAA;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAAE,SAAkB;IAC7C,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IAChC,IAAI,GAAG,GAAG,KAAK,CAAA;IACf,IAAI,OAAO,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC3D,mFAAmF;IACnF,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE;QACnC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,CAAC,CAAA;QACZ,CAAC;QACD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;YAC1B,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,EAAE,CAAA;YACnB,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;gBACxB,OAAO,CAAC,CAAA;YACZ,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YACvC,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;gBACpB,MAAM,OAAO,EAAE,CAAA;YACnB,CAAC;YACD,OAAO,CAAC,GAAG,MAAM,GAAG,OAAO,CAAA;QAC/B,CAAC;QACD,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,CAAA;QACZ,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACb,MAAM,OAAO,EAAE,CAAA;YACnB,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,CAAA;YACZ,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAChC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,OAAO,EAAE,CAAA;YACnB,CAAC;YACD,OAAO,MAAM,CAAA;QACjB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBACX,MAAM,OAAO,EAAE,CAAA;gBACnB,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YACf,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,CAAA;YACZ,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,OAAO,EAAE,CAAA;YACnB,CAAC;YACD,OAAO,MAAM,CAAA;QACjB,CAAC;QACD,MAAM,OAAO,EAAE,CAAA;IACnB,CAAC,CAAA;IACD,OAAO,IAAI,CAAC,EAAE;QACV,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAChE,MAAM,GAAG,GAAa,EAAE,CAAA;QACxB,SAAS,CAAC;YACN,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;YAChC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;gBACrC,MAAK;YACT,CAAC;YACD,IAAI,CAAC,GAAG,IAAI,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3C,SAAS,GAAG,KAAK,CAAA;YACrB,CAAC;iBAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7B,GAAG,GAAG,IAAI,CAAA;YACd,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;YACrC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtC,CAAC;QACD,gFAAgF;QAChF,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9B,OAAO,GAAG,CAAA;IACd,CAAC,CAAA;AACL,CAAC;AAED,mGAAmG;AAEnG;;;;;GAKG;AACH,MAAM,yBAAyB,GAA0B;IACrD,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,iEAAiE;CAC7E,CAAA;AAED,MAAM,UAAW,SAAQ,KAAK;CAAI;AAElC,yFAAyF;AACzF,KAAK,UAAU,SAAS,CAAE,YAA6B,EAAE,WAAmB,EAAE,WAAmB,EAAE,SAAkB;IACjH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAA;IAC3C,IAAI,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACtB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;QACjC,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC9H,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;YACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;QACF,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAClC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,GAAG,CAAC,OAAO,EAAE,CAAA;QACb,MAAM,CAAC,CAAA;IACX,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAE,YAA6B,EAAE,gBAAkC,EAAE,MAA6B,GAAG,EAAE,GAAE,CAAC,EAAE,UAA8B,EAAE;IACnL,MAAM,KAAK,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,OAAO,GAAkB,IAAI,CAAA;IACjC,qGAAqG;IACrG,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAA;IACzC,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;IAC/D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAO,EAAE,EAAE;QAC7B,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,KAAK,GAAoC,OAAO,CAAA;QACpD,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,IAAI,QAAQ,GAAyB,IAAI,CAAA;QACzC,IAAI,GAAG,GAAkB,IAAI,CAAA;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAA;QACzE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;YAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC1B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,QAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACxB,CAAC;QACL,CAAC,CAAA;QACD,OAAO,GAAG,IAAI,CAAA;QAEd,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;YACzB,OAAO,GAAG,GAAG,CAAA;YACb,GAAG,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAA;YACjC,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YACxC,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,QAAQ,EAAE,OAAO,EAAE,CAAA;YACnB,GAAG,EAAE,OAAO,EAAE,CAAA;QAClB,CAAC,CAAA;QAED,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YACpC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACpB,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAA;gBAC7B,IAAI,CAAC,IAAI,CAAC,CAAA;gBACV,OAAM;YACV,CAAC;YACD,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChB,OAAM;YACV,CAAC;YACD,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC7B,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBACnC,OAAM;YACV,CAAC;YACD,KAAK,GAAG,WAAW,CAAA;YACnB,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;gBACrD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBAC7D,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAA;gBACpC,CAAC;gBACD,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;oBAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC5B,CAAC;gBACD,IAAI,EAAyC,CAAA;gBAC7C,IAAI,CAAC;oBACD,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBAC5E,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBACd,IAAI,SAAS,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;wBACjE,MAAM,CAAC,CAAA;oBACX,CAAC;oBACD,6EAA6E;oBAC7E,GAAG,CAAC,+FAA+F,CAAC,CAAA;oBACpG,SAAS,GAAG,IAAI,CAAA;oBAChB,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBAC5E,CAAC;gBACD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;gBACZ,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAA;gBACtB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAA;gBACpB,kGAAkG;gBAClG,iGAAiG;gBACjG,uBAAuB;gBACvB,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;gBACnC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAChB,OAAO,IAAI,CAAC,gCAAgC,CAAC,CAAA;gBACjD,CAAC;gBACD,MAAM,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC/C,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;gBACrD,KAAK,GAAG,OAAO,CAAA;gBACf,+GAA+G;gBAC/G,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;gBACnG,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;oBAC9B,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAA;oBACzB,IAAI,IAAc,CAAA;oBAClB,IAAI,CAAC;wBACD,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;oBACpB,CAAC;oBAAC,OAAO,CAAM,EAAE,CAAC;wBACd,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;wBAC7B,EAAE,CAAC,KAAK,EAAE,CAAA;wBACV,QAAQ,EAAE,OAAO,EAAE,CAAA;wBACnB,OAAM;oBACV,CAAC;oBACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACrB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAChB,CAAC;gBACL,CAAC,CAAC,CAAA;gBACF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;gBACtC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;gBACvF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACpB,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAA;oBAC1B,IAAI,CAAC,CAAC,CAAC,CAAA;gBACX,CAAC;gBACD,GAAG,CAAC,2BAA2B,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;YACrD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACd,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YACjC,CAAC;QACL,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAChB,QAAQ,EAAE,OAAO,EAAE,CAAA;YACnB,GAAG,EAAE,OAAO,EAAE,CAAA;QAClB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,EAAiB,CAAA;IAC7C,OAAO;QACH,GAAG,EAAE,kBAAkB,IAAI,EAAE;QAC7B,KAAK;QACL,KAAK;QACL,IAAI,OAAO,KAAM,OAAO,OAAO,CAAA,CAAC,CAAC;QACjC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE;KAC3B,CAAA;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"rdcleanpath.js","sourceRoot":"","sources":["../src/rdcleanpath.ts"],"names":[],"mappings":"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"}
|
package/dist/rdpFile.js
CHANGED
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseRdpFile = parseRdpFile;
|
|
4
|
+
/** What a setting in the file would mean here, when it isn't applied: by key, for the values that ask for something. */
|
|
5
|
+
const NOTES = {
|
|
6
|
+
'audiomode': v => v === '1' ? 'sound left on the remote (sound plays here; Settings › Remote Desktop › Sound)' : v === '2' ? 'sound off (Settings › Remote Desktop › Sound)' : null,
|
|
7
|
+
'audiocapturemode': v => v === '1' ? 'the microphone (Settings › Remote Desktop › Microphone)' : null,
|
|
8
|
+
'redirectclipboard': v => v === '0' ? 'the clipboard turned off (it is always on)' : null,
|
|
9
|
+
'redirectdrives': v => v === '1' ? 'its drives (share folders in Settings › Remote Desktop › Shared folders)' : null,
|
|
10
|
+
'drivestoredirect': v => v ? 'its drives (share folders in Settings › Remote Desktop › Shared folders)' : null,
|
|
11
|
+
'redirectprinters': v => v === '1' ? 'printer redirection (not supported)' : null,
|
|
12
|
+
'redirectsmartcards': v => v === '1' ? 'smart card redirection (not supported)' : null,
|
|
13
|
+
'redirectcomports': v => v === '1' ? 'serial port redirection (not supported)' : null,
|
|
14
|
+
'usbdevicestoredirect': v => v ? 'USB redirection (not supported)' : null,
|
|
15
|
+
'use multimon': v => v === '1' ? 'several monitors (one screen per desktop here)' : null,
|
|
16
|
+
'screen mode id': (v, all) => v === '1' && (all.get('desktopwidth') || all.get('desktopheight'))
|
|
17
|
+
? `a fixed ${all.get('desktopwidth') ?? '?'}×${all.get('desktopheight') ?? '?'} window (the desktop follows the pane; Settings › Remote Desktop › When the pane is resized)` : null,
|
|
18
|
+
'gatewayhostname': (v, all) => v && !usesGateway(all) ? `the RD Gateway ${v}, which the file names but doesn't use (the profile's RD Gateway field takes it)` : null,
|
|
19
|
+
'promptcredentialonce': (v, all) => v === '0' && usesGateway(all) ? 'an account of its own for the gateway (pick a saved account as the profile\'s Gateway account)' : null,
|
|
20
|
+
'gatewaycredentialssource': (v, all) => (v === '1' || v === '5') && usesGateway(all) ? `a ${v === '1' ? 'smart card' : 'sign-in page'} at the gateway (not supported; it is signed in to with a user name and password)` : null,
|
|
21
|
+
'remoteapplicationmode': v => v === '1' ? 'RemoteApp (not supported; the whole desktop opens)' : null,
|
|
22
|
+
'alternate shell': v => v ? 'a program to start instead of the desktop (not supported)' : null,
|
|
23
|
+
'enablecredsspsupport': v => v === '0' ? 'sign-in without Network Level Authentication (it is always used)' : null,
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Whether the file connects through its gateway: it names one, and `gatewayusagemethod` doesn't say not to (0, or 4:
|
|
27
|
+
* never; 1 to 3: always, when a direct connection fails, by the user's defaults). mstsc always writes the method; a
|
|
28
|
+
* file written by hand that only names a gateway means it.
|
|
29
|
+
*/
|
|
30
|
+
function usesGateway(settings) {
|
|
31
|
+
return !!settings.get('gatewayhostname') && !['0', '4'].includes(settings.get('gatewayusagemethod') ?? '');
|
|
32
|
+
}
|
|
4
33
|
/** mstsc writes UTF-16LE with a byte order mark; other tools write UTF-8, with or without one. */
|
|
5
34
|
function decode(data) {
|
|
6
35
|
const b = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
|
|
@@ -37,11 +66,16 @@ function parseRdpFile(data) {
|
|
|
37
66
|
if (!host || !Number.isInteger(port) || port < 1 || port > 65535) {
|
|
38
67
|
return null;
|
|
39
68
|
}
|
|
69
|
+
const scale = Number(settings.get('desktopscalefactor'));
|
|
70
|
+
const ignored = [...settings].map(([key, value]) => NOTES[key]?.(value, settings) ?? null).filter((n) => !!n);
|
|
40
71
|
return {
|
|
41
72
|
host,
|
|
42
73
|
port,
|
|
43
74
|
...settings.get('username') ? { username: settings.get('username') } : {},
|
|
44
75
|
...settings.get('domain') ? { domain: settings.get('domain') } : {},
|
|
76
|
+
...Number.isFinite(scale) && scale >= 100 ? { sharpness: scale >= 150 ? 'retina' : 'standard' } : {},
|
|
77
|
+
...usesGateway(settings) ? { gateway: settings.get('gatewayhostname') } : {},
|
|
78
|
+
ignored: [...new Set(ignored)],
|
|
45
79
|
};
|
|
46
80
|
}
|
|
47
81
|
//# sourceMappingURL=rdpFile.js.map
|
package/dist/rdpFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rdpFile.js","sourceRoot":"","sources":["../src/rdpFile.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"rdpFile.js","sourceRoot":"","sources":["../src/rdpFile.ts"],"names":[],"mappings":";;AAsEA,oCA4BC;AA/ED,wHAAwH;AACxH,MAAM,KAAK,GAA+E;IACtF,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,IAAI;IACnL,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,IAAI;IACrG,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,IAAI;IACzF,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,0EAA0E,CAAC,CAAC,CAAC,IAAI;IACpH,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0EAA0E,CAAC,CAAC,CAAC,IAAI;IAC9G,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI;IACjF,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,IAAI;IACtF,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,IAAI;IACrF,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,IAAI;IACzE,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,IAAI;IACxF,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC5F,CAAC,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,8FAA8F,CAAC,CAAC,CAAC,IAAI;IACvL,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,kFAAkF,CAAC,CAAC,CAAC,IAAI;IACpK,sBAAsB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gGAAgG,CAAC,CAAC,CAAC,IAAI;IAC3K,0BAA0B,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,mFAAmF,CAAC,CAAC,CAAC,IAAI;IAC/N,uBAAuB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,IAAI;IACrG,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,IAAI;IAC9F,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,IAAI;CACrH,CAAA;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAE,QAA6B;IAC/C,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAA;AAC9G,CAAC;AAED,kGAAkG;AAClG,SAAS,MAAM,CAAE,IAAgB;IAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACpE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAClE,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,6FAA6F;IAC7F,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC7B,CAAC;AAED,qFAAqF;AACrF,SAAgB,YAAY,CAAE,IAAgB;IAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,IAAI,CAAC,EAAE,CAAC;YACJ,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;IAC/C,4EAA4E;IAC5E,MAAM,CAAC,GAAG,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvE,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACnH,8DAA8D;IAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;IAC9E,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAA;IACf,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACxD,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1H,OAAO;QACH,IAAI;QACJ,IAAI;QACJ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACzE,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACnE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,UAAmB,EAAE,CAAC,CAAC,CAAC,EAAE;QACtH,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QAC5E,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;KACjC,CAAA;AACL,CAAC"}
|
package/dist/rdpProfile.js
CHANGED
|
@@ -19,6 +19,7 @@ const help_1 = require("./help");
|
|
|
19
19
|
const accounts_1 = require("./accounts");
|
|
20
20
|
const accountForm_1 = require("./accountForm");
|
|
21
21
|
const desktops_1 = require("./desktops");
|
|
22
|
+
const gateway_1 = require("./gateway");
|
|
22
23
|
const signin_1 = require("./signin");
|
|
23
24
|
const ssh_1 = require("./ssh");
|
|
24
25
|
const targets_1 = require("./targets");
|
|
@@ -167,6 +168,17 @@ let RDPProfileSettingsComponent = class RDPProfileSettingsComponent {
|
|
|
167
168
|
<div class="mb-3" data-own-account>
|
|
168
169
|
<label>Domain</label>
|
|
169
170
|
<input class="form-control" name="domain" spellcheck="false" placeholder="Optional">
|
|
171
|
+
</div>
|
|
172
|
+
<div class="mb-3">
|
|
173
|
+
<label>RD Gateway</label>
|
|
174
|
+
<input class="form-control" name="gateway" spellcheck="false" placeholder="Optional: a Remote Desktop Gateway, e.g. rdgw.example.com">
|
|
175
|
+
<div class="text-danger small" data-for="gateway"></div>
|
|
176
|
+
<div class="text-muted small">The desktop is then reached through the gateway (HTTPS, port 443 unless given), and the address above is as the gateway sees it.</div>
|
|
177
|
+
</div>
|
|
178
|
+
<div class="mb-3" data-gateway-account>
|
|
179
|
+
<label>Gateway account</label>
|
|
180
|
+
<select class="form-control" name="gatewayAccount"></select>
|
|
181
|
+
<div class="text-muted small">A gateway that takes another account than the desktop: a saved account for it.</div>
|
|
170
182
|
</div>`;
|
|
171
183
|
const field = (name) => root.querySelector(`[name="${name}"]`);
|
|
172
184
|
field('address').value = o.host ? (0, desktopForm_1.formatAddress)(o.host, o.port || 3389) : '';
|
|
@@ -208,6 +220,26 @@ let RDPProfileSettingsComponent = class RDPProfileSettingsComponent {
|
|
|
208
220
|
ownAccount();
|
|
209
221
|
field('username').addEventListener('input', () => { o.username = field('username').value.trim(); });
|
|
210
222
|
field('domain').addEventListener('input', () => { o.domain = field('domain').value.trim(); });
|
|
223
|
+
// The gateway, and its account where that isn't the desktop's (offered once there is a gateway and a saved account).
|
|
224
|
+
const gateway = field('gateway');
|
|
225
|
+
const gatewayAccount = field('gatewayAccount');
|
|
226
|
+
gateway.value = o.gateway ?? '';
|
|
227
|
+
gatewayAccount.append(new Option('The same as the desktop\'s', ''), ...accounts.map(a => new Option(label(a), a.id)));
|
|
228
|
+
if (o.gatewayAccount && !accounts.some(a => a.id === o.gatewayAccount)) {
|
|
229
|
+
gatewayAccount.append(new Option('(a saved account that no longer exists)', o.gatewayAccount));
|
|
230
|
+
}
|
|
231
|
+
gatewayAccount.value = o.gatewayAccount ?? '';
|
|
232
|
+
const gatewayChanged = () => {
|
|
233
|
+
const text = gateway.value.trim();
|
|
234
|
+
root.querySelector('[data-for=gateway]').textContent = text && !(0, gateway_1.parseGateway)(text) ? 'A name or address, with :port if it isn\'t 443.' : '';
|
|
235
|
+
root.querySelector('[data-gateway-account]').hidden = !text || gatewayAccount.options.length < 2;
|
|
236
|
+
};
|
|
237
|
+
gateway.addEventListener('input', () => {
|
|
238
|
+
o.gateway = gateway.value.trim();
|
|
239
|
+
gatewayChanged();
|
|
240
|
+
});
|
|
241
|
+
gatewayAccount.addEventListener('change', () => { o.gatewayAccount = gatewayAccount.value; });
|
|
242
|
+
gatewayChanged();
|
|
211
243
|
const via = field('via');
|
|
212
244
|
via.addEventListener('change', () => { o.via = via.value; });
|
|
213
245
|
this.injector.get(tabby_core_1.ProfilesService).getProfiles().then(profiles => {
|
|
@@ -257,7 +289,7 @@ let RDPProfilesService = class RDPProfilesService extends tabby_core_1.QuickConn
|
|
|
257
289
|
this.name = 'Remote desktop (RDP)';
|
|
258
290
|
this.settingsComponent = RDPProfileSettingsComponent;
|
|
259
291
|
this.configDefaults = {
|
|
260
|
-
options: { host: '', port: 3389, kind: 'windows', username: '', domain: '', account: '', via: '' },
|
|
292
|
+
options: { host: '', port: 3389, kind: 'windows', username: '', domain: '', account: '', via: '', gateway: '', gatewayAccount: '' },
|
|
261
293
|
clearServiceMessagesOnConnect: false,
|
|
262
294
|
};
|
|
263
295
|
}
|
|
@@ -267,7 +299,7 @@ let RDPProfilesService = class RDPProfilesService extends tabby_core_1.QuickConn
|
|
|
267
299
|
type: targets_1.RDP_PROFILE_TYPE,
|
|
268
300
|
name: 'Remote desktop (RDP)',
|
|
269
301
|
icon: 'fas fa-desktop',
|
|
270
|
-
options: { host: '', port: 3389, kind: 'windows', username: '', domain: '', account: '', via: '' },
|
|
302
|
+
options: { host: '', port: 3389, kind: 'windows', username: '', domain: '', account: '', via: '', gateway: '', gatewayAccount: '' },
|
|
271
303
|
isBuiltin: true,
|
|
272
304
|
isTemplate: true,
|
|
273
305
|
}];
|
|
@@ -295,8 +327,11 @@ let RDPProfilesService = class RDPProfilesService extends tabby_core_1.QuickConn
|
|
|
295
327
|
return '';
|
|
296
328
|
}
|
|
297
329
|
const address = (0, desktopForm_1.formatAddress)(o.host, o.port || 3389);
|
|
298
|
-
const via =
|
|
299
|
-
|
|
330
|
+
const via = [
|
|
331
|
+
...o.gateway ? [`the gateway ${o.gateway}`] : [],
|
|
332
|
+
...o.via ? [(this.config.store.profiles ?? []).find((p) => p.id === o.via)?.name ?? 'an SSH profile'] : [],
|
|
333
|
+
];
|
|
334
|
+
return via.length ? `${address} via ${via.join(', via ')}` : address;
|
|
300
335
|
}
|
|
301
336
|
/** `[user@]host[:port]`, typed in Tabby's profile selector. */
|
|
302
337
|
quickConnect(query) {
|