Hi Nick , We have developed a *custom React-based UI* that interacts with the *native Guacamole backend (guacamole-client)* to manage SSH sessions and recordings via the exposed REST APIs. Use Case:
We are implementing a feature where users are required to *input a unique string before starting an SSH session*. The intended flow is: 1. The user enters a unique identifier before initiating the SSH session. 2. Once the session ends, this unique identifier should be *persistently linked to the generated session recording* in the Guacamole database. 3. Later, we should be able to *retrieve the recording using this * unique identifier from the UI for auditing or playback purposes. On Thu, Jul 17, 2025 at 11:33 PM Nick Couchman <[email protected]> wrote: > On Thu, Jul 17, 2025 at 1:47 PM Savinder Kaur <[email protected]> wrote: > >> Hi Team , >> >> I am currently working on a feature enhancement for Apache Guacamole >> (v1.5.5) and would appreciate your guidance. The requirement is to pass a >> custom string field (e.g., uniqueString) from the frontend UI to the >> backend and persist it in the Guacamole database using the native Java >> backend*.* >> > > Pass it where? For what purpose? What kind of data are you trying to pass > and store? Is it related to users? Groups? Connections? Connection groups? > How are you capturing it - is it something the user is inputting, or > something you're gathering from the environment? > > Without knowing a lot of that information, I'd say the best way to do this > is to make use of the "Attributes" supported by various Guacamole objects - > for example, user attributes, group attributes, connection attributes, and > connection group attributes. These are designed to be arbitrary and > extensible - you can name the field whatever you like and store just about > any type of data. In the database they are all stored as strings, which > should work for you - if you want to do something else (number, boolean, > etc.) you have to write the code to convert between string and your data > type. > > I would like to understand the recommended approach and the flow to >> achieve this while aligning with the architecture and design patterns >> followed in the existing codebase. >> What I am trying to do: >> >> - >> >> Capture a string field ( uniqueString ) from the UI. >> - >> >> Pass it through the REST layer. >> - >> >> Persist it in the database via the existing JDBC authentication >> extension (MySQL). >> - >> >> Follow the existing structure (e.g., how Connection, User, or History >> entries are handled) ? >> >> My Question: >> >> REST to Backend: What is the cleanest way to pass this to the Java >> backend while maintaining the decoupling between REST and JDBC layers? >> While attempting to implement this, I ran into an issue where adding >> guacamole-auth-jdbc as a dependency in the core guacamole module causes >> conflicts—especially around transitive dependencies and service injection. >> As per my understanding, the REST layer should not directly depend on JDBC. >> I believe this might violate the current architecture where data access is >> handled through UserContext, Directory, and associated factories but they >> seem to be complex . >> >> > This is sort of true - in general, the REST API for Guacamole is designed > to be agnostic to the back-end used to store the connection and user data > (LDAP, JDBC, JSON, etc.). That said, that are features that the REST API > supports that are only supported with certain back-ends. > > You'll need to provide some more detail on exactly what you're trying to > capture and use the data for. > > -Nick > >>
