Commit Graph
26 Commits
Author SHA1 Message Date
ZacharyZcR 60109be10f route desktop guacd calls to the connected remote server (#1122)
resolveConnectionOrigin() pins RDP/VNC/Telnet to "remote" because the embedded
desktop backend does not bundle guacd, and the Guacamole websocket already
follows that. The status check and both token calls did not: they use the shared
authApi, which in Electron is hard-coded to the embedded backend.

So the desktop app asked the backend without guacd whether guacd was available,
got "disconnected", and refused to connect — while the connected server it would
actually have used reports it as connected and serves the same host fine from the
web client.

Send those three calls through a remote-origin instance in Electron, alongside
the existing file-manager, tunnel and stats ones.

Closes Termix-SSH/Support#1043
2026-07-28 01:49:05 +08:00
ZacharyZcR 1d26f820c6 honour per-host recording flags and explain a missing recording (#1121)
The session recording section offers a recording path, a filename template and
four content toggles, but the backend overwrote five of the six on every
connection. A host could set none of them and get no indication why.

Location and filename genuinely are not the host's to choose — recordings are
indexed by them for playback and the backend refuses to read outside its
recordings directory — so drop those two inputs rather than keep pretending they
apply. The content flags are a host-level decision, so default them instead of
forcing them.

That still leaves the reported case, where guacd writes the file somewhere the
backend cannot see it. The warning now reports both paths and names the two env
vars that align them, which is otherwise guesswork for a split-container setup.

Closes Termix-SSH/Support#1041
2026-07-28 01:49:01 +08:00
ZacharyZcR 94a072b76d apply the configured RDP resolution to the session (#1120)
The host editor stores width and height in guacamoleConfig, and the backend
passes them to guacd in the connection token. The renderer then appends its own
width and height query parameters measured from the container, which take
precedence, so a configured resolution never reached the session — only dpi did,
because that was the one display field GuacamoleApp read back.

Pass the configured width and height alongside dpi, and skip the container-driven
sendSize on connect and on resize when a resolution is pinned. rescaleDisplay
still fits the fixed display into the available space.

Closes Termix-SSH/Support#1039
2026-07-28 01:48:57 +08:00
ZacharyZcR 6bdd38159c stop read-only shared hosts from being dragged into folders (#1119)
Shared hosts hide their edit, share and delete actions based on the recipient's
permission level, but the sidebar row stays draggable regardless. Dropping one on
a folder issues a bulk folder update the server rejects, so a recipient without
edit rights gets a failure toast for an action the UI offered them.

Gate draggable on canEditHost, and skip hosts the recipient cannot edit in the
move handler so a mixed selection moves what it can instead of failing whole.

Closes Termix-SSH/Support#1011
2026-07-28 01:48:52 +08:00
ZacharyZcR ac5da581e2 refuse to start with an empty database when data exists elsewhere (#1118)
When the data directory holds no database, startup treats it as a first run and
silently creates an empty one. A deployment that loses DATA_DIR — an .env file
the service no longer loads, a volume that did not mount — lands in exactly that
state, so the user is asked to register an admin account again while the real
database sits untouched one directory over. It is indistinguishable from the
upgrade having deleted everything.

Check the known data locations before creating a new database and refuse to
start when one of them already holds a database, naming both directories.
ALLOW_EMPTY_DATA_DIR=true starts anyway for anyone deliberately starting over.

This matches how a failed decryption already behaves: it throws rather than
falling back to an empty database.

Closes Termix-SSH/Support#1006
2026-07-28 01:48:48 +08:00
ZacharyZcR 384abebe37 fix OIDC login with unverifiable ID tokens (#1117)
verifyOIDCToken passed the raw id_token straight to jose's jwtVerify, which
throws JWSInvalid when the token is not a three-segment compact JWS. Authentik
issues an encrypted JWE id_token when the provider has an encryption key set,
so the callback threw and every OIDC login failed with 'Invalid Compact JWS'.

2.5.0 hid this behind a catch-all that decoded the unverified payload; removing
that fallback fixed the trust bug but turned the pre-existing verification
failure into a hard login failure.

Check the segment count before verifying and raise a distinct
OIDCTokenFormatError, which the callback treats as 'no usable claims here' and
falls through to the userinfo endpoint. Signature and claim failures still
reject the login.

Fixes Termix-SSH/Support#1016
Fixes Termix-SSH/Support#1018
2026-07-28 01:48:44 +08:00
ZacharyZcR 760c7b86c3 fix: expose jump tunnels to guacd (#1115) 2026-07-28 01:48:40 +08:00
ZacharyZcR 066d7e77b3 fix: forward Android hardware keyboard keys (#1114) 2026-07-28 01:48:35 +08:00
ZacharyZcR 8743e6daa2 fix: support Tailscale auth in tmux monitor (#1113) 2026-07-28 01:48:31 +08:00
ZacharyZcR 3f33961657 fix: keep localhost database export same-origin (#1112) 2026-07-28 01:48:27 +08:00
ZacharyZcR 50372cb25f fix: export repository user record (#1111) 2026-07-28 01:48:23 +08:00
ZacharyZcR 9dd81cf813 fix: recognize Windows terminal Tab events (#1109)
* fix: recognize Windows terminal Tab events

* style: format terminal key event test
2026-07-28 01:48:19 +08:00
ZacharyZcR 5258edf7a1 fix: persist host command history setting (#1107) 2026-07-28 01:48:15 +08:00
ZacharyZcR c48bc478f8 fix database persistence during container shutdown (#1104) 2026-07-28 01:48:11 +08:00
ZacharyZcR 697e363b74 fix file manager navigation after permission errors (#1103) 2026-07-28 01:48:07 +08:00
ZacharyZcR 6866176778 fix OIDC verification for JWKs without alg (#1102) 2026-07-28 01:48:03 +08:00
ZacharyZcR cf827f9a9c fix outbound DNS lookup callback shape (#1101) 2026-07-28 01:47:58 +08:00
ZacharyZcR 1139f17319 fix SSH login alert delivery (#1100) 2026-07-28 01:47:54 +08:00
ZacharyZcR 6d790b8d61 fix snippet execution result handling (#1099) 2026-07-28 01:47:50 +08:00
ZacharyZcR 9c61ae1ac4 fix: deduplicate shared hosts (#1098) 2026-07-28 01:47:46 +08:00
ZacharyZcR 5c30c5862f fix: preserve WoL broadcast address (#1097) 2026-07-28 01:47:42 +08:00
ZacharyZcR c12fc19c76 fix: allow sharing empty folders (#1096) 2026-07-28 01:47:38 +08:00
ZacharyZcR 7c397e3f8a fix: preserve architecture in unpacked ASAR path (#1094) 2026-07-28 01:47:33 +08:00
ZacharyZcR fdeb79e9e9 fix: centralize outbound address validation (#1093) 2026-07-28 01:47:29 +08:00
ZacharyZcR 113eb5619c fix: preserve remote sync references (#1092) 2026-07-28 01:47:25 +08:00
ZacharyZcR 38e128bd16 Revert "feat: add Open File Manager to tab right-click menu (#1046)" (#1050)
This reverts commit 0712fdd731.
2026-07-14 01:36:12 +08:00