Re: Shared connection input passthrough
Thank you Mike, this looks like it's a bit out of my league. Is there someone you can recommend that I can hire to develop this feature ? Regards, Dejan From: Michael Jumper Sent: 06 December 2022 00:51 To: user@guacamole.apache.org Subject: Re: Shared connection input passthrough I think you'd be better off writing an extension that decorates the Connection objects returned by other extensions: https://guacamole.apache.org/doc/guacamole-ext/org/apache/guacamole/net/auth/AbstractAuthenticationProvider.html#decorate(org.apache.guacamole.net.auth.UserContext,org.apache.guacamole.net.auth.AuthenticatedUser,org.apache.guacamole.net.auth.Credentials) After decorating the UserContext of another extension, you can further decorate the Directory returned by getConnectionDirectory(). The DecoratingDirectory class is intended to make this easier: https://guacamole.apache.org/doc/guacamole-ext/org/apache/guacamole/net/auth/DecoratingDirectory.html You can then decorate (wrap) any Connection returned by that Directory with your own implementation that does whatever it likes. In this case, you'd wrap the GuacamoleTunnel returned by connect() and inspect the instructions received. The FilteredGuacamoleSocket class would be the best candidate for that kind of checking: https://guacamole.apache.org/doc/guacamole-common/org/apache/guacamole/protocol/FilteredGuacamoleSocket.html That class lets you provide filters that can inspect, drop, or override instructions that are sent or received. - Mike On Fri, Dec 2, 2022 at 1:35 AM Dejan Milovanovic mailto:dejan.milovano...@mylivezone.com>> wrote: Hi Nick, thank you for the response. I did manage to record guac protocol to a file, but that removes the "real-time" factor of the analysis. You've mentioned recording guacd protocol to socket, I haven't seen an example of that online. What would I have to do to achieve this? Do I need to make some changes to guacd code, or is there some configuration magic that I don't know of? Kind regards, Dejan From: Nick Couchman mailto:vn...@apache.org>> Sent: 01 December 2022 19:32 To: user@guacamole.apache.org<mailto:user@guacamole.apache.org> mailto:user@guacamole.apache.org>> Subject: Re: Shared connection input passthrough On Thu, Dec 1, 2022 at 4:52 AM Dejan Milovanovic mailto:dejan.milovano...@mylivezone.com>> wrote: > > Hi all, > > I'm using guacamole to provide users with access to remote windows machines, > and I'm trying to analyse user's actions on these machines in real-time. > > What I tried to do is generate shared connection and listen for guacamole > protocol messages on that shared connection. This works great, but the issue > I have with this approach is that keyboard and mouse actions are not > transmitted on the shared connection socket. > > Is there a way to have these missing messages in the shared connection ? > Or is there another way of observing users tunnel without disturbing their > RDP session? No, I do not think what you're asking to do is going to work, because the input from a share connection is not sent to all of the users, nor is there any particular way to enable that at the moment. The non-owner participants in a connection are usually only going to get the image data that is sent from guacd back to any joined connections. It is likely possible to implement what you're asking for - it's essentially what enabling recording does, which just writes the guac protocol data to a file. Have you considered trying to record to a file (or, perhaps, a socket) and then pointing your analysis tool at that, instead? Beyond that, you'd probably need some code changes to guacd to do what you're wanting to do. -Nick - To unsubscribe, e-mail: user-unsubscr...@guacamole.apache.org<mailto:user-unsubscr...@guacamole.apache.org> For additional commands, e-mail: user-h...@guacamole.apache.org<mailto:user-h...@guacamole.apache.org>
Re: Shared connection input passthrough
I think you'd be better off writing an extension that decorates the Connection objects returned by other extensions: https://guacamole.apache.org/doc/guacamole-ext/org/apache/guacamole/net/auth/AbstractAuthenticationProvider.html#decorate(org.apache.guacamole.net.auth.UserContext,org.apache.guacamole.net.auth.AuthenticatedUser,org.apache.guacamole.net.auth.Credentials) After decorating the UserContext of another extension, you can further decorate the Directory returned by getConnectionDirectory(). The DecoratingDirectory class is intended to make this easier: https://guacamole.apache.org/doc/guacamole-ext/org/apache/guacamole/net/auth/DecoratingDirectory.html You can then decorate (wrap) any Connection returned by that Directory with your own implementation that does whatever it likes. In this case, you'd wrap the GuacamoleTunnel returned by connect() and inspect the instructions received. The FilteredGuacamoleSocket class would be the best candidate for that kind of checking: https://guacamole.apache.org/doc/guacamole-common/org/apache/guacamole/protocol/FilteredGuacamoleSocket.html That class lets you provide filters that can inspect, drop, or override instructions that are sent or received. - Mike On Fri, Dec 2, 2022 at 1:35 AM Dejan Milovanovic < dejan.milovano...@mylivezone.com> wrote: > Hi Nick, > > thank you for the response. > > I did manage to record guac protocol to a file, but that removes the > "real-time" factor of the analysis. > > You've mentioned recording guacd protocol to socket, I haven't seen an > example of that online. What would I have to do to achieve this? > Do I need to make some changes to guacd code, or is there some > configuration magic that I don't know of? > > Kind regards, > Dejan > -- > *From:* Nick Couchman > *Sent:* 01 December 2022 19:32 > *To:* user@guacamole.apache.org > *Subject:* Re: Shared connection input passthrough > > On Thu, Dec 1, 2022 at 4:52 AM Dejan Milovanovic > wrote: > > > > Hi all, > > > > I'm using guacamole to provide users with access to remote windows > machines, and I'm trying to analyse user's actions on these machines in > real-time. > > > > What I tried to do is generate shared connection and listen for > guacamole protocol messages on that shared connection. This works great, > but the issue I have with this approach is that keyboard and mouse actions > are not transmitted on the shared connection socket. > > > > Is there a way to have these missing messages in the shared connection ? > > Or is there another way of observing users tunnel without disturbing > their RDP session? > > No, I do not think what you're asking to do is going to work, because > the input from a share connection is not sent to all of the users, nor > is there any particular way to enable that at the moment. The > non-owner participants in a connection are usually only going to get > the image data that is sent from guacd back to any joined connections. > > It is likely possible to implement what you're asking for - it's > essentially what enabling recording does, which just writes the guac > protocol data to a file. Have you considered trying to record to a > file (or, perhaps, a socket) and then pointing your analysis tool at > that, instead? Beyond that, you'd probably need some code changes to > guacd to do what you're wanting to do. > > -Nick > > - > To unsubscribe, e-mail: user-unsubscr...@guacamole.apache.org > For additional commands, e-mail: user-h...@guacamole.apache.org > >
Re: Shared connection input passthrough
Hi Nick, thank you for the response. I did manage to record guac protocol to a file, but that removes the "real-time" factor of the analysis. You've mentioned recording guacd protocol to socket, I haven't seen an example of that online. What would I have to do to achieve this? Do I need to make some changes to guacd code, or is there some configuration magic that I don't know of? Kind regards, Dejan From: Nick Couchman Sent: 01 December 2022 19:32 To: user@guacamole.apache.org Subject: Re: Shared connection input passthrough On Thu, Dec 1, 2022 at 4:52 AM Dejan Milovanovic wrote: > > Hi all, > > I'm using guacamole to provide users with access to remote windows machines, > and I'm trying to analyse user's actions on these machines in real-time. > > What I tried to do is generate shared connection and listen for guacamole > protocol messages on that shared connection. This works great, but the issue > I have with this approach is that keyboard and mouse actions are not > transmitted on the shared connection socket. > > Is there a way to have these missing messages in the shared connection ? > Or is there another way of observing users tunnel without disturbing their > RDP session? No, I do not think what you're asking to do is going to work, because the input from a share connection is not sent to all of the users, nor is there any particular way to enable that at the moment. The non-owner participants in a connection are usually only going to get the image data that is sent from guacd back to any joined connections. It is likely possible to implement what you're asking for - it's essentially what enabling recording does, which just writes the guac protocol data to a file. Have you considered trying to record to a file (or, perhaps, a socket) and then pointing your analysis tool at that, instead? Beyond that, you'd probably need some code changes to guacd to do what you're wanting to do. -Nick - To unsubscribe, e-mail: user-unsubscr...@guacamole.apache.org For additional commands, e-mail: user-h...@guacamole.apache.org
Re: Shared connection input passthrough
On Thu, Dec 1, 2022 at 4:52 AM Dejan Milovanovic wrote: > > Hi all, > > I'm using guacamole to provide users with access to remote windows machines, > and I'm trying to analyse user's actions on these machines in real-time. > > What I tried to do is generate shared connection and listen for guacamole > protocol messages on that shared connection. This works great, but the issue > I have with this approach is that keyboard and mouse actions are not > transmitted on the shared connection socket. > > Is there a way to have these missing messages in the shared connection ? > Or is there another way of observing users tunnel without disturbing their > RDP session? No, I do not think what you're asking to do is going to work, because the input from a share connection is not sent to all of the users, nor is there any particular way to enable that at the moment. The non-owner participants in a connection are usually only going to get the image data that is sent from guacd back to any joined connections. It is likely possible to implement what you're asking for - it's essentially what enabling recording does, which just writes the guac protocol data to a file. Have you considered trying to record to a file (or, perhaps, a socket) and then pointing your analysis tool at that, instead? Beyond that, you'd probably need some code changes to guacd to do what you're wanting to do. -Nick - To unsubscribe, e-mail: user-unsubscr...@guacamole.apache.org For additional commands, e-mail: user-h...@guacamole.apache.org
RE: Shared Connection URL
It took a lot of reading and re-reading of old posts in various places but I finally figured out what I needed. I'm going to answer my own questions here to bring together all the info I gathered. One, the shared link is created in the web client through javascript. Second, there's no direct way to create the shared link through Java. In my case, since I'm not using the included web client, the shared url wouldn't work for me anyway. What I ended up doing was, in the servlet I grab the connection id when a user connects and store it in a database. Then to share a connection, I pass the connection id to the servlet which uses it when setting up the new connection (using the GuacamoleConfiguration object). A couple of notes: I'm using Guac 1.0. One frustrating thing I found when researching, was posts that didn't specify the version. Only later would I discover that some piece of info didn't apply to my version. In the servlet code from the tutorial there is this: GuacamoleSocket socket = new ConfiguredGuacamoleSocket Which I changed to: ConfiguredGuacamoleSocket socket = new ConfiguredGuacamoleSocket Because GuacamoleSocket doesn't have getConnectionID() You can set the connection to be readonly by setting this: config.setParameter("read-only", String.valueOf(Boolean.TRUE)); (Where config is a GuacamoleConfiguration object.) The connection ID is created when the tunnel is created, so I get it right before I return the tunnel. I think that's everything. Hopefully this will be helpful to someone. Scott From: Scott Hancock Sent: Wednesday, May 6, 2020 9:40 AM To: user@guacamole.apache.org Subject: RE: Shared Connection URL So maybe the better question is where in the codebase is the code that creates the shared connection url? Thanks, Scott From: Scott Hancock mailto:shanc...@opsgility.com>> Sent: Tuesday, May 5, 2020 5:12 PM To: user@guacamole.apache.org<mailto:user@guacamole.apache.org> Subject: Re: Shared Connection URL Hi Mike, I inherited this code and I don't know what the reasons are. Yes, we have our own web application. It looks like it's based on the tutorial code. Scott From: Mike Jumper mailto:mjum...@apache.org>> Sent: Tuesday, May 5, 2020 4:02 PM To: user@guacamole.apache.org<mailto:user@guacamole.apache.org> mailto:user@guacamole.apache.org>> Subject: Re: Shared Connection URL On Tue, May 5, 2020 at 1:56 PM Scott Hancock mailto:shanc...@opsgility.com>> wrote: I'm new to Guacamole and I need to get a shared connection URL for every new connection. For reasons, we don't have the REST API available. What reasons? If using the mainline web application, the web application as a whole would not be functional without its REST API. It is the REST API that drives the interface of the web application. In Guacamole 1.0, how do I generate the shared connection url using the Java api? Does this mean you have your own web application, built against guacamole-common and guacamole-common-js? - Mike
RE: Shared Connection URL
So maybe the better question is where in the codebase is the code that creates the shared connection url? Thanks, Scott From: Scott Hancock Sent: Tuesday, May 5, 2020 5:12 PM To: user@guacamole.apache.org Subject: Re: Shared Connection URL Hi Mike, I inherited this code and I don't know what the reasons are. Yes, we have our own web application. It looks like it's based on the tutorial code. Scott From: Mike Jumper mailto:mjum...@apache.org>> Sent: Tuesday, May 5, 2020 4:02 PM To: user@guacamole.apache.org<mailto:user@guacamole.apache.org> mailto:user@guacamole.apache.org>> Subject: Re: Shared Connection URL On Tue, May 5, 2020 at 1:56 PM Scott Hancock mailto:shanc...@opsgility.com>> wrote: I'm new to Guacamole and I need to get a shared connection URL for every new connection. For reasons, we don't have the REST API available. What reasons? If using the mainline web application, the web application as a whole would not be functional without its REST API. It is the REST API that drives the interface of the web application. In Guacamole 1.0, how do I generate the shared connection url using the Java api? Does this mean you have your own web application, built against guacamole-common and guacamole-common-js? - Mike
Re: Shared Connection URL
Hi Mike, I inherited this code and I don't know what the reasons are. Yes, we have our own web application. It looks like it's based on the tutorial code. Scott From: Mike Jumper Sent: Tuesday, May 5, 2020 4:02 PM To: user@guacamole.apache.org Subject: Re: Shared Connection URL On Tue, May 5, 2020 at 1:56 PM Scott Hancock mailto:shanc...@opsgility.com>> wrote: I'm new to Guacamole and I need to get a shared connection URL for every new connection. For reasons, we don't have the REST API available. What reasons? If using the mainline web application, the web application as a whole would not be functional without its REST API. It is the REST API that drives the interface of the web application. In Guacamole 1.0, how do I generate the shared connection url using the Java api? Does this mean you have your own web application, built against guacamole-common and guacamole-common-js? - Mike
Re: Shared Connection URL
On Tue, May 5, 2020 at 1:56 PM Scott Hancock wrote: > I'm new to Guacamole and I need to get a shared connection URL for every > new connection. For reasons, we don't have the REST API available. > What reasons? If using the mainline web application, the web application as a whole would not be functional without its REST API. It is the REST API that drives the interface of the web application. > In Guacamole 1.0, how do I generate the shared connection url using the > Java api? > Does this mean you have your own web application, built against guacamole-common and guacamole-common-js? - Mike
RE: Shared connection
Hi, I have MyCustomAuthenticationProvider class which is extending SimpleAuthenticationProvider. Is it possible to get current logged in user context in this? I think this SimpleAuthenticationProvider::getuserContext() always creates a new SimpleUserContext. Pls provide your inputs on this. Regards, Umesh From: Umesh Bhatt Sent: Friday, December 13, 2019 9:59 AM To: user@guacamole.apache.org Subject: RE: Shared connection Hi, Any inputs what am I missing in below code? This is written in my simple custom auth provider. Regards, Umesh From: Umesh Bhatt mailto:um...@nuvepro.com>> Sent: Wednesday, December 11, 2019 11:29 AM To: user@guacamole.apache.org<mailto:user@guacamole.apache.org> Subject: RE: Shared connection Hi Nick, I am trying to get active connections using below code but it is always fails and error details are not clear. Also in connDir.getAll(null), we need to provide identifiers. Can you pls explain how to get this? Regards, Umesh private void printActiveConnections(AuthenticatedUser usr) { try { System.out.println("Listing active connections."); if(usr == null) { System.out.println("No user object."); return; } System.out.println("usr = " + usr.getIdentifier()); UserContext ctxt = null; try { ctxt = getUserContext(usr); if(ctxt == null) { System.out.println("No user context."); return; } } catch(GuacamoleException ex) { System.out.println(ex.getMessage()); } Directory connDir = ctxt.getActiveConnectionDirectory(); if(connDir == null) { System.out.println("No connection directory."); return; } Collection allConns = connDir.getAll(null); if(allConns == null || allConns.isEmpty()) { System.out.println("No active connections."); return; } for(ActiveConnection conn : allConns) { System.out.println("Conn Identifier = " + conn.getConnectionIdentifier() + " Identifier = " + conn.getIdentifier() + " Remote host = " + conn.getRemoteHost() + " Username = " + conn.getUsername()); } } catch (Exception ex) { System.out.println("Error: " + ex.getMessage()); } } From: Nick Couchman mailto:vn...@apache.org>> Sent: Wednesday, December 4, 2019 11:31 PM To: user@guacamole.apache.org<mailto:user@guacamole.apache.org> Subject: Re: Shared connection On Wed, Dec 4, 2019 at 5:46 AM Umesh Bhatt mailto:um...@nuvepro.com>> wrote: Hi Nick, Since currently it is not available, I am trying to implement in my custom auth provider. Well, it isn't *released*, but it is available...in git master. However, doing it in a custom authentication module should be fine, as well. I am using GuacamoleConfiguration setConnectionId(ALREADY_ACTIVE_CONNECTION_ID) to join to existing active connection but not seeing it working. What is ConnectionID, is it GUACD connection ID which is usually something like $7beb584d-d6e2-459d-86e9-e726091862cb? If so how can I retrieve it in my code? This is automatically generated when the connection is started, so you'll need to retrieve a list of active connections, which will give you the UUID (collection of random letters and numbers above) and then select the correct connection. -Nick
RE: Shared connection
Hi, Any inputs what am I missing in below code? This is written in my simple custom auth provider. Regards, Umesh From: Umesh Bhatt Sent: Wednesday, December 11, 2019 11:29 AM To: user@guacamole.apache.org Subject: RE: Shared connection Hi Nick, I am trying to get active connections using below code but it is always fails and error details are not clear. Also in connDir.getAll(null), we need to provide identifiers. Can you pls explain how to get this? Regards, Umesh private void printActiveConnections(AuthenticatedUser usr) { try { System.out.println("Listing active connections."); if(usr == null) { System.out.println("No user object."); return; } System.out.println("usr = " + usr.getIdentifier()); UserContext ctxt = null; try { ctxt = getUserContext(usr); if(ctxt == null) { System.out.println("No user context."); return; } } catch(GuacamoleException ex) { System.out.println(ex.getMessage()); } Directory connDir = ctxt.getActiveConnectionDirectory(); if(connDir == null) { System.out.println("No connection directory."); return; } Collection allConns = connDir.getAll(null); if(allConns == null || allConns.isEmpty()) { System.out.println("No active connections."); return; } for(ActiveConnection conn : allConns) { System.out.println("Conn Identifier = " + conn.getConnectionIdentifier() + " Identifier = " + conn.getIdentifier() + " Remote host = " + conn.getRemoteHost() + " Username = " + conn.getUsername()); } } catch (Exception ex) { System.out.println("Error: " + ex.getMessage()); } } From: Nick Couchman mailto:vn...@apache.org>> Sent: Wednesday, December 4, 2019 11:31 PM To: user@guacamole.apache.org<mailto:user@guacamole.apache.org> Subject: Re: Shared connection On Wed, Dec 4, 2019 at 5:46 AM Umesh Bhatt mailto:um...@nuvepro.com>> wrote: Hi Nick, Since currently it is not available, I am trying to implement in my custom auth provider. Well, it isn't *released*, but it is available...in git master. However, doing it in a custom authentication module should be fine, as well. I am using GuacamoleConfiguration setConnectionId(ALREADY_ACTIVE_CONNECTION_ID) to join to existing active connection but not seeing it working. What is ConnectionID, is it GUACD connection ID which is usually something like $7beb584d-d6e2-459d-86e9-e726091862cb? If so how can I retrieve it in my code? This is automatically generated when the connection is started, so you'll need to retrieve a list of active connections, which will give you the UUID (collection of random letters and numbers above) and then select the correct connection. -Nick
RE: Shared connection
Hi Nick, I am trying to get active connections using below code but it is always fails and error details are not clear. Also in connDir.getAll(null), we need to provide identifiers. Can you pls explain how to get this? Regards, Umesh private void printActiveConnections(AuthenticatedUser usr) { try { System.out.println("Listing active connections."); if(usr == null) { System.out.println("No user object."); return; } System.out.println("usr = " + usr.getIdentifier()); UserContext ctxt = null; try { ctxt = getUserContext(usr); if(ctxt == null) { System.out.println("No user context."); return; } } catch(GuacamoleException ex) { System.out.println(ex.getMessage()); } Directory connDir = ctxt.getActiveConnectionDirectory(); if(connDir == null) { System.out.println("No connection directory."); return; } Collection allConns = connDir.getAll(null); if(allConns == null || allConns.isEmpty()) { System.out.println("No active connections."); return; } for(ActiveConnection conn : allConns) { System.out.println("Conn Identifier = " + conn.getConnectionIdentifier() + " Identifier = " + conn.getIdentifier() + " Remote host = " + conn.getRemoteHost() + " Username = " + conn.getUsername()); } } catch (Exception ex) { System.out.println("Error: " + ex.getMessage()); } } From: Nick Couchman Sent: Wednesday, December 4, 2019 11:31 PM To: user@guacamole.apache.org Subject: Re: Shared connection On Wed, Dec 4, 2019 at 5:46 AM Umesh Bhatt mailto:um...@nuvepro.com>> wrote: Hi Nick, Since currently it is not available, I am trying to implement in my custom auth provider. Well, it isn't *released*, but it is available...in git master. However, doing it in a custom authentication module should be fine, as well. I am using GuacamoleConfiguration setConnectionId(ALREADY_ACTIVE_CONNECTION_ID) to join to existing active connection but not seeing it working. What is ConnectionID, is it GUACD connection ID which is usually something like $7beb584d-d6e2-459d-86e9-e726091862cb? If so how can I retrieve it in my code? This is automatically generated when the connection is started, so you'll need to retrieve a list of active connections, which will give you the UUID (collection of random letters and numbers above) and then select the correct connection. -Nick
Re: Shared connection
On Wed, Dec 4, 2019 at 5:46 AM Umesh Bhatt wrote: > Hi Nick, > > > > Since currently it is not available, I am trying to implement in my custom > auth provider. > > > Well, it isn't *released*, but it is available...in git master. However, doing it in a custom authentication module should be fine, as well. > I am using GuacamoleConfiguration > setConnectionId(ALREADY_ACTIVE_CONNECTION_ID) > to join to existing active connection but not seeing it working. > > > What is ConnectionID, is it GUACD connection ID which is usually something > like $7beb584d-d6e2-459d-86e9-e726091862cb? > > If so how can I retrieve it in my code? > > > This is automatically generated when the connection is started, so you'll need to retrieve a list of active connections, which will give you the UUID (collection of random letters and numbers above) and then select the correct connection. -Nick >
RE: Shared connection
Hi Nick, Since currently it is not available, I am trying to implement in my custom auth provider. I am using GuacamoleConfiguration setConnectionId(ALREADY_ACTIVE_CONNECTION_ID) to join to existing active connection but not seeing it working. What is ConnectionID, is it GUACD connection ID which is usually something like $7beb584d-d6e2-459d-86e9-e726091862cb? If so how can I retrieve it in my code? Pls suggest. Regards, Umesh From: Nick Couchman Sent: Wednesday, December 4, 2019 2:10 AM To: user@guacamole.apache.org Subject: Re: Shared connection On Tue, Dec 3, 2019 at 5:47 AM Umesh Bhatt mailto:um...@nuvepro.com>> wrote: Hi, Thanks for sharing the information. I want to generate a shared connection by default with every user connection. This will help Admin to directly connect to user session and see what user is performing in the system. A feature has recently been added that will allow admins to connect directly to existing sessions without having to generate the shared connection keys. I believe it's in the git master branch and will be released after the 1.1.0 code (1.2.0 or 2.0.0). -Nick
Re: Shared connection
On Tue, Dec 3, 2019 at 5:47 AM Umesh Bhatt wrote: > Hi, > > > > Thanks for sharing the information. > > I want to generate a shared connection by default with every user > connection. This will help Admin to directly connect to user session and > see what user is performing in the system. > > > A feature has recently been added that will allow admins to connect directly to existing sessions without having to generate the shared connection keys. I believe it's in the git master branch and will be released after the 1.1.0 code (1.2.0 or 2.0.0). -Nick >
RE: Shared connection
Hi, Thanks for sharing the information. I want to generate a shared connection by default with every user connection. This will help Admin to directly connect to user session and see what user is performing in the system. Pls let me know if this is possible. Regards, Umesh From: Mike Jumper Sent: Thursday, November 28, 2019 1:11 PM To: user@guacamole.apache.org Subject: Re: Shared connection On Wed, Nov 27, 2019 at 11:02 PM Umesh Bhatt mailto:um...@nuvepro.com>> wrote: Hi, I am using custom authentication provider without DB. Now I want to share the created connection with others, can it be done? Yes. Even the database implementation is an authentication provider which leverages the same API. None of the extensions that are part of guacamole-client use anything that a third-party extension cannot use in exactly the same way. The part of the API that deals with sharing connections with others is pretty abstract. The database implementation uses a link containing a query parameter, but you can do just about anything here. It's really up to you to decide how things will be shared. The extension API conceptualizes this using credentials specific to sharing. Combined with sharing profiles, this mainly allows you to expose the ability to share the connection such that choices for sharing will be available in that "Share" menu within the Guacamole menu: http://guacamole.apache.org/doc/guacamole-ext/org/apache/guacamole/net/auth/Shareable.html The technical capability to share an active connection is independent of the above. Internally, all that matters is that you pull the ID generated by guacd for the connection to be shared, and provide that ID (rather than a protocol name) when connecting as a user sharing that connection. That's all you need to do for that second connection to join the first. Regardless of whether you use sharing credentials, the share menu, etc., it's the use of that ID that causes the underlying connection to be a shared connection. http://guacamole.apache.org/doc/guacamole-common/org/apache/guacamole/protocol/ConfiguredGuacamoleSocket.html#getConnectionID-- http://guacamole.apache.org/doc/guacamole-common/org/apache/guacamole/protocol/GuacamoleConfiguration.html#setConnectionID-java.lang.String- Note that this ID has nothing to do with database IDs or the more generic concept of identifiers in the extension API. It's purely a Guacamole protocol concept, used by guacd to uniquely identify active connections so they can be joined. You can see this covered briefly here: http://guacamole.apache.org/doc/gug/guacamole-protocol.html#guacamole-protocol-handshake - Mike
Re: Shared connection
On Wed, Nov 27, 2019 at 11:02 PM Umesh Bhatt wrote: > Hi, > > > > I am using custom authentication provider without DB. Now I want to share > the created connection with others, can it be done? > Yes. Even the database implementation is an authentication provider which leverages the same API. None of the extensions that are part of guacamole-client use anything that a third-party extension cannot use in exactly the same way. The part of the API that deals with sharing connections with others is pretty abstract. The database implementation uses a link containing a query parameter, but you can do just about anything here. It's really up to you to decide how things will be shared. The extension API conceptualizes this using credentials specific to sharing. Combined with sharing profiles, this mainly allows you to expose the ability to share the connection such that choices for sharing will be available in that "Share" menu within the Guacamole menu: http://guacamole.apache.org/doc/guacamole-ext/org/apache/guacamole/net/auth/Shareable.html The technical capability to share an active connection is independent of the above. Internally, all that matters is that you pull the ID generated by guacd for the connection to be shared, and provide that ID (rather than a protocol name) when connecting as a user sharing that connection. That's all you need to do for that second connection to join the first. Regardless of whether you use sharing credentials, the share menu, etc., it's the use of that ID that causes the underlying connection to be a shared connection. http://guacamole.apache.org/doc/guacamole-common/org/apache/guacamole/protocol/ConfiguredGuacamoleSocket.html#getConnectionID-- http://guacamole.apache.org/doc/guacamole-common/org/apache/guacamole/protocol/GuacamoleConfiguration.html#setConnectionID-java.lang.String- Note that this ID has nothing to do with database IDs or the more generic concept of identifiers in the extension API. It's purely a Guacamole protocol concept, used by guacd to uniquely identify active connections so they can be joined. You can see this covered briefly here: http://guacamole.apache.org/doc/gug/guacamole-protocol.html#guacamole-protocol-handshake - Mike