Jairo Morales created GUACAMOLE-2284:
----------------------------------------
Summary: Add TCP reachability check instruction to Guacamole
protocol to support WoL countdown notification and connection status indicator
Key: GUACAMOLE-2284
URL: https://issues.apache.org/jira/browse/GUACAMOLE-2284
Project: Guacamole
Issue Type: New Feature
Components: guacamole-client, guacd
Affects Versions: 1.6.0
Reporter: Jairo Morales
Attachments: Status Indication.png, WoL Waiting Screen.png
h2. Background
Wake-on-LAN (WoL) support was introduced in Guacamole 1.2.0 (GUACAMOLE-513) and
the ability to check host availability before sending the WoL packet was
implemented in 1.6.0 (GUACAMOLE-1686). However, two usability gaps remain that
motivated this proposal:
1. There is no visual indication on the home screen of whether a managed
machine is currently powered on or off.
2. When a WoL-enabled connection enters the WAITING state, there is no
user-facing feedback about how long to expect to wait — the UI simply spins
silently.
A naive client-side solution (running TCP checks from Tomcat) breaks down in
deployments where guacd sits inside a private network and the Java/Tomcat
components have no direct path to the managed systems — which is exactly the
topology Guacamole is designed to support. This is the same reason WoL packet
sending lives inside guacd and not in the Java client.
h2. Proposed Solution
Implement a TCP reachability-check instruction as part of the Guacamole
protocol, allowing guacamole-client to delegate host availability checks to
guacd, which has actual network access to the managed systems.
h3. 1. New TCP ping instruction in the Guacamole protocol (guacamole-server)
- guacamole-client sends a batch request to guacd containing one or more
(hostname, port) pairs.
- guacd performs a non-blocking TCP connection attempt to each target.
- guacd responds with a per-host status (up/down) and optionally latency.
h3. 2. TCP ping handler in guacd (guacamole-server)
- Implement the server-side handler that processes the batch ping request and
returns results.
h3. 3. Client-side handler in guacamole-client (guacamole-client)
- Tomcat sends the batch ping request on home screen load and caches results
briefly to avoid flooding guacd.
- The feature is opt-in via a guacamole.properties flag (disabled by default)
so large installations with existing monitoring systems are not impacted.
h3. 4. Connection status indicator on the home screen (guacamole-client)
- Connection tile icons reflect the up/down state returned by guacd.
h3. 5. WoL countdown notification (guacamole-client)
- When a connection enters the WAITING state and WoL is configured, display a
live countdown based on wol-wait-time, informed by the ping result from guacd
rather than a client-side probe.
- This creates a concrete link between the client-side visualization and
guacd's WoL timer, addressing the assumption gap noted in PR #1208.
h2. Related Issues
-[GUACAMOLE-513|https://issues.apache.org/jira/browse/GUACAMOLE-513]: Original
WoL integration
- [GUACAMOLE-1686|https://issues.apache.org/jira/browse/GUACAMOLE-1686]: Host
availability check before sending WoL packet (implemented in 1.6.0)
- [GUACAMOLE-2107|https://issues.apache.org/jira/browse/GUACAMOLE-2107]:
guac_tcp_connect() error handling fix (fix merged into staging/1.6.1 via PR
#609)
h2. Related Pull Request
- [guacamole-client PR
#1208|https://github.com/apache/guacamole-client/pull/1208] (initial
client-side prototype, architectural concerns addressed by this proposal)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)