Skip to content

v1.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 25 Jul 22:34

SPICE, Proxmox VE consoles, and headless API integration

SPICE protocol support

A new SPICE connection type for direct SPICE displays (libvirt/QEMU consoles), with TLS, CA verification, certificate-subject pinning, and SPICE-proxy support. Built on the upstream SPICE work (apache/guacamole-server#688, GUACAMOLE-261), vendored into the bundled guacd.

Proxmox VE consoles

A dedicated Proxmox VE console connection type that brokers a VM's SPICE console through the Proxmox API. Provide the PVE API URL, a VM ID, and an API token; rustguac fetches a one-time SPICE ticket at connect, so nothing sensitive is stored beyond the token.

  • Node auto-detect: leave the node blank and it is resolved from the VM ID via /cluster/resources, the way the PVE web UI does it.
  • Split API token: a visible Token ID (shown in the connection list) plus a masked secret.
  • SSH tunneling: both the PVE API call and the console connection route through a jump-host chain.
  • Clear PVE errors surfaced from the API (wrong node, VM not running, display not set to SPICE, and so on).

Headless API integration

The built-in client now accepts a pre-minted WebSocket ticket in the URL (/client/{id}?ticket=...), so an API-driven integration can open a session in a browser with no OIDC login and without putting a durable API key in the browser. The backend mints the ticket via POST /api/ws-ticket.

Fixes

  • guacd: silenced a spurious Invalid port value warning on TLS-only SPICE connections.

Dependencies

russh 0.62.4, base64 0.23, clap 4.6.3, tokio 1.53.1, serde_json 1.0.151, tokio-util 0.7.19, libc 0.2.189.

Packaging

Packaged builds bundle guacd with SPICE support (libspice-client-glib-2.0).

Full Changelog: v1.8.2...v1.9.0