GUACAMOLE-2300: Add IPMI Serial-over-LAN protocol support#1228
Open
ciroiriarte wants to merge 5 commits into
Open
GUACAMOLE-2300: Add IPMI Serial-over-LAN protocol support#1228ciroiriarte wants to merge 5 commits into
ciroiriarte wants to merge 5 commits into
Conversation
Makes IPMI a first-class protocol in the connection editor (previously only usable via user-mapping.xml). Adds the ipmi.json protocol form with grouped, progressive-disclosure sections (Network, Authentication, Security & Encryption, Serial-over-LAN, Power & Boot, Display, Clipboard, Terminal behavior, Typescript, Screen Recording), including ENUMs for privilege-level, cipher-suite (3/17), encryption-policy, BMC vendor workaround presets, power-on-connect, and boot-device; plus the PROTOCOL_IPMI English translations for all sections, fields, and options.
Adds a guacIpmiControl directive that surfaces out-of-band chassis management for IPMI connections directly in the client menu, gated on protocol === 'ipmi'. Console I/O continues over the terminal; this panel communicates solely over the dedicated 'ipmi-control' pipe stream, exchanging newline-delimited JSON with the guacd IPMI module. Features: - Live power/SOL-health status badges with authoritative refresh - Power controls (on, soft shutdown, cycle, hard reset, off, NMI) with confirmation gating on disruptive actions - Chassis identify, serial break, and System Event Log viewer Includes directive, template, styles, and en translations.
…te into a service Introduces ipmiControlService, which owns per-connection chassis state (power, SOL health, SEL, last result) and the 'ipmi-control' pipe I/O, persisting independently of any directive lifecycle. This fixes state loss across menu open/close (the menu content is destroyed via ng-if) and provides a single source of truth. The menu panel (guacIpmiControl) and a new always-visible power badge (guacIpmiStatus, overlaid top-right of the display) are now thin views over the service, so operators can see host power state at a glance without opening the menu.
- Move ng-if off the isolate-scope directive root (an inner wrapper), so the template's transcluded scope inherits the shared chassis state; previously the badge/panel bound to an empty scope and rendered blank. - Clear the busy flag on any inbound control message, not only 'result': refresh-status replies with 'state' and read-sel with 'sel', which otherwise left every control button disabled after the first refresh. - Default an empty power value to 'unknown' in the badges.
…us overlay Two UX fixes for the IPMI chassis panel: - In-progress feedback: while a chassis command is outstanding, replace the Refresh button with a spinner + 'Working…' label (all action buttons were already disabled via state.busy), and show a 'Checked HH:mm:ss' timestamp of the last authoritative status read. Chassis operations can take several seconds, so this reassures the operator the command is running rather than lost. - Complete, consolidated status: the always-visible corner overlay now shows SOL connection health alongside power (previously power only), so an operator watching the console sees full status at a glance without opening the menu. SOL-disconnected is rendered red as an alert in both the overlay and the menu panel.
This was referenced Jul 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Client-side support for the new
ipmiprotocol (see companion guacamole-server PR). Adds the IPMI connection form and a chassis control panel to the client menu.JIRA: https://issues.apache.org/jira/browse/GUACAMOLE-2300
What's included
ipmiControlServiceso the panel and overlay stay in sync.Testing
Related PRs