tabby-rdp 0.3.0 → 0.3.2

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.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeFingerprint = normalizeFingerprint;
4
+ exports.serverFraming = serverFraming;
4
5
  exports.startRDCleanPathProxy = startRDCleanPathProxy;
5
6
  // RDCleanPath proxy for the IronRDP web client, running inside Tabby's renderer.
6
7
  // The WASM client talks WebSocket to this proxy; the proxy opens the upstream stream
@@ -224,6 +225,98 @@ function autologon() {
224
225
  return out;
225
226
  };
226
227
  }
228
+ /**
229
+ * Splits what the server sends into whole PDUs, one per WebSocket message. IronRDP's web client drops whatever else a
230
+ * message holds at the end of the connection sequence (it hands its session reader the bare stream, without the
231
+ * framer's leftovers): when GNOME sent the last activation PDU and the start of dynamic-channel negotiation in one
232
+ * read, the graphics channel never opened and the desktop stayed blank, typically after a reconnect. So messages
233
+ * follow PDU boundaries, not TLS records or SSH reads. Before RDP there can be CredSSP's DER messages and, with
234
+ * HYBRID_EX (`earlyAuth`), a four-byte Early User Authorization Result; after that, TPKT and fast-path. Returns a
235
+ * function from server data to the PDUs it completes; it throws on data that is none of these.
236
+ */
237
+ function serverFraming(earlyAuth) {
238
+ const MAX_DER = 16 * 1024 * 1024;
239
+ let rdp = false;
240
+ let pending = Buffer.alloc(0);
241
+ const invalid = () => new Error('invalid RDP server frame');
242
+ /** The length of the PDU at the start of `b`, 0 while its header is incomplete. */
243
+ const lengthOf = (b) => {
244
+ if (b.length < 2) {
245
+ return 0;
246
+ }
247
+ if (!rdp && b[0] === 0x30) {
248
+ if (!(b[1] & 0x80)) {
249
+ return 2 + b[1];
250
+ }
251
+ const octets = b[1] & 0x7f;
252
+ if (octets === 0 || octets > 4) {
253
+ throw invalid();
254
+ }
255
+ if (b.length < 2 + octets) {
256
+ return 0;
257
+ }
258
+ const content = b.readUIntBE(2, octets);
259
+ if (content > MAX_DER) {
260
+ throw invalid();
261
+ }
262
+ return 2 + octets + content;
263
+ }
264
+ if (!rdp && earlyAuth) {
265
+ return 4;
266
+ }
267
+ if (b[0] === 0x03) {
268
+ if (b[1] !== 0) {
269
+ throw invalid();
270
+ }
271
+ if (b.length < 4) {
272
+ return 0;
273
+ }
274
+ const length = b.readUInt16BE(2);
275
+ if (length < 4) {
276
+ throw invalid();
277
+ }
278
+ return length;
279
+ }
280
+ if (rdp && !(b[0] & 0x03)) {
281
+ if (!(b[1] & 0x80)) {
282
+ if (b[1] < 2) {
283
+ throw invalid();
284
+ }
285
+ return b[1];
286
+ }
287
+ if (b.length < 3) {
288
+ return 0;
289
+ }
290
+ const length = ((b[1] & 0x7f) << 8) | b[2];
291
+ if (length < 3) {
292
+ throw invalid();
293
+ }
294
+ return length;
295
+ }
296
+ throw invalid();
297
+ };
298
+ return data => {
299
+ pending = pending.length ? Buffer.concat([pending, data]) : data;
300
+ const out = [];
301
+ for (;;) {
302
+ const length = lengthOf(pending);
303
+ if (!length || pending.length < length) {
304
+ break;
305
+ }
306
+ if (!rdp && earlyAuth && pending[0] !== 0x30) {
307
+ earlyAuth = false;
308
+ }
309
+ else if (pending[0] === 0x03) {
310
+ rdp = true;
311
+ }
312
+ out.push(pending.subarray(0, length));
313
+ pending = pending.subarray(length);
314
+ }
315
+ // A copy of the rest: it would otherwise keep the whole chunk it came in alive.
316
+ pending = Buffer.from(pending);
317
+ return out;
318
+ };
319
+ }
227
320
  // ---- proxy -------------------------------------------------------------------------------------
228
321
  /**
229
322
  * TLS for servers whose certificate only allows key encipherment, like Windows' self-signed RDP certificate.
@@ -344,9 +437,23 @@ async function startRDCleanPathProxy(openUpstream, checkCertificate, log = () =>
344
437
  await checkCertificate(fingerprintOf(chain[0]));
345
438
  ws.send(encodeResponse(x224, chain, req.destination));
346
439
  stage = 'relay';
440
+ // PROTOCOL_HYBRID_EX in the server's negotiation response: an Early User Authorization Result follows CredSSP.
441
+ const frames = serverFraming(x224.length >= 19 && x224[11] === 0x02 && x224.readUInt32LE(15) === 8);
347
442
  upstream.on('data', (d) => {
348
443
  stats.bytesIn += d.length;
349
- ws.send(d);
444
+ let pdus;
445
+ try {
446
+ pdus = frames(d);
447
+ }
448
+ catch (e) {
449
+ log(`upstream: ${e.message}`);
450
+ ws.close();
451
+ upstream?.destroy();
452
+ return;
453
+ }
454
+ for (const pdu of pdus) {
455
+ ws.send(pdu);
456
+ }
350
457
  });
351
458
  upstream.on('close', () => ws.close());
352
459
  upstream.on('error', (e) => { log(`upstream error: ${e.message}`); ws.close(); });
@@ -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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"}
@@ -6,7 +6,8 @@ const path = require("path");
6
6
  const rdcleanpath_1 = require("./rdcleanpath");
7
7
  // Runs as the SSH user; needs no root. Prints exactly one `RD_OK port=N user=U pass=P cert=SHA256`,
8
8
  // `RD_XRDP port=N user=U` (no GNOME, but xrdp), `RD_WINDOWS` (a Windows host's POSIX sh) or `RD_ERR <reason>` line;
9
- // with RD_OK, also an RD_XRDP line when xrdp runs besides GNOME.
9
+ // with RD_OK, also an RD_XRDP line when xrdp runs besides GNOME, `RD_CLIENTS N`, the clients connected already, and
10
+ // `RD_TAKEN_OVER <client> <seconds ago>` after a recent take-over.
10
11
  // The RDP password is generated once per remote user and kept in a 0600 file; grd reads credentials only
11
12
  // at startup, so grd is restarted only when its configuration actually changes (that drops live sessions).
12
13
  // (grdctl takes the credentials as arguments, so they are briefly visible in the remote's process list.)
@@ -204,6 +205,7 @@ if [ -z "$SHELL_PID" ]; then
204
205
  systemd-run --user --unit=tabby-headless-shell --setenv=XDG_SESSION_TYPE=wayland \
205
206
  --setenv=XDG_CURRENT_DESKTOP=$DESK --setenv=XDG_SESSION_DESKTOP=$SESS --setenv=DESKTOP_SESSION=$SESS \
206
207
  --setenv=GNOME_SHELL_SESSION_MODE=$SESS --setenv=TABBY_RD_SESSION=$SESSION_VERSION \
208
+ -p "ExecStopPost=/bin/sh -c 'rm -f $XDG_RUNTIME_DIR/systemd/user/gnome-session-x11-services-ready.target $XDG_RUNTIME_DIR/systemd/user/tabby-gsd-xsettings.service; systemctl --user --no-block stop tabby-gsd-xsettings.service; systemctl --user unset-environment DISPLAY XAUTHORITY'" \
207
209
  gnome-shell --headless >/dev/null 2>&1 \
208
210
  || fail "could not start a headless GNOME Shell"
209
211
  i=0; while [ $i -lt 40 ] && ! busctl --user status org.gnome.Mutter.RemoteDesktop >/dev/null 2>&1; do sleep 0.25; i=$((i+1)); done
@@ -217,6 +219,51 @@ dbus-update-activation-environment --systemd WAYLAND_DISPLAY=${"$"}{WL:-wayland-
217
219
  XDG_CURRENT_DESKTOP=$DESK XDG_SESSION_DESKTOP=$SESS DESKTOP_SESSION=$SESS >/dev/null 2>&1
218
220
  # Mark D-Bus-activated apps as part of this session too (not in systemd's environment: user services would inherit it).
219
221
  dbus-update-activation-environment TABBY_RD_SESSION=$SESSION_VERSION >/dev/null 2>&1
222
+ # X11 apps. The shell reserves an X display at startup and starts XWayland when an X11 app connects to it; apps find it
223
+ # through DISPLAY, which gnome-session would pass on: do that here (the lowest of its sockets, which the shell holds, or
224
+ # its XWayland once running; and the shell's X authority).
225
+ PIDS=" $SHELL_PID $(pgrep -P "$SHELL_PID" -x Xwayland | tr '\n' ' ')"
226
+ XD=$(ss -xlpH 2>/dev/null | awk -v pids="$PIDS" '$5 ~ /^\/tmp\/\.X11-unix\/X[0-9]+$/ && match($0, /pid=[0-9]+,/) && index(pids, " " substr($0, RSTART + 4, RLENGTH - 5) " ") { sub(/.*X/, "", $5); print $5 }' | sort -n | head -1)
227
+ XA=$(ls -t "$XDG_RUNTIME_DIR"/.mutter-Xwaylandauth.* 2>/dev/null | head -1)
228
+ if [ -n "$XD" ]; then
229
+ dbus-update-activation-environment --systemd DISPLAY=:$XD ${"$"}{XA:+XAUTHORITY=$XA} >/dev/null 2>&1
230
+ fi
231
+ # Once XWayland is up, the shell starts gnome-session's X11 services (gnome-session-x11-services-ready.target), and gives
232
+ # up on X11 if that fails, which it does without gnome-session. A runtime unit of that name (in $XDG_RUNTIME_DIR, gone at
233
+ # logout; removed when the shell stops) stands in for it, with GNOME's X11 settings daemon, as a session would start it.
234
+ U="$XDG_RUNTIME_DIR/systemd/user"
235
+ X11_UNITS="[Unit]
236
+ Description=X11 services for tabby-rdp's headless GNOME Shell
237
+ Wants=tabby-gsd-xsettings.service
238
+ --
239
+ [Unit]
240
+ Description=GNOME XSettings (tabby-rdp's headless GNOME Shell)
241
+ Before=gnome-session-x11-services-ready.target
242
+ [Service]
243
+ ExecStart=/usr/libexec/gsd-xsettings
244
+ TimeoutStopSec=5"
245
+ if [ -n "$XD" ] && [ -x /usr/libexec/gsd-xsettings ] && [ -n "$XDG_RUNTIME_DIR" ]; then
246
+ mkdir -p "$U"
247
+ if [ "$(cat "$U/gnome-session-x11-services-ready.target" 2>/dev/null; echo --; cat "$U/tabby-gsd-xsettings.service" 2>/dev/null)" != "$X11_UNITS" ]; then
248
+ printf '%s\n' "$X11_UNITS" | sed '/^--$/,$d' > "$U/gnome-session-x11-services-ready.target"
249
+ printf '%s\n' "$X11_UNITS" | sed '1,/^--$/d' > "$U/tabby-gsd-xsettings.service"
250
+ systemctl --user daemon-reload >/dev/null 2>&1
251
+ # A shell from before this: its XWayland, if one runs, started without these and has no X11 display (no X11
252
+ # app works there). End it; the shell starts a new one for the next X11 app.
253
+ pkill -P "$SHELL_PID" -x Xwayland 2>/dev/null
254
+ fi
255
+ fi
256
+ # GNOME's settings daemons for the session (keyboard settings, media keys and custom shortcuts, accessibility, sound,
257
+ # disk space and cache upkeep), which gnome-session would start; for as long as the shell runs. Not power (it would
258
+ # suspend the machine when the session looks idle), sharing (it manages GNOME Remote Desktop), or the ones for local
259
+ # hardware (tablets, smartcards, radios, printers, color profiles).
260
+ for d in keyboard media-keys a11y-settings sound housekeeping; do
261
+ [ -x /usr/libexec/gsd-$d ] || continue
262
+ systemctl --user is-active -q tabby-gsd-$d && continue
263
+ systemctl --user reset-failed tabby-gsd-$d >/dev/null 2>&1
264
+ systemd-run --user --unit=tabby-gsd-$d --collect -p BindsTo=tabby-headless-shell.service -p After=tabby-headless-shell.service \
265
+ /usr/libexec/gsd-$d >/dev/null 2>&1
266
+ done
220
267
  # Also what gnome-session does: bring up graphical-session.target, which the GNOME portal requires. Without it the
221
268
  # portal service hangs, and every GTK app waits 25 seconds for it before showing a window. Held for as long as the
222
269
  # shell runs (the target can't be started directly).
@@ -240,6 +287,26 @@ PORT=$(grdctl --headless status 2>/dev/null | awk '/Port:/ { print $2; exit }')
240
287
  PORT=${"$"}{PORT:-3389}
241
288
  i=0; while [ $i -lt 40 ] && ! ss -ltnH "sport = :$PORT" 2>/dev/null | grep -q .; do sleep 0.25; i=$((i+1)); done
242
289
  ss -ltnH "sport = :$PORT" 2>/dev/null | grep -q . || fail "nothing is listening on port $PORT"
290
+ # Clients connected already (another Tabby window or computer): grd gives each one a screen of its own, so the plugin
291
+ # asks. Taking over (TRD_TAKEOVER=1) disconnects them, as Windows does: a restart of grd, which leaves the session and
292
+ # its apps running.
293
+ # (Counted again for up to 2 s: a connection of the plugin's own that is being replaced, a reconnect, is closing.)
294
+ clients () { ss -tnH state established "( sport = :$PORT )" 2>/dev/null | grep -c .; }
295
+ CLIENTS=$(clients)
296
+ i=0; while [ "$CLIENTS" -gt 0 ] && [ $i -lt 8 ]; do sleep 0.25; CLIENTS=$(clients); i=$((i+1)); done
297
+ if [ "$CLIENTS" -gt 0 ] && [ "${"$"}{TRD_TAKEOVER:-0}" = 1 ]; then
298
+ systemctl --user restart gnome-remote-desktop-headless.service >/dev/null 2>&1 || fail "could not restart gnome-remote-desktop-headless"
299
+ i=0; while [ $i -lt 40 ] && ! ss -ltnH "sport = :$PORT" 2>/dev/null | grep -q .; do sleep 0.25; i=$((i+1)); done
300
+ CLIENTS=0
301
+ # Who took over, and when: the client that gave way reconnects by itself, possibly before this one is connected.
302
+ printf '%s %s\n' "$TRD_CLIENT" "$(date +%s)" > "$D/taken-over"
303
+ fi
304
+ say "RD_CLIENTS $CLIENTS"
305
+ if [ -s "$D/taken-over" ]; then
306
+ read -r BY AT < "$D/taken-over"
307
+ AGE=$(( $(date +%s) - ${"$"}{AT:-0} ))
308
+ [ "$AGE" -lt 120 ] && say "RD_TAKEN_OVER $BY $AGE"
309
+ fi
243
310
  # xrdp besides GNOME (on a port of its own; on grd's, one of them couldn't listen): offered as another desktop.
244
311
  [ -z "$XRDP_PORT" ] || [ "$XRDP_PORT" = "$PORT" ] || say "RD_XRDP port=$XRDP_PORT user=$(id -un)"
245
312
  say "RD_OK port=$PORT user=$RD_USER pass=$RD_PASS cert=$CERT"
@@ -266,8 +333,10 @@ async function isWindows(target) {
266
333
  * reports xrdp's port instead, when xrdp runs there; on a Windows host (OpenSSH Server on Windows), Windows' own RDP
267
334
  * server, which signs in with the Windows account (the SSH user, to start with).
268
335
  */
269
- async function prepareRemoteDesktop(target, desk, backend = 'native') {
270
- const script = `TRD_DESK=${desk ? 1 : 0}\nTRD_BACKEND=${backend === 'tmux' ? 'tmux' : 'native'}\n` +
336
+ async function prepareRemoteDesktop(target, desk, backend = 'native', client = '', takeOver = false) {
337
+ // client: which pane asks (letters and digits), for the note a take-over leaves on the host (RD_TAKEN_OVER).
338
+ client = client.replace(/[^A-Za-z0-9]/g, '') || 'none';
339
+ const script = `TRD_DESK=${desk ? 1 : 0}\nTRD_BACKEND=${backend === 'tmux' ? 'tmux' : 'native'}\nTRD_TAKEOVER=${takeOver ? 1 : 0}\nTRD_CLIENT=${client}\n` +
271
340
  SETUP_SCRIPT.replace('@@TRD_PTY_PY@@', trdPty().trimEnd());
272
341
  const out = await target.exec('sh -s', script);
273
342
  // Without a sh, Windows prints its complaint on stderr, which exec() doesn't return: nothing came back. Only then is
@@ -287,7 +356,12 @@ async function prepareRemoteDesktop(target, desk, backend = 'native') {
287
356
  if (!certificate) {
288
357
  throw new Error(`Remote setup reported no usable certificate fingerprint (${ok[4]})`);
289
358
  }
290
- return { kind: 'gnome', port: Number(ok[1]), username: ok[2], password: ok[3], certificate, xrdpPort: xrdp ? Number(xrdp[1]) : undefined, xrdpUser: xrdp?.[2] };
359
+ const clients = Number(/^RD_CLIENTS (\d+)$/m.exec(out)?.[1] ?? 0);
360
+ const taken = /^RD_TAKEN_OVER (\S+) (\d+)$/m.exec(out);
361
+ return {
362
+ kind: 'gnome', port: Number(ok[1]), username: ok[2], password: ok[3], certificate, xrdpPort: xrdp ? Number(xrdp[1]) : undefined, xrdpUser: xrdp?.[2],
363
+ clients, takenOver: taken && taken[1] !== client ? Number(taken[2]) : undefined,
364
+ };
291
365
  }
292
366
  if (xrdp) {
293
367
  // xrdp makes its own certificate: trusted on first use, like a desktop behind the host.
@@ -1 +1 @@
1
- {"version":3,"file":"remoteSetup.js","sourceRoot":"","sources":["../src/remoteSetup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remoteSetup.js","sourceRoot":"","sources":["../src/remoteSetup.ts"],"names":[],"mappings":"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"}
@@ -17,16 +17,20 @@ const desktop_service_1 = require("./desktop.service");
17
17
  const desktops_1 = require("./desktops");
18
18
  const osd_1 = require("./osd");
19
19
  const help_1 = require("./help");
20
+ const updates_1 = require("./updates");
20
21
  const targets_1 = require("./targets");
21
22
  const REPO = 'https://github.com/meanaverage/tabby-rdp';
22
- const esc = (s) => String(s ?? '').replace(/[&<>"']/g, c => `&#${c.charCodeAt(0)};`);
23
- const k = (s) => `<kbd>${esc(s)}</kbd>`;
23
+ const k = (s) => `<kbd>${(0, help_1.esc)(s)}</kbd>`;
24
24
  const STYLE = `
25
25
  .trd-settings { display: block; }
26
26
  .trd-settings h3 { margin-bottom: 4px; }
27
27
  .trd-settings .trd-lead { margin-bottom: 18px; opacity: 0.75; }
28
28
  .trd-settings .trd-links { white-space: nowrap; }
29
29
  .trd-settings .trd-lead a { margin-left: 10px; }
30
+ .trd-settings .trd-update { display: flex; gap: 10px; align-items: center; margin-bottom: 18px; padding: 10px 12px; border-radius: 6px;
31
+ border: 1px solid rgba(80, 150, 255, 0.45); background: rgba(80, 150, 255, 0.1); }
32
+ .trd-settings .trd-update > div { flex: auto; }
33
+ .trd-settings .trd-update:empty { display: none; }
30
34
  .trd-settings section { margin-bottom: 28px; scroll-margin-top: 12px; }
31
35
  .trd-settings section > h4 { font-size: 15px; margin-bottom: 10px; }
32
36
  .trd-settings .trd-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; }
@@ -110,7 +114,7 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
110
114
  });
111
115
  scale.observe(frame);
112
116
  this.subscriptions.push({ unsubscribe: () => scale.disconnect() });
113
- this.subscriptions.push(this.config.changed$.subscribe(() => this.refresh()), this.desktop.changed$.subscribe(() => this.refresh()), this.help.show$.subscribe(({ topic, entry }) => setTimeout(() => this.reveal(topic, entry))));
117
+ this.subscriptions.push(this.config.changed$.subscribe(() => this.refresh()), this.desktop.changed$.subscribe(() => this.refresh()), this.help.show$.subscribe(({ topic, entry }) => setTimeout(() => this.reveal(topic, entry))), this.injector.get(updates_1.UpdateCheck).changed$.subscribe(() => this.refresh()));
114
118
  const pending = this.help.pending;
115
119
  this.help.pending = null;
116
120
  if (pending) {
@@ -136,8 +140,9 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
136
140
  this.root.innerHTML = `
137
141
  <h3>Remote Desktop</h3>
138
142
  <div class="trd-lead">Linux and Windows desktops in Tabby tabs, through SSH or directly.
139
- ${version ? `<span>tabby-rdp ${esc(version)}</span>` : ''}
143
+ ${version ? `<span>tabby-rdp ${(0, help_1.esc)(version)}</span>` : ''}
140
144
  <span class="trd-links"><a href="#" data-link="${REPO}#readme">Guide</a><a href="#" data-link="${REPO}/issues">Report a problem</a></span></div>
145
+ <div class="trd-update" data-update></div>
141
146
 
142
147
  <section data-topic="start">
143
148
  <h4>Getting started</h4>
@@ -195,7 +200,22 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
195
200
  ${this.toggleLine('h264', 'Video decoding (H.264)', 'Decodes what the remote sends as video, hardware-accelerated where available. Applies on the next connection.')}
196
201
  ${this.toggleLine('connectionStatus', 'Show connection status', 'A small line in the desktop\'s corner: throughput, frames per second, round trip, and how it\'s connected.')}
197
202
  ${mac ? this.toggleLine('macShortcuts', 'Mac-style shortcuts', 'Use ⌘ as Ctrl on the desktop, so ⌘C copies and ⌘V pastes. Tap ⌘ on its own for the Windows key. When off, ⌘ is always the Windows key.') : ''}
203
+ ${this.toggleLine('checkUpdates', 'Tell me about new versions', 'Once a day, asks npm (registry.npmjs.org) for the latest tabby-rdp, and says so here and in the menus when there is one. Nothing is sent but the request. Tabby itself shows plugin upgrades only on its Plugins page.')}
198
204
  ${this.toggleLine('discoverVMs', 'Find virtual machines on SSH hosts', 'Lists the host\'s libvirt VMs that have a desktop (RDP answering, or Windows and shut off) in its tab\'s menu, ready to open or start. Read-only: it runs virsh as you there, at most once a minute.')}
205
+ <div class="form-line">
206
+ <div class="header">
207
+ <div class="title">Shut down VMs it started</div>
208
+ <div class="description">A VM started to open its desktop goes back off after this long with no
209
+ desktop open, also once Tabby is closed: a small watcher on the SSH host sees to it. VMs that
210
+ were already running are left alone.</div>
211
+ </div>
212
+ <select class="form-control" data-setting="shutDownIdle">
213
+ <option value="0">Never</option>
214
+ <option value="5">After 5 minutes</option>
215
+ <option value="15">After 15 minutes</option>
216
+ <option value="60">After an hour</option>
217
+ </select>
218
+ </div>
199
219
  ${this.toggleLine('desk', 'desk: bring the console along', `Type <code>desk</code> in an SSH console to show that same shell on the desktop. Installs a small helper and a login line on GNOME hosts the next time a desktop opens there; off removes them.`)}
200
220
  <div class="form-line">
201
221
  <div class="header">
@@ -223,7 +243,7 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
223
243
  </div>
224
244
  <div class="form-line">
225
245
  <div class="header"><div class="title">Font</div></div>
226
- <select class="form-control" data-osd="font">${Object.entries(osd_1.OSD_FONTS).map(([id, f]) => `<option value="${id}">${esc(f.label)}</option>`).join('')}</select>
246
+ <select class="form-control" data-osd="font">${Object.entries(osd_1.OSD_FONTS).map(([id, f]) => `<option value="${id}">${(0, help_1.esc)(f.label)}</option>`).join('')}</select>
227
247
  </div>
228
248
  <div class="form-line">
229
249
  <div class="header"><div class="title">Size</div><div class="description">Smaller in a narrow pane, so a name fits.</div></div>
@@ -279,7 +299,7 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
279
299
  <section data-topic="troubleshooting">
280
300
  <h4>Troubleshooting</h4>
281
301
  <div data-list="troubleshooting">${help_1.TROUBLESHOOTING.map(e => `
282
- <details data-entry="${esc(e.id)}"><summary>${esc(e.title)}</summary><div>${e.body}</div></details>`).join('')}
302
+ <details data-entry="${(0, help_1.esc)(e.id)}"><summary>${(0, help_1.esc)(e.title)}</summary><div>${e.body}</div></details>`).join('')}
283
303
  </div>
284
304
  <h4 style="margin-top: 18px">Open desktops</h4>
285
305
  <div class="trd-list" data-list="sessions"></div>
@@ -318,7 +338,7 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
318
338
  toggleLine(key, title, description) {
319
339
  return `
320
340
  <div class="form-line">
321
- <div class="header"><div class="title">${esc(title)}</div><div class="description">${description}</div></div>
341
+ <div class="header"><div class="title">${(0, help_1.esc)(title)}</div><div class="description">${description}</div></div>
322
342
  <div class="form-check form-switch"><input type="checkbox" class="form-check-input" data-setting="${key}"></div>
323
343
  </div>`;
324
344
  }
@@ -353,6 +373,15 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
353
373
  el.value = String(settings[key]);
354
374
  }
355
375
  });
376
+ // A newer version: say so at the top, with where to get it.
377
+ const updates = this.injector.get(updates_1.UpdateCheck);
378
+ const banner = this.root.querySelector('[data-update]');
379
+ if (banner) {
380
+ banner.innerHTML = updates.available ? `<div><b>tabby-rdp ${(0, help_1.esc)(updates.available)} is available.</b> You have ${(0, help_1.esc)((0, updates_1.installedVersion)())}.</div>
381
+ <button class="btn btn-primary btn-sm" data-upgrade>Upgrade…</button><button class="btn btn-link btn-sm" data-whatsnew>What's new</button>` : '';
382
+ banner.querySelector('[data-upgrade]')?.addEventListener('click', () => updates.upgrade());
383
+ banner.querySelector('[data-whatsnew]')?.addEventListener('click', () => updates.whatsNew());
384
+ }
356
385
  const osd = settings.osd;
357
386
  this.root.querySelectorAll('[data-osd]').forEach(el => {
358
387
  const key = el.dataset.osd;
@@ -402,8 +431,8 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
402
431
  const desktops = this.desktop.configuredDesktops();
403
432
  list.replaceChildren(...desktops.map((d, i) => {
404
433
  const address = `${d.host ?? '127.0.0.1'}:${d.port ?? 3389}`;
405
- const wake = d.wake?.vm ? ` · starts VM ${esc(d.wake.vm)}` : d.wake?.mac ? ` · wakes ${esc(d.wake.mac)}` : '';
406
- return this.row(esc(d.name ?? address), `${esc(address)} behind ${esc(d.via)} · ${esc(d.kind ?? 'windows')}${d.username ? ` · ${esc(d.username)}` : ''}${wake}`, [
434
+ const wake = d.wake?.vm ? ` · starts VM ${(0, help_1.esc)(d.wake.vm)}` : d.wake?.mac ? ` · wakes ${(0, help_1.esc)(d.wake.mac)}` : '';
435
+ return this.row((0, help_1.esc)(d.name ?? address), `${(0, help_1.esc)(address)} behind ${(0, help_1.esc)(d.via)} · ${(0, help_1.esc)(d.kind ?? 'windows')}${d.username ? ` · ${(0, help_1.esc)(d.username)}` : ''}${wake}`, [
407
436
  { label: 'Remove…', danger: true, run: () => { this.desktop.confirmRemoveDesktop(i); } },
408
437
  ]);
409
438
  }), this.empty(desktops.length
@@ -418,8 +447,8 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
418
447
  const entries = this.desktop.trustedCertificates();
419
448
  list.replaceChildren(...entries.map(({ desktop, sha256 }) => {
420
449
  const [who, address] = desktop.includes('#') ? desktop.split('#', 2) : [desktop, ''];
421
- const title = address ? who === desktops_1.DIRECT_KEY ? `${esc(address)} (direct)` : `${esc(address)} behind ${esc(who)}` : esc(who);
422
- return this.row(title, `SHA-256 ${esc(sha256.slice(0, 23))}…`, [
450
+ const title = address ? who === desktops_1.DIRECT_KEY ? `${(0, help_1.esc)(address)} (direct)` : `${(0, help_1.esc)(address)} behind ${(0, help_1.esc)(who)}` : (0, help_1.esc)(who);
451
+ return this.row(title, `SHA-256 ${(0, help_1.esc)(sha256.slice(0, 23))}…`, [
423
452
  { label: 'Forget', run: () => this.desktop.forgetCertificate(desktop) },
424
453
  ]);
425
454
  }), this.empty(entries.length
@@ -432,7 +461,7 @@ let RemoteDesktopSettingsComponent = class RemoteDesktopSettingsComponent {
432
461
  return;
433
462
  }
434
463
  const sessions = this.desktop.sessionSummaries();
435
- list.replaceChildren(...sessions.map(s => this.row(esc(s.name), `${s.where ? `via ${esc(s.where)} · ` : ''}${esc(s.state)}`, [
464
+ list.replaceChildren(...sessions.map(s => this.row((0, help_1.esc)(s.name), `${s.where ? `via ${(0, help_1.esc)(s.where)} · ` : ''}${(0, help_1.esc)(s.state)}`, [
436
465
  { label: 'Copy log', run: () => this.copyLog(s.name, s.log) },
437
466
  ])), ...sessions.length ? [] : [this.empty('No desktop is open. Each open desktop\'s connection log can be copied from here, for a bug report.')]);
438
467
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settingsPage.js","sourceRoot":"","sources":["../src/settingsPage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settingsPage.js","sourceRoot":"","sources":["../src/settingsPage.ts"],"names":[],"mappings":"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"}