Dave Kempe
06250475bd
Docker: fix FreeRDP plugin name (guac-common-svc.so symlink) and deterministic paths
...
FreeRDP loads plugins by short name ('guac-common-svc') which resolves
to 'guac-common-svc.so', but guacamole-server installs it as
'libguac-common-svc-client.so'. Create symlink with expected name.
Also: removed find-based plugin discovery, use deterministic paths.
Closes #87 .
v1.0.1
2026-03-31 06:54:09 +11:00
Dave Kempe
33105d9670
Docs: RPM is build-from-source only, not pre-built
2026-03-30 21:35:06 +11:00
Dave Kempe
9f123cb331
v1.0.1: field name fix, centered login, Docker plugin fix
...
- Fix enable_desktop_composition field name mismatch in address book JS
- Center login panel on index page
- Docker: improved FreeRDP plugin discovery with debug output (#87 )
- Docs: updated for merged setup script, Desktop Composition clarified
- contrib/setup-xrdp-gfx.sh: major rewrite (merged audio, --desktop,
--diagnose, --help, MATE default, PipeWire switch, phase ordering)
2026-03-30 21:23:54 +11:00
Dave Kempe
fbd470048b
Center login panel on index page
2026-03-30 21:21:05 +11:00
Dave Kempe
6188c026e3
Docs: Desktop Composition is Windows-only, not needed for xrdp
2026-03-30 21:19:34 +11:00
Dave Kempe
5ef1049a19
Fix enable_desktop_comp field name mismatch (should be enable_desktop_composition)
2026-03-30 21:19:04 +11:00
Dave Kempe
bcb376e2d7
Update docs for merged setup script (single command, --desktop flag)
2026-03-30 21:18:05 +11:00
Dave Kempe
74863326cb
setup-xrdp-gfx.sh: install firefox-esr and chromium with desktop
2026-03-30 20:22:07 +11:00
Dave Kempe
3c6616fb78
setup-xrdp-gfx.sh: verify/create autostart for xrdp audio module
2026-03-30 19:10:47 +11:00
Dave Kempe
140be13389
setup-xrdp-gfx.sh: add --help with option docs and phase overview
2026-03-30 19:00:32 +11:00
Dave Kempe
a8be5360f2
setup-xrdp-gfx.sh: split --diagnose into user/root sections
2026-03-30 18:59:44 +11:00
Dave Kempe
fef0a270d2
setup-xrdp-gfx.sh: add --diagnose flag for troubleshooting
2026-03-30 18:58:27 +11:00
Dave Kempe
a39b55f162
setup-xrdp-gfx.sh: switch PipeWire-pulse to real PulseAudio for xrdp audio
2026-03-30 16:39:06 +11:00
Dave Kempe
1c6793bc4e
Merge audio build into setup-xrdp-gfx.sh (Phase 1, before sid)
...
Audio module must be built while system is pure trixie — sid's newer
libglvnd/libsystemd/libxcb break PulseAudio build dependencies.
Single script now does: desktop + build tools + audio → sid xrdp rebuild → remove sid → configure.
2026-03-30 16:03:05 +11:00
Dave Kempe
c4ff48f512
Rewrite setup-xrdp-gfx.sh: desktop+build first, sid temporary, remove after
...
Phase 1: Install desktop + build-essential from pure trixie
Phase 2: Add sid temporarily, rebuild xrdp with x264, remove sid
Phase 3: Configure xrdp (Xorg, gfx.toml, startwm.sh)
Prevents sid packages from contaminating the dependency resolver.
2026-03-30 14:13:02 +11:00
Dave Kempe
01329d5e3d
setup-xrdp-gfx.sh: add MATE desktop, make it default over XFCE
2026-03-30 14:01:29 +11:00
Dave Kempe
22e07d3b94
setup-xrdp-gfx.sh: apt -f install after dpkg to resolve missing deps
2026-03-30 11:46:17 +11:00
Dave Kempe
8f43566157
setup-xrdp-gfx.sh: install build-essential before sid to avoid gcc conflict
2026-03-30 11:31:10 +11:00
Dave Kempe
9accad307c
setup-xrdp-gfx.sh: fix version selection (sort -V, -t unstable for source)
2026-03-29 14:22:18 +11:00
Dave Kempe
286bf5e753
setup-xrdp-gfx.sh: DEBIAN_FRONTEND=noninteractive for desktop install
2026-03-29 14:16:00 +11:00
Dave Kempe
7818bb3a9c
setup-xrdp-gfx.sh: add --desktop flag (xfce/kde/gnome/none)
2026-03-29 14:14:58 +11:00
Dave Kempe
bcea96baad
Fix setup-xrdp-gfx.sh: add deb-src for sid (needed by apt-get source)
2026-03-29 14:04:41 +11:00
Dave Kempe
33ea733c16
Fix Docker FreeRDP plugin discovery ( #87 )
...
Find and copy libguac-common-svc-client from wherever make install
placed it, then copy (not symlink) into the system FreeRDP plugin dir.
v1.0.0
2026-03-29 07:56:13 +11:00
Dave Kempe
63909484c0
Remove RPM build from release pipeline (FreeRDP 3 only)
2026-03-28 22:44:45 +11:00
Dave Kempe
fc1e2552aa
Fix formatting (cargo fmt)
2026-03-28 22:38:40 +11:00
Dave Kempe
2c7feb697c
Add documentation index to overview page
2026-03-28 22:35:23 +11:00
Dave Kempe
32e353ba49
Add deployment guide for production planning and setup
2026-03-28 22:33:58 +11:00
Dave Kempe
8e9edce3a0
Security hardening: 8 fixes from audit
...
- Recording name: reject on canonicalization failure (not accept)
- Protocol parser: 1MB buffer limit prevents OOM from rogue guacd
- UTF-8 validation: reject invalid bytes instead of silent replacement
- Login scripts: remove credential env vars (stdin-only)
- Chromium profiles: 0700 permissions on temp directories
- Share tokens: constant-time comparison (subtle::ConstantTimeEq)
- WebSocket: drop binary messages instead of forwarding to guacd
- Login scripts API: require operator+ role
2026-03-28 22:28:30 +11:00
Dave Kempe
211ff9e99a
WebSocket ticket auth: keep API keys out of WS URLs
...
API key users now exchange their key for a single-use 30-second
ticket via POST /api/ws-ticket before connecting. The ticket is
passed as ?ticket= in the WebSocket URL instead of the raw API key.
Prevents API key exposure in reverse proxy logs, browser history,
and Referer headers. Legacy ?key= still works as fallback.
2026-03-28 22:22:05 +11:00
Dave Kempe
6269f51bf2
Hash OIDC session tokens in database (security hardening)
...
Session tokens stored as SHA-256 hashes instead of plaintext.
Migration drops old auth_sessions table on upgrade.
Same pattern as admin API key storage.
2026-03-28 22:13:19 +11:00
Dave Kempe
ea75470c97
Fix patches for upstream guacamole-server HEAD
...
Patches 003 and 004 regenerated against current upstream:
- 003: upstream already added config.h to disp.c and input.c, removed
those hunks. NULL guards and remaining config.h additions preserved.
- 004: upstream added path_lock field to display layer, adjusted context.
2026-03-28 22:04:11 +11:00
Dave Kempe
799cdefd57
v1.0.0: H.264 passthrough, per-entry toggle, Docker fix
...
H.264 passthrough for RDP via guac_display worker integration:
- Raw H.264 NAL units from xrdp x264 pass through to browser
WebCodecs VideoDecoder, bypassing server-side decode/re-encode
- Frame queue preserves all H.264 frames across deferred flushes
- Per-entry toggle in address book (enable_h264 field)
- Keyframe gate ensures decoder initializes correctly
- Per-connection callback (no static global concurrency bug)
- Queue capped at 120 frames to prevent unbounded growth
guacd patch (004-h264-display-worker):
- display-priv.h: h264 frame queue on guac_display_layer
- display-plan.c: flush h264 queue during plan_apply, skip IMG ops
- display-layer.c: set_h264 API with queue append and cap
- rdpgfx.c: SurfaceCommand wrapper saves NAL before GDI handler
- settings.c/h: enable-h264 connection parameter, conditional GfxH264
Other changes:
- Docker: fix FreeRDP plugin path for drive/audio channels (#87 )
- contrib/setup-xrdp-gfx.sh: full xrdp x264 rebuild from Debian sid
- docs/rdp-video-performance.md: H.264 passthrough documentation
- Address book UI: H.264 checkbox with dependency descriptions
2026-03-28 21:52:28 +11:00
Dave Kempe
b013678e42
H.264 passthrough: guacd patch + WebCodecs browser decoder
...
Phase 1-3 of H.264 passthrough for premium RDP video performance.
guacamole-server patch (patches/004-h264-passthrough.patch):
- Enable GfxH264 and GfxAVC444 in FreeRDP settings when GFX is on
- Intercept AVC420/AVC444 SurfaceCommand before GDI decode
- Extract raw H.264 NAL units and send as new "h264" instruction
- Keyframe detection via Annex B start code + NAL type parsing
- Original GDI decode path still runs as fallback
Browser-side (static/guac/):
- H264Decoder.js: WebCodecs VideoDecoder, hardware-accelerated decode
- Client.js: "h264" instruction handler, base64→ArrayBuffer→decode
- Feature detection: falls back gracefully if WebCodecs unavailable
rustguac:
- Advertise video/h264 in guacd handshake
2026-03-28 13:02:06 +11:00
Dave Kempe
b2892e404f
v0.9.2: Dependency updates
...
- sha2 0.11.0-rc.5 → 0.11.0 (stable release)
- rusqlite 0.38.0 → 0.39.0 (bundled SQLite 3.51.3)
- clap 4.5.60 → 4.6.0
- toml 1.0.4 → 1.1.0
- libc 0.2.182 → 0.2.183
- pulldown-cmark 0.13.1 → 0.13.3
- tracing-subscriber 0.3.22 → 0.3.23
- uuid 1.22.0 → 1.23.0
v0.9.2
2026-03-28 12:27:42 +11:00
Dave Kempe
580436807f
Merge pull request #86 from sol1/dependabot/cargo/uuid-1.23.0
...
deps: bump uuid from 1.22.0 to 1.23.0
2026-03-28 12:12:40 +11:00
Dave Kempe
9ff97477b4
Merge pull request #85 from sol1/dependabot/cargo/tracing-subscriber-0.3.23
...
deps: bump tracing-subscriber from 0.3.22 to 0.3.23
2026-03-28 12:12:38 +11:00
Dave Kempe
97b7be7e0a
Merge pull request #84 from sol1/dependabot/cargo/pulldown-cmark-0.13.3
...
deps: bump pulldown-cmark from 0.13.1 to 0.13.3
2026-03-28 12:12:36 +11:00
Dave Kempe
9cf1cda2ed
Merge pull request #83 from sol1/dependabot/cargo/libc-0.2.183
...
deps: bump libc from 0.2.182 to 0.2.183
2026-03-28 12:12:33 +11:00
Dave Kempe
81ba50fd5d
Merge pull request #82 from sol1/dependabot/cargo/toml-1.1.0spec-1.1.0
...
deps: bump toml from 1.0.4+spec-1.1.0 to 1.1.0+spec-1.1.0
2026-03-28 12:12:31 +11:00
Dave Kempe
1bdca18864
Merge pull request #81 from sol1/dependabot/cargo/clap-4.6.0
...
deps: bump clap from 4.5.60 to 4.6.0
2026-03-28 12:12:28 +11:00
Dave Kempe
bb3e62701a
Merge pull request #80 from sol1/dependabot/cargo/rusqlite-0.39.0
...
deps: bump rusqlite from 0.38.0 to 0.39.0
2026-03-28 12:12:25 +11:00
Dave Kempe
1a99abd108
Merge pull request #79 from sol1/dependabot/cargo/sha2-0.11.0
...
deps: bump sha2 from 0.11.0-rc.5 to 0.11.0
2026-03-28 12:12:23 +11:00
dependabot[bot]
0c7e3694fb
deps: bump uuid from 1.22.0 to 1.23.0
...
Bumps [uuid](https://github.com/uuid-rs/uuid ) from 1.22.0 to 1.23.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases )
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.22.0...v1.23.0 )
---
updated-dependencies:
- dependency-name: uuid
dependency-version: 1.23.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-27 09:18:48 +00:00
dependabot[bot]
9f7bc4cbf6
deps: bump tracing-subscriber from 0.3.22 to 0.3.23
...
Bumps [tracing-subscriber](https://github.com/tokio-rs/tracing ) from 0.3.22 to 0.3.23.
- [Release notes](https://github.com/tokio-rs/tracing/releases )
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.22...tracing-subscriber-0.3.23 )
---
updated-dependencies:
- dependency-name: tracing-subscriber
dependency-version: 0.3.23
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-27 09:18:36 +00:00
dependabot[bot]
173677049d
deps: bump pulldown-cmark from 0.13.1 to 0.13.3
...
Bumps [pulldown-cmark](https://github.com/raphlinus/pulldown-cmark ) from 0.13.1 to 0.13.3.
- [Release notes](https://github.com/raphlinus/pulldown-cmark/releases )
- [Commits](https://github.com/raphlinus/pulldown-cmark/compare/v0.13.1...v0.13.3 )
---
updated-dependencies:
- dependency-name: pulldown-cmark
dependency-version: 0.13.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-27 09:18:28 +00:00
dependabot[bot]
d859e13b4f
deps: bump libc from 0.2.182 to 0.2.183
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.182 to 0.2.183.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.183/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.182...0.2.183 )
---
updated-dependencies:
- dependency-name: libc
dependency-version: 0.2.183
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-27 09:18:19 +00:00
dependabot[bot]
56ee83ef30
deps: bump toml from 1.0.4+spec-1.1.0 to 1.1.0+spec-1.1.0
...
Bumps [toml](https://github.com/toml-rs/toml ) from 1.0.4+spec-1.1.0 to 1.1.0+spec-1.1.0.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v1.0.4...toml-v1.1.0 )
---
updated-dependencies:
- dependency-name: toml
dependency-version: 1.1.0+spec-1.1.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-27 09:18:11 +00:00
dependabot[bot]
a24a3642de
deps: bump clap from 4.5.60 to 4.6.0
...
Bumps [clap](https://github.com/clap-rs/clap ) from 4.5.60 to 4.6.0.
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.60...clap_complete-v4.6.0 )
---
updated-dependencies:
- dependency-name: clap
dependency-version: 4.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-27 09:18:01 +00:00
dependabot[bot]
7f69cb11bc
deps: bump rusqlite from 0.38.0 to 0.39.0
...
Bumps [rusqlite](https://github.com/rusqlite/rusqlite ) from 0.38.0 to 0.39.0.
- [Release notes](https://github.com/rusqlite/rusqlite/releases )
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md )
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.38.0...v0.39.0 )
---
updated-dependencies:
- dependency-name: rusqlite
dependency-version: 0.39.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-27 09:17:50 +00:00
dependabot[bot]
a4ce652713
deps: bump sha2 from 0.11.0-rc.5 to 0.11.0
...
Bumps [sha2](https://github.com/RustCrypto/hashes ) from 0.11.0-rc.5 to 0.11.0.
- [Commits](https://github.com/RustCrypto/hashes/compare/sha2-v0.11.0-rc.5...sha2-v0.11.0 )
---
updated-dependencies:
- dependency-name: sha2
dependency-version: 0.11.0
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-27 09:17:40 +00:00