[jira] [Commented] (GUACAMOLE-137) Feature Request - Quick Connect

2017-01-01 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15791638#comment-15791638
 ] 

Nick Couchman commented on GUACAMOLE-137:
-

I agree this would be really nice.  I actually started working on an 
implementation of this.  Given the nature of needing to define the connection 
both on the back-end (Java Servlet) and the front-end (AngularJS application), 
I was wondering if the best way to handle this within Guacamole is to actually 
use an extension similar to the JDBC ones, but instead of a persistent on-disk 
database, create an in-memory database with the connections.  A "Quick-Connect" 
area could be created on the home screen, and when the connection information 
is entered the connection will be created in the in-memory database and then 
connected both on guacd and web side.

Maybe there's a simpler way - maybe I'm overthinking it, but that's the 
direction I was working.  I was also thinking of making it an extension, not a 
patch or change to the core Guacamole application.

> Feature Request - Quick Connect
> ---
>
> Key: GUACAMOLE-137
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-137
> Project: Guacamole
>  Issue Type: New Feature
>Reporter: Greg
>Priority: Minor
>  Labels: features
>
> A feature that I would find very handy is to have a Quick Connect options so 
> that rather than creating a connection, there is a text box that accepts the 
> server name with a drop down on the service type (RDP, VNC, etc) with some 
> preconfigured defaults...
> Personally, I have a lot of servers and it would be much quicker for me to 
> type the server name than creating all of the connections
> Thanks,
> Greg



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (GUACAMOLE-151) Support Prompting for Authenticators

2017-01-01 Thread Nick Couchman (JIRA)
Nick Couchman created GUACAMOLE-151:
---

 Summary: Support Prompting for Authenticators
 Key: GUACAMOLE-151
 URL: https://issues.apache.org/jira/browse/GUACAMOLE-151
 Project: Guacamole
  Issue Type: New Feature
  Components: guacamole
Affects Versions: 0.9.10-incubating
Reporter: Nick Couchman
Priority: Minor


Support interactive authentication prompts for connections.  There are several 
reasons for this:
- Ability to create connections at an administrative level that apply to many 
users.
- Ability to support RDP NLA authentication/encryption without having to save 
authenticators.
- Ability to have Guacamole authentication different from connection 
authentication in the above scenarios - no GUAC_USERNAME/PASSWORD passthrough.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-151) Support Prompting for Authenticators

2017-01-01 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15792106#comment-15792106
 ] 

Nick Couchman commented on GUACAMOLE-151:
-

What if we did a special value similar to the ${GUAC_USERNAME} (and password) 
ones that triggers a prompt for that value - something like ${GUAC_PROMPT}?

> Support Prompting for Authenticators
> 
>
> Key: GUACAMOLE-151
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-151
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole
>Reporter: Nick Couchman
>Priority: Minor
>
> Support interactive authentication prompts for connections.  There are 
> several reasons for this:
> - Ability to create connections at an administrative level that apply to many 
> users.
> - Ability to support RDP NLA authentication/encryption without having to save 
> authenticators.
> - Ability to have Guacamole authentication different from connection 
> authentication in the above scenarios - no GUAC_USERNAME/PASSWORD passthrough.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-47) Get client hostname for use in guac RDP session

2017-01-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-47?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15805027#comment-15805027
 ] 

Nick Couchman commented on GUACAMOLE-47:


Could you clarify what your use-case is for this particular request - what are 
you wanting to do with the "Clientname" variable?

> Get client hostname for use in guac RDP session
> ---
>
> Key: GUACAMOLE-47
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-47
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole-client
>Affects Versions: 0.9.9
>Reporter: Zach Bonjour
>Priority: Minor
>
> The "Clientname" variable should show the client name connected to the Apache 
> server.  I am not a programmer, but if I am understanding this right, there 
> is a java servlet that could gather that information so it can be used in the 
> Guacamole session.
> http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteHost()
> Is this possible?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-137) Feature Request - Quick Connect

2017-01-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15805162#comment-15805162
 ] 

Nick Couchman commented on GUACAMOLE-137:
-

I believe these issues are roughly the same request, combining them.

> Feature Request - Quick Connect
> ---
>
> Key: GUACAMOLE-137
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-137
> Project: Guacamole
>  Issue Type: New Feature
>Reporter: Greg
>Priority: Minor
>  Labels: features
>
> A feature that I would find very handy is to have a Quick Connect options so 
> that rather than creating a connection, there is a text box that accepts the 
> server name with a drop down on the service type (RDP, VNC, etc) with some 
> preconfigured defaults...
> Personally, I have a lot of servers and it would be much quicker for me to 
> type the server name than creating all of the connections
> Thanks,
> Greg



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-47) Get client hostname for use in guac RDP session

2017-01-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-47?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15806239#comment-15806239
 ] 

Nick Couchman commented on GUACAMOLE-47:


Okay, I've got an initial implementation of this going, which I'll link to 
after I get it onto GitHub and make sure all of my changes match the 
contribution guidelines.  There are some caveats:
- The easiest way to make this work is to grab the 
HttpServletRequest.getRemoteHost() and getRemoteAddr() values and use those.  
It's a little more complicated than just that, but that gets what the servlet 
has as the remote host.  Unfortunately this doesn't always work as expected, 
particularly in situations where Guacamole/Tomcat is behind a reverse proxy, 
like Apache/mod_proxy or Nginx.
- Dealing with the reverse proxy issue isn't too terribly difficult - there's a 
X-Forwarded-For header that is set by Apache's mod_proxy that can be passed 
through to the servlet.  This has a couple of catches, though - first, it only 
passes through the IP address that it is forwarding for (essentially the 
original REMOTE_ADDR request header), and, second, you have to do a little bit 
extra Tomcat configuration to allow it to be passed through (via the RemoteIP 
valve).
- To deal with proxy scenarios and get both the original REMOTE_HOST and 
REMOTE_ADDR values, you have to set up custom headers in whatever you're using 
to proxy, and the Guacamole code has to deal with it.  I've written the code to 
use the custom X-Guacamole-Client-Host and X-Guacamole-Client-IP headers.

I'm actually going to deal with these in reverse order - check for the custom 
headers, first, check for the X-Forwarded-For header, next, and finally use the 
getRemoteHost and getRemoteAddr methods.

I'm happy to take comments from anyone off the bat - I'll post the forked 
GitHub code in a little while.

> Get client hostname for use in guac RDP session
> ---
>
> Key: GUACAMOLE-47
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-47
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole-client
>Affects Versions: 0.9.9
>Reporter: Zach Bonjour
>Priority: Minor
>
> The "Clientname" variable should show the client name connected to the Apache 
> server.  I am not a programmer, but if I am understanding this right, there 
> is a java servlet that could gather that information so it can be used in the 
> Guacamole session.
> http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteHost()
> Is this possible?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-47) Get client hostname for use in guac RDP session

2017-01-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-47?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15806405#comment-15806405
 ] 

Nick Couchman commented on GUACAMOLE-47:


So, code should be ready for review and to try out - if people think I should 
submit a pull request, I will, or if you'd rather review in my git repo before 
that, that's fine by me.  I think I messed up one of the contribution 
guidelines in that I committed to the master branch instead of creating a 
separate branch, but hopefully that's not a show-stopper.  If it is, I'll redo 
it.  Here's the repo URL:

https://github.com/necouchman/incubator-guacamole-client

To use it, compile and load up the guacamole code.  The two new tokens are:
- GUAC_REMHOST
- GUAC_REMIP

If you're connecting to Guacamole directly through Tomcat this should work with 
no additional configuration, aside from using the tokens in the connection 
configuration.

If you're using a proxy, you'll need to do one of two things:
1) Define the X-Guacamole-Client-Hostname and/or X-Guacamole-Client-IP headers. 
 Here's an example for Apache that uses the REMOTE_HOST and REMOTE_ADDR headers:

RequestHeader set X-Guacamole-Client-Hostname %{REMOTE_HOST}s
RequestHeader set X-Guacamole-Client-IP %{REMOTE_ADDR}s

2) Configure Tomcat to allow the X-Forwarded-For header to be passed through.  
This is done with the following configuration in server.xml.  Remember this 
will only ever have the IP address - X-Forwarded-For never has the hostname.


Note that you need to set internalProxies to the list of hosts that are 
proxying to Guacamole.  In my case I'm just doing it on the local system, so I 
have 127.0.0.1.

> Get client hostname for use in guac RDP session
> ---
>
> Key: GUACAMOLE-47
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-47
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole-client
>Affects Versions: 0.9.9
>Reporter: Zach Bonjour
>Priority: Minor
>
> The "Clientname" variable should show the client name connected to the Apache 
> server.  I am not a programmer, but if I am understanding this right, there 
> is a java servlet that could gather that information so it can be used in the 
> Guacamole session.
> http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteHost()
> Is this possible?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-29) Add support for requesting HTTP Basic Authentication

2017-01-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-29?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15806734#comment-15806734
 ] 

Nick Couchman commented on GUACAMOLE-29:


So, I took a look at the previous PR and the Guacamole source code has changed 
enough between the PR and the Apache Incubator version that I decided just to 
rewrite it as an extension module.  I have the initial stab out on Github if 
anyone wants to take a look and comment/criticize/contribute:

https://github.com/necouchman/guacamole-auth-http/tree/GUACAMOLE-29

A couple of notes:
- I have yet to test this out in a Tomcat environment without a proxy in front 
of it.  I'll try to get it tested out here, but I'm making the assumption that 
it works.
- If you're using a proxy you have to configure it to pass through REMOTE_USER 
(or your user-defined header).  In Apache you can do this using the 
RequestHeader set configuration option.
- If you'd rather use a different header than REMOTE_USER, you can configure it 
via the guacamole.properties file and set the http-auth-header option.

> Add support for requesting HTTP Basic Authentication
> 
>
> Key: GUACAMOLE-29
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-29
> Project: Guacamole
>  Issue Type: Improvement
>Reporter: Michael Jumper
>
> {panel:bgColor=#EE}
> *The description of this issue was copied from 
> [GUAC-1489|https://glyptodon.org/jira/browse/GUAC-1489], an issue in the JIRA 
> instance used by the Guacamole project prior to its acceptance into the 
> Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance 
> *have not been copied* and can be found instead at the original issue.
> {panel}
> Some reverse proxies support SSO via HTTP Basic authentication if the server 
> requests it with 401 Unauthorized response.
> As Guacamole already reads Authorization header, it looks trivial to add 
> guacamole.properties option such as "enable-http-basic-auth", to tell 
> Guacamole to request HTTP Basic Authentication .
> PR on its way :)
> Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (GUACAMOLE-47) Get client hostname for use in guac RDP session

2017-01-07 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-47?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15806405#comment-15806405
 ] 

Nick Couchman edited comment on GUACAMOLE-47 at 1/7/17 4:21 PM:


So, code should be ready for review and to try out - if people think I should 
submit a pull request, I will, or if you'd rather review in my git repo before 
that, that's fine by me.  I think I messed up one of the contribution 
guidelines in that I committed to the master branch instead of creating a 
separate branch, but hopefully that's not a show-stopper.  If it is, I'll redo 
it.  Here's the repo URL:

https://github.com/necouchman/incubator-guacamole-client

To use it, compile and load up the guacamole code.  The two new tokens are:
- GUAC_REMHOST
- GUAC_REMIP

If you're connecting to Guacamole directly through Tomcat this should work with 
no additional configuration, aside from using the tokens in the connection 
configuration.

If you're using a proxy, you'll need to do one of two things:
1) Define the X-Guacamole-Client-Hostname and/or X-Guacamole-Client-IP headers. 
 Here's an example for Apache that uses the REMOTE_HOST and REMOTE_ADDR headers:
{code}
RequestHeader set X-Guacamole-Client-Hostname %{REMOTE_HOST}s
RequestHeader set X-Guacamole-Client-IP %{REMOTE_ADDR}s
{code}
2) Configure Tomcat to allow the X-Forwarded-For header to be passed through.  
This is done with the following configuration in server.xml.  Remember this 
will only ever have the IP address - X-Forwarded-For never has the hostname.
{code:xml}

{code}
Note that you need to set internalProxies to the list of hosts that are 
proxying to Guacamole.  In my case I'm just doing it on the local system, so I 
have 127.0.0.1.


was (Author: nick.couch...@yahoo.com):
So, code should be ready for review and to try out - if people think I should 
submit a pull request, I will, or if you'd rather review in my git repo before 
that, that's fine by me.  I think I messed up one of the contribution 
guidelines in that I committed to the master branch instead of creating a 
separate branch, but hopefully that's not a show-stopper.  If it is, I'll redo 
it.  Here's the repo URL:

https://github.com/necouchman/incubator-guacamole-client

To use it, compile and load up the guacamole code.  The two new tokens are:
- GUAC_REMHOST
- GUAC_REMIP

If you're connecting to Guacamole directly through Tomcat this should work with 
no additional configuration, aside from using the tokens in the connection 
configuration.

If you're using a proxy, you'll need to do one of two things:
1) Define the X-Guacamole-Client-Hostname and/or X-Guacamole-Client-IP headers. 
 Here's an example for Apache that uses the REMOTE_HOST and REMOTE_ADDR headers:

RequestHeader set X-Guacamole-Client-Hostname %{REMOTE_HOST}s
RequestHeader set X-Guacamole-Client-IP %{REMOTE_ADDR}s

2) Configure Tomcat to allow the X-Forwarded-For header to be passed through.  
This is done with the following configuration in server.xml.  Remember this 
will only ever have the IP address - X-Forwarded-For never has the hostname.


Note that you need to set internalProxies to the list of hosts that are 
proxying to Guacamole.  In my case I'm just doing it on the local system, so I 
have 127.0.0.1.

> Get client hostname for use in guac RDP session
> ---
>
> Key: GUACAMOLE-47
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-47
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole-client
>Affects Versions: 0.9.9
>Reporter: Zach Bonjour
>Priority: Minor
>
> The "Clientname" variable should show the client name connected to the Apache 
> server.  I am not a programmer, but if I am understanding this right, there 
> is a java servlet that could gather that information so it can be used in the 
> Guacamole session.
> http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteHost()
> Is this possible?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-142) Implement a web-browser UA as one of the client protocols

2017-01-07 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15807747#comment-15807747
 ] 

Nick Couchman commented on GUACAMOLE-142:
-

This request appears to be the same as GUACAMOLE-57.

> Implement a web-browser UA as one of the client protocols
> -
>
> Key: GUACAMOLE-142
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-142
> Project: Guacamole
>  Issue Type: New Feature
>Reporter: Kristopher Lalletti
>  Labels: features
>
> I saw this on a similar product; basically, on-top-and-above supporting 
> RDP/VNC/SSH/TELNET, support web applications through a stripped-down web 
> browser running from the guacd host.
> As a lot of applications/administration consoles are moving towards HTML5 
> interfaces; this opens-up some interesting potential to leverage Guacamole as 
> a gateway to secure web apps where one would want to isolate everything 
> except the display rendered to the end-user.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-47) Get client hostname for use in guac RDP session

2017-01-25 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-47?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15837932#comment-15837932
 ] 

Nick Couchman commented on GUACAMOLE-47:


Pull request 109 created:
https://github.com/apache/incubator-guacamole-client/pull/109

> Get client hostname for use in guac RDP session
> ---
>
> Key: GUACAMOLE-47
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-47
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole-client
>Affects Versions: 0.9.9
>Reporter: Zach Bonjour
>Priority: Minor
>
> The "Clientname" variable should show the client name connected to the Apache 
> server.  I am not a programmer, but if I am understanding this right, there 
> is a java servlet that could gather that information so it can be used in the 
> Guacamole session.
> http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteHost()
> Is this possible?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-29) Add support for requesting HTTP Basic Authentication

2017-01-25 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-29?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15838147#comment-15838147
 ] 

Nick Couchman commented on GUACAMOLE-29:


Pull request created:
https://github.com/apache/incubator-guacamole-client/pull/110

> Add support for requesting HTTP Basic Authentication
> 
>
> Key: GUACAMOLE-29
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-29
> Project: Guacamole
>  Issue Type: Improvement
>Reporter: Michael Jumper
>
> {panel:bgColor=#EE}
> *The description of this issue was copied from 
> [GUAC-1489|https://glyptodon.org/jira/browse/GUAC-1489], an issue in the JIRA 
> instance used by the Guacamole project prior to its acceptance into the 
> Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance 
> *have not been copied* and can be found instead at the original issue.
> {panel}
> Some reverse proxies support SSO via HTTP Basic authentication if the server 
> requests it with 401 Unauthorized response.
> As Guacamole already reads Authorization header, it looks trivial to add 
> guacamole.properties option such as "enable-http-basic-auth", to tell 
> Guacamole to request HTTP Basic Authentication .
> PR on its way :)
> Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-29) Add support for requesting HTTP Basic Authentication

2017-01-25 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-29?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15838375#comment-15838375
 ] 

Nick Couchman commented on GUACAMOLE-29:


Sorry, new pull request after dealing with some git issues:
https://github.com/apache/incubator-guacamole-client/pull/111

> Add support for requesting HTTP Basic Authentication
> 
>
> Key: GUACAMOLE-29
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-29
> Project: Guacamole
>  Issue Type: Improvement
>Reporter: Michael Jumper
>
> {panel:bgColor=#EE}
> *The description of this issue was copied from 
> [GUAC-1489|https://glyptodon.org/jira/browse/GUAC-1489], an issue in the JIRA 
> instance used by the Guacamole project prior to its acceptance into the 
> Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance 
> *have not been copied* and can be found instead at the original issue.
> {panel}
> Some reverse proxies support SSO via HTTP Basic authentication if the server 
> requests it with 401 Unauthorized response.
> As Guacamole already reads Authorization header, it looks trivial to add 
> guacamole.properties option such as "enable-http-basic-auth", to tell 
> Guacamole to request HTTP Basic Authentication .
> PR on its way :)
> Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-168) Add support for X.Org

2017-01-25 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15838407#comment-15838407
 ] 

Nick Couchman commented on GUACAMOLE-168:
-

I'm not sure if this is related to this issue or not, but alongside this, and 
one of the reasons that X2Go and NX are nice, is session persistence.  This is 
currently difficult to do with VNC, as it requires that you have a specific 
port allocated for each user and that you somehow keep track of that port.  
X2Go and NX implement a back-end that keeps track of user sessions and allows 
disconnecting and reconnecting without losing the state of the session.  This 
would be *really* nice, in addition to all of the obvious performance 
benefits...I'm just not sure it is within the scope of the Guacamole project 
itself, since that is more a function of those specific protocols (RDP, NX, 
X2Go, etc.).

> Add support for X.Org
> -
>
> Key: GUACAMOLE-168
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-168
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole-client, guacamole-server
>Reporter: Michael Jumper
>Assignee: Michael Jumper
>
> It's been frequently requested that we add support for a more efficient 
> protocol like NX or X2Go. Though that sounds nice on the surface, and 
> theoretically would allow us to leverage some of Guacamole's nicer 
> protocol-level features, investigating deeper reveals:
> # X2Go *is* NX - it uses the same protocol behind the scenes.
> # NX isn't really a protocol - it is essentially a compressor for X11, and 
> depends on the client having a local X11 server to handle the decompressed 
> result.
> Implementing support for either of these would thus involve implementing 
> support for X11, which is crazy. *However:*
> What about implementing a driver for the X.Org X11 server?
> The X.Org server provides a driver abstraction layer which exposes access to 
> windows (including their hierarchy) and pixmaps, much in the same way the 
> Guacamole protocol provides nestable layers and buffers. If we were to 
> implement a Guacamole driver for X.Org, we would be able to make much greater 
> use Guacamole protocol features like client-side compositing. Operations 
> which are typically expensive in VNC or RDP like window movement suddenly 
> become simple, as they only involve updating the properties of a layer.
> I have an experimental implementation of all this, built upon several other 
> improvements which ended up being required. Work started several years ago, 
> even before Guacamole was accepted into the Apache Incubator, but I think 
> it's finally ready to move forward. I've been using it myself for roughly a 
> month now, and so far so good.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (GUACAMOLE-103) SAML 2.0 support for user authentication

2017-01-25 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-103?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15838411#comment-15838411
 ] 

Nick Couchman commented on GUACAMOLE-103:
-

There are a couple of potential starting points for this:
- Mike has an implementation of an OpenID module: 
https://github.com/mike-jumper/guacamole-auth-openid
- Using the OpenID module as a base, I have a very preliminary implementation 
of a CAS module: https://github.com/necouchman/guacamole-auth-cas

The OpenID module is probably the best starting place for SAML, since I believe 
OpenID is using SAML. You could check out that module and see if it works at 
all for you.

> SAML 2.0 support for user authentication
> 
>
> Key: GUACAMOLE-103
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-103
> Project: Guacamole
>  Issue Type: New Feature
>Reporter: Justin P
>
> It'd be great if Guacamole supported SAML 2.0 so it could integrate with an 
> organization's single sign-on (SSO) solution (especially popular platforms 
> like OneLogin, Okta, Bitium, etc.)
> This would make authenticating to Guacamole easier for an organization's 
> users, and it would make organization's IT/IS admins happier being able to 
> apply authentication security controls to guacamole, such as password 
> complexity rules, two-factor authentication rules, etc.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (GUACAMOLE-195) Support for HTTP Header-Based Authentication

2017-01-31 Thread Nick Couchman (JIRA)
Nick Couchman created GUACAMOLE-195:
---

 Summary: Support for HTTP Header-Based Authentication
 Key: GUACAMOLE-195
 URL: https://issues.apache.org/jira/browse/GUACAMOLE-195
 Project: Guacamole
  Issue Type: Improvement
  Components: guacamole, guacamole-client
Affects Versions: 0.9.10-incubating
Reporter: Nick Couchman
Priority: Minor
 Fix For: 0.9.12-incubating


Many SSO solutions and reverse proxies support authenticating users and passing 
the authentication information via an HTTP header, the most common of which is 
REMOTE_USER.  This authentication extension supports ingesting REMOTE_USER, or 
a value defined in guacamole.properites, and using that to determine the user.

PR is 111, but needs to be rebased and renamed to match this issue.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-05 Thread Nick Couchman (JIRA)
Nick Couchman created GUACAMOLE-197:
---

 Summary: Implement Support for RADIUS Authentication
 Key: GUACAMOLE-197
 URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
 Project: Guacamole
  Issue Type: Improvement
  Components: guacamole, guacamole-client
Affects Versions: 0.9.11-incubating
Reporter: Nick Couchman
Priority: Minor


Working on implementing a RADIUS authentication module - guacamole-auth-radius. 
 The basic implementation is completed - with a basic PAP or CHAP RADIUS 
server, the authentication succeeds and the user is logged in.

I'm running into an issue, though, trying to implement Challenge/Response in 
RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, and 
RADIUS sends the AccessChallenge package back, asking for the second factor.  
My issue is in my continual failure to grasp the connection between the servlet 
side and the AngularJS web application.  I've copied the Duo authentication 
code and tried to morph it into something that will present another box for the 
RADIUS challenge, but I can't get my controller function to actually fire.

Once that is working, I'd like to support other RADIUS authentication 
protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be done, 
but right now I'm focusing on the basic protocols and the challenge/response.

Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-05 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15853339#comment-15853339
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

My working branch for this issue is here:
https://github.com/necouchman/incubator-guacamole-client/tree/GUACAMOLE-197

As stated before, general RADIUS support should work fine for anything that 
doesn't require a AccessChallenge response, or doesn't require any additional 
encryption configuration/certificates.  Current parameters are as follows:

radius-server
radius-auth-port
radius-acct-port
radius-shared-secret
radius-auth-protocol

I'll take any help getting the following things to work:
- AngularJS prompt for the RADIUS Challenge/Response
- Additional RADIUS protocols that support encryption,.certificates, and 
tunneling.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>  Labels: features
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-05 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15853432#comment-15853432
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

bq. I see that you're using GuacamoleInsufficientCredentialsException, which is 
the intended mechanism to report that additional credentials are needed (such 
as a response to a challenge). What issues are you having specifically?

So, as you can see in the source code, I check the response packet, and, when I 
get the AccessChallenge response, I throw the 
GuacamoleInsufficientCredentialsException.  I set up the field with the same 
field type specified on the AngularJS side, and pass that through to the 
insufficient credentials method.  I've got the JS stuff set up the way I think 
it ought to be set up, but the controller method never actually runs, and the 
challenge field/template is never displayed.  I'm sure it's either a simple 
typo or I haven't fully grasped the integration between the servlet and the 
Angular stuff, so I'm not sure why it isn't firing and displaying the challenge 
box.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15853949#comment-15853949
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Yeah, so something is not working, there.  Here's the response I get back:
{noformat}
{"message":"Invalid login","translatableMessage":{"key":"Invalid 
login","variables":null},"statusCode":null,"expected":[{"name":"username","type":"USERNAME"},{"name":"password","type":"PASSWORD"}],"type":"INVALID_CREDENTIALS"}
{noformat}

So, I'm guessing that the end there should be INSUFFICIENT_CREDENTIALS instead 
of INVALID_CREDENTIALS?  And, in the Tomcat log output, I see the following:
{noformat}
07:55:14.055 [http-nio-8080-exec-251] DEBUG 
o.a.g.a.l.AuthenticationProviderService - Unable to determine DN for user 
"Andy_Taylor".
07:55:14.058 [http-nio-8080-exec-251] DEBUG o.a.g.a.r.RadiusConnectionService - 
Sending authentication request to radius server for user Andy_Taylor.
07:55:14.102 [http-nio-8080-exec-251] DEBUG 
o.a.g.a.r.AuthenticationProviderService - RADIUS sent challenge response: 
Please enter your otp value:
07:55:14.103 [http-nio-8080-exec-251] DEBUG 
o.a.g.a.r.AuthenticationProviderService - RADIUS sent state: [B@3b5376ab
07:55:14.103 [http-nio-8080-exec-251] DEBUG 
o.a.g.a.r.f.RadiusChallengeResponseField - Initializing the RADIUS 
challenge/response field: Please enter your otp value:
07:55:14.103 [http-nio-8080-exec-251] DEBUG 
o.a.g.a.f.FileAuthenticationProvider - User mapping file 
"/etc/guacamole/user-mapping.xml" does not exist and will not be read.
07:55:14.103 [http-nio-8080-exec-251] WARN  o.a.g.r.auth.AuthenticationService 
- Authentication attempt from [10.43.112.36, 0:0:0:0:0:0:0:1] for user 
"Andy_Taylor" failed.
{noformat}

I would guess that last part - authentication attempt failed - is what's 
causing the JSON response to be INVALID_CREDENTIALS instead of 
INSUFFICIENT_CREDENTIALS, just not sure at the moment why it's throwing that.  
Maybe I'll unload some of the other authentication modules that are in my 
extensions folder and see if that helps. 

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15854004#comment-15854004
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Pulled out the LDAP authentication module and another development one that I'm 
working on, and I get the same result - somewhere along the way the 
INSUFFICIENT_CREDENTIALS is getting changed to INVALID_CREDENTIALS...

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15854012#comment-15854012
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Loaded the DUO module and verified that it throws INSUFFICIENT_CREDENTIALS 
correctly, so that works...something I'm doing with the RADIUS module is not 
quite right...

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15854432#comment-15854432
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Aha.  Renaming the extension to guacamole-auth-0radius.jar did the trick and 
presents the box for the additional credentials.  It doesn't look pretty or 
actually work at the moment, but it's progress.  Thanks.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15854575#comment-15854575
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Okay, making progress here, but have another question.  When the RADIUS server 
sends back the AccessChallenge packet, it also sents a "State" parameter that 
needs to be saved and used to process the remainder of the authentication.  So, 
something like this:
- Send Username, Password
- Receive Challenge, State
- Send Username, State, Response
- Receive Accept/Reject

For the connection state, is the best way to do this to pass the state into the 
AngularJS form where the user enters the challenge response, and then somehow 
pass it back, or is there some way to internally add the state to the Java 
servlet side such that I can pick it back up and use it, again?  I'd rather not 
pass it through the browser front-end if I don't have to - seems more secure if 
I can keep it all on the servlet side - but I'm not sure the best place to 
create that storage item.  I tried to just add it to the 
AuthenticationProviderService class that I'm implementing in the module, but it 
looks like the class gets re-instantiated during the second go-around, so there 
isn't anything persistent there.  I'm not sure if there's another session class 
I should use or something like that?

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15855255#comment-15855255
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Here's the documentation on the attribute itself from the IETF standard:
https://tools.ietf.org/html/rfc2865#section-5.24

>From what I can tell reading that and some other Internet sources, the risk of 
>exposing the state field to the authenticating user should be minimal.  My 
>rationale is as follows:
- The state field appears to be just a session marker in the RADIUS 
conversation, used specifically when the authenticating system needs to provide 
additional information to the server, or when the RADIUS server needs to do 
something at termination of a connection.
- There hasn't been a lot done to obfuscate or encrypt the field itself.  The 
RADIUS protocol as a whole has developed several security measures to protect 
the overall transmission, but there hasn't been any focus on the state protocol 
specifically.
- Obviously a third-party attacker being able to read the state field could use 
it to try to impersonate the user or intercept the connection; however, there's 
equally (more?) sensitive data in the payload than the state - like username 
and password.

So, I don't think there's any harm in the person who's doing the authentication 
seeing the state value.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-07 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15856087#comment-15856087
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Got it...will just pass it through as a hidden field in the challenge/response 
process, unless there's a better way to do it.

Having cleared that hurdle, I'm on to the next one - how to deal with the value 
of the state parameter in a safe way.  When I look at the debug output from 
FreeRADIUS, the state shows up as a hexadecimal value.  When I deal with it as 
a String in Java, it almost looks like a binary value.  Tried a few rounds of 
converting it to an integer and dealing with it that way, but that didn't seem 
to work, so going to try a byte array, now, and see what happens.  Only concern 
is trying to pass a binary value through to AngularJS and then get it back 
safely...fun times!

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-07 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15856728#comment-15856728
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Finally, figured out the right incantation of JRadius methods to get the state 
out in a sane fashion.  Will have updated code committed here, shortly.  This 
particular module should be functional now for PAP, CHAP, and several MS-CHAP 
RADIUS protocols - basically anything that doesn't require extra security like 
TLS.  I need to fix some display issues with the Challenge/Response prompt, as 
well.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-07 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15857290#comment-15857290
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Okay, working module, and the prompt for the additional response looks much 
better, and should be relatively translation-friendly.

Now I need to work on steps necessary to support the additional RADIUS 
authentication protocols, which will probably mean reorganizing some of the 
code in the RadiusConnectionService class.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-09 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15859591#comment-15859591
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Reorganized the code a bit.  Need to get a RADIUS server set up to test out 
some of the TLS protocols and make sure those work, but so far so good.

I am having trouble with MAVEN and signed modules.  The jradius-extended 
dependency pulls in another one called BouncyCastle, which is a SSL/TLS 
implementation for Java.  One of those modules is signed, and it's causing all 
sorts of trouble getting the RADIUS Authentication module to load.  I tried 
several incantations for a couple hours yesterday to get MAVEN to filter out 
the signing files when building the RADIUS jar file, to no avail.  I can post 
more info, if needed, but any suggestions there would be appreciated.  For the 
time being I've resorted to manually using the zip command to remove the 
signatures from the resulting JAR...obviously that's a poor long-term solution.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-09 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15860128#comment-15860128
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Latest commit to my branch results in working PAP, CHAP, and EAP-MD5 
authentication protocols via RADIUS.  Next stop: TLS varieties - PEAP, EAP-TLS, 
and EAP-TTLS.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (GUACAMOLE-204) Support CAS Single Sign On

2017-02-10 Thread Nick Couchman (JIRA)
Nick Couchman created GUACAMOLE-204:
---

 Summary: Support CAS Single Sign On
 Key: GUACAMOLE-204
 URL: https://issues.apache.org/jira/browse/GUACAMOLE-204
 Project: Guacamole
  Issue Type: Improvement
  Components: guacamole-client
Affects Versions: 0.9.11-incubating
Reporter: Nick Couchman
Priority: Minor


Implement authentication module to support Apereo CAS Single Sign On (SSO) 
integration.  Pull request to follow shortly.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-204) Support CAS Single Sign On

2017-02-10 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15861310#comment-15861310
 ] 

Nick Couchman commented on GUACAMOLE-204:
-

Pull request 121:

https://github.com/apache/incubator-guacamole-client/pull/121

> Support CAS Single Sign On
> --
>
> Key: GUACAMOLE-204
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-204
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Implement authentication module to support Apereo CAS Single Sign On (SSO) 
> integration.  Pull request to follow shortly.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-10 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15861880#comment-15861880
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Okay, confirmed that the following RADIUS protocols work correctly: PAP, CHAP, 
EAP-MD5, EAP-TLS, and EAP-TTLS.  I cannot get PEAP to work at the moment - 
there's an issue opened on the JRadius github project with another user having 
a similar issue, and I'm uncertain if it's an implementation issue in my code 
or in the JRadius code.  I'm tempted to go ahead and submit a PR for this as-is 
with the caveat that PEAP does not work, and address PEAP later, but will 
definitely continue to hammer on PEAP and see if I can figure out what I'm not 
doing quite right.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-02-10 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15861944#comment-15861944
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

MS-CHAP varieties should also be working.  I found that the JRadius simulator 
behaves identically with PEAP as the current implementation for the Guacamole 
module, so I'm fairly confident it's either my configuration of FreeRADIUS or 
something internal to the JRadius implementation.  Pull request coming soon.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Priority: Minor
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-102) Loadbalancing based on resource

2017-03-03 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15895446#comment-15895446
 ] 

Nick Couchman commented on GUACAMOLE-102:
-

So, I was looking at the history of this as well as the commit request that was 
originally opened for this and was thinking about a potential approach.  It 
seems like the changes to the Guacamole Client code could remain pretty minimal:
- Implement a connection weight field for individual connections, but only 
reference it when the connection is part of a Connection Group of type 
BALANCING.  I haven't dug into the parameter vs. attribute vs. arbitrary data 
issue mentioned in the commit request, but a simple connection weight field 
that is a positive integer should do the trick.
- Tweak the Guacamole balancer algorithm from round-robin to weighted 
round-robin, where the default weight of each connection is 1 if not defined, 
can be set manually for the connection, or can be externally manipulated.

The part that I think bears further discussion is the "some other means" of 
manipulating the weight.  Is that something that really belongs in the 
Guacamole Client code, or is it something that, if hooks are provided, might 
belong to some other component or external application?  When you start talking 
about an agent that goes on a remote server to monitor the server and adjust 
the weight, the scope of the "guacamole client" expands a little bit.

Also, if we decide load monitoring/balancing is within the scope of the 
guacamole client, there might be some other existing ways to monitor load that 
don't require reinventing the wheel.  SNMP comes to mind, since agents are 
readily available and easily configurable on most platforms, and there are also 
things like WinRM and WMI that might also provide the required information for 
Windows hosts.  However, if you use existing technologies like SNMP that would 
require something else - either code inside Guacamole or another 
daemon/job/script - to periodically poll the servers in the connection group 
and adjust the weight.

Thoughts?

> Loadbalancing based on resource
> ---
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Priority: Minor
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-243) ldap auth fails when search results include an LDAP referral

2017-03-17 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15930099#comment-15930099
 ] 

Nick Couchman commented on GUACAMOLE-243:
-

So, I guess my first question here is this: is simply ignoring the error the 
right thing to do?  I understand the problem, particularly with AD (and it 
helps me understand why I had to point my Guacamole instance at the GC port 
:-), but it seems like it would probably be a more proper LDAP client 
implementation if it did something with the failure to follow the referral.

For one thing, perhaps we should add a configuration item to the 
guacamole.properties file that controls whether or not referrals are followed 
at all, and then, based on whether that is configured or not and if this error 
gets received, do something with the error.  Ignoring it might be one possible 
route to go (e.g. if you explicitly disabled following referrals), but you also 
might want to do something else with the error if you expect the referral to be 
followed and it isn't.

-Nick

> ldap auth fails when search results include an LDAP referral
> 
>
> Key: GUACAMOLE-243
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-243
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Reporter: Adam Thorn
>
> The ldap search in 
> extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserService.java
>  to find the DN of the user who is logging in (i.e. inside getUserDNs() ) 
> fails if the LDAPSearchResults include an LDAP referral, because 
> LDAPSearchResults.next() throws an LDAPReferralException:
> https://www.novell.com/documentation/developer/jldap/jldapenu/api/com/novell/ldap/LDAPSearchResults.html#next()
> This particularly affects Active Directory, where typically the LDAP 
> implementation has separate partitions for DNS zones and Configuration (see 
> e.g. 
> http://stackoverflow.com/questions/32989159/ldapsearch-entire-active-directory-without-refldap-returns
>  for an example of the three LDAP referrals that AD returns). Empirically, 
> against my AD, even when an ldap search for (sAMAccountName=$USERNAME) 
> correctly returns the dn for the searched-for $USERNAME , I still also get 
> the three ldap referrals mentioned in that stackoverflow post. Thus, even 
> though the first result in the LDAPSearchResults has the correct dn for the 
> user logging in, results.next() then throws an exception when it encounters 
> the referral and the login fails.
> This only happens when ldap-user-base-dn is set to the base dn of my AD (i.e. 
> with dc=example,dc=com I get referrals, but with ou=Users,dc=example,dc=com 
> as the search base I do not). The structure of my AD requires me to set the 
> base dn as the search base, though.
> N.B. A possible workaround is to explicitly query the Global Catalog (by 
> setting ldap-port: 3268). However, that performs a forest-wide search rather 
> than just a domain-wide search, which might not be desired.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-243) ldap auth fails when search results include an LDAP referral

2017-03-17 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15930123#comment-15930123
 ] 

Nick Couchman commented on GUACAMOLE-243:
-

Looking at the following Novell (MicroFocus/HPE) documentation:
https://www.novell.com/documentation/developer/jldap/jldapenu/data/aaf0eaa.html#aap9xg2

Looks like you can use the LDAPConstraints.setReferralFollowing option to set 
the referral following of the connection.  So, some slight tweaks to the LDAP 
client code would at least allow us to add an option that controls this 
behavior and enable it.  It is disabled by default, which is probably why as 
soon as you point it at an AD LDAP connection of the non-GC variety you get 
exceptions.

Here's the page on using constraints:
https://www.novell.com/documentation/developer/jldap/jldapenu/data/a903509.html#aap9881

> ldap auth fails when search results include an LDAP referral
> 
>
> Key: GUACAMOLE-243
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-243
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Reporter: Adam Thorn
>
> The ldap search in 
> extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserService.java
>  to find the DN of the user who is logging in (i.e. inside getUserDNs() ) 
> fails if the LDAPSearchResults include an LDAP referral, because 
> LDAPSearchResults.next() throws an LDAPReferralException:
> https://www.novell.com/documentation/developer/jldap/jldapenu/api/com/novell/ldap/LDAPSearchResults.html#next()
> This particularly affects Active Directory, where typically the LDAP 
> implementation has separate partitions for DNS zones and Configuration (see 
> e.g. 
> http://stackoverflow.com/questions/32989159/ldapsearch-entire-active-directory-without-refldap-returns
>  for an example of the three LDAP referrals that AD returns). Empirically, 
> against my AD, even when an ldap search for (sAMAccountName=$USERNAME) 
> correctly returns the dn for the searched-for $USERNAME , I still also get 
> the three ldap referrals mentioned in that stackoverflow post. Thus, even 
> though the first result in the LDAPSearchResults has the correct dn for the 
> user logging in, results.next() then throws an exception when it encounters 
> the referral and the login fails.
> This only happens when ldap-user-base-dn is set to the base dn of my AD (i.e. 
> with dc=example,dc=com I get referrals, but with ou=Users,dc=example,dc=com 
> as the search base I do not). The structure of my AD requires me to set the 
> base dn as the search base, though.
> N.B. A possible workaround is to explicitly query the Global Catalog (by 
> setting ldap-port: 3268). However, that performs a forest-wide search rather 
> than just a domain-wide search, which might not be desired.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-243) ldap auth fails when search results include an LDAP referral

2017-03-17 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15930148#comment-15930148
 ] 

Nick Couchman commented on GUACAMOLE-243:
-

And, on top of the LDAPConstraints (that apply to the connection as a whole), 
there's also LDAPSearchConstraints, which apply to a particular search 
operation...

> ldap auth fails when search results include an LDAP referral
> 
>
> Key: GUACAMOLE-243
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-243
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Reporter: Adam Thorn
>
> The ldap search in 
> extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserService.java
>  to find the DN of the user who is logging in (i.e. inside getUserDNs() ) 
> fails if the LDAPSearchResults include an LDAP referral, because 
> LDAPSearchResults.next() throws an LDAPReferralException:
> https://www.novell.com/documentation/developer/jldap/jldapenu/api/com/novell/ldap/LDAPSearchResults.html#next()
> This particularly affects Active Directory, where typically the LDAP 
> implementation has separate partitions for DNS zones and Configuration (see 
> e.g. 
> http://stackoverflow.com/questions/32989159/ldapsearch-entire-active-directory-without-refldap-returns
>  for an example of the three LDAP referrals that AD returns). Empirically, 
> against my AD, even when an ldap search for (sAMAccountName=$USERNAME) 
> correctly returns the dn for the searched-for $USERNAME , I still also get 
> the three ldap referrals mentioned in that stackoverflow post. Thus, even 
> though the first result in the LDAPSearchResults has the correct dn for the 
> user logging in, results.next() then throws an exception when it encounters 
> the referral and the login fails.
> This only happens when ldap-user-base-dn is set to the base dn of my AD (i.e. 
> with dc=example,dc=com I get referrals, but with ou=Users,dc=example,dc=com 
> as the search base I do not). The structure of my AD requires me to set the 
> base dn as the search base, though.
> N.B. A possible workaround is to explicitly query the Global Catalog (by 
> setting ldap-port: 3268). However, that performs a forest-wide search rather 
> than just a domain-wide search, which might not be desired.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-243) ldap auth fails when search results include an LDAP referral

2017-03-17 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15930315#comment-15930315
 ] 

Nick Couchman commented on GUACAMOLE-243:
-

Just to follow up a little more on the Novell LDAP implementation...if you want 
to follow referrals, in addition to setting up the aforementioned option, you 
also have to set the setReferralHandler() option and implement one of the two 
possible LDAPReferralHandler options: LDAPAuthHandler or LDAPBindHandler.  If 
you do not, the Novell LDAP java class defaults to anonymous binds in order to 
follow the referrals, and, particularly if you're using AD (or any other LDAP 
directory server configured to disallow anonymous binds), you're going to run 
into problems.

So, for this particular extension, it means implementing the configuration 
options for following LDAP referrals, and also a class or two that implement 
one or both of the above abstract referral handler classes.  Here are some 
links to documentation that will help with this:
https://www.novell.com/documentation/developer/jldap/jldapenu/api/com/novell/ldap/LDAPReferralHandler.html

(Comments at the top of the following document are most helpful as it describes 
the behavior of the class and the various ways to handle referrals):
https://www.novell.com/documentation/developer/samplecode/jldap_sample/SearchUtil.java.html

It'd be nice if the Novell LDAP class referral following defaults to using your 
existing configuration rather than just anonymous - that is, if you've 
configured it to bind as a certain user, it'll bind as that user, if you're 
using anonymous, it'll do anonymous, etc.  But, no such luck...at least the 
LDAPBindHandler class will have to be implemented, if not both that and 
LDAPAuthHandler.

> ldap auth fails when search results include an LDAP referral
> 
>
> Key: GUACAMOLE-243
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-243
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Reporter: Adam Thorn
>
> The ldap search in 
> extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserService.java
>  to find the DN of the user who is logging in (i.e. inside getUserDNs() ) 
> fails if the LDAPSearchResults include an LDAP referral, because 
> LDAPSearchResults.next() throws an LDAPReferralException:
> https://www.novell.com/documentation/developer/jldap/jldapenu/api/com/novell/ldap/LDAPSearchResults.html#next()
> This particularly affects Active Directory, where typically the LDAP 
> implementation has separate partitions for DNS zones and Configuration (see 
> e.g. 
> http://stackoverflow.com/questions/32989159/ldapsearch-entire-active-directory-without-refldap-returns
>  for an example of the three LDAP referrals that AD returns). Empirically, 
> against my AD, even when an ldap search for (sAMAccountName=$USERNAME) 
> correctly returns the dn for the searched-for $USERNAME , I still also get 
> the three ldap referrals mentioned in that stackoverflow post. Thus, even 
> though the first result in the LDAPSearchResults has the correct dn for the 
> user logging in, results.next() then throws an exception when it encounters 
> the referral and the login fails.
> This only happens when ldap-user-base-dn is set to the base dn of my AD (i.e. 
> with dc=example,dc=com I get referrals, but with ou=Users,dc=example,dc=com 
> as the search base I do not). The structure of my AD requires me to set the 
> base dn as the search base, though.
> N.B. A possible workaround is to explicitly query the Global Catalog (by 
> setting ldap-port: 3268). However, that performs a forest-wide search rather 
> than just a domain-wide search, which might not be desired.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-243) LDAP auth fails when search results include an LDAP referral

2017-03-18 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15931242#comment-15931242
 ] 

Nick Couchman commented on GUACAMOLE-243:
-

Adam, I believe your logic here was sound for 1/2 the picture - if you don't 
want to follow LDAP referrals (the default behavior of the Novell LDAP 
library), and the LDAP server sends you one, you should ignore it (rather than 
trying to follow it) and continue with the next result.  I took this and ran 
with it, adding the following things to it:
- New parameters which enable referral following in the LDAP connection.
- If referral following is enabled, and we get an LDAPReferralException, then 
we throw a GuacamoleServerException, rather than just ignoring it.
- Your code, which, if referral following is enabled, logs the error but 
continues processing results.
- Added the same logic to the ConnectionService class, since it also deals with 
LDAP results and could encounter referral following exceptions, as well.

With the current code I can authenticate against the rather large AD system in 
my organization with referral following either enabled or disabled.

Mike, I'm not sure what the "proper" way to go about this is - I'm going to 
open a new pull request from my copy of the repo with the combination of Adam's 
code and mine.  If there's a different way I should handle this, let me know.

> LDAP auth fails when search results include an LDAP referral
> 
>
> Key: GUACAMOLE-243
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-243
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Reporter: Adam Thorn
>
> The ldap search in 
> extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserService.java
>  to find the DN of the user who is logging in (i.e. inside getUserDNs() ) 
> fails if the LDAPSearchResults include an LDAP referral, because 
> LDAPSearchResults.next() throws an LDAPReferralException:
> https://www.novell.com/documentation/developer/jldap/jldapenu/api/com/novell/ldap/LDAPSearchResults.html#next()
> This particularly affects Active Directory, where typically the LDAP 
> implementation has separate partitions for DNS zones and Configuration (see 
> e.g. 
> http://stackoverflow.com/questions/32989159/ldapsearch-entire-active-directory-without-refldap-returns
>  for an example of the three LDAP referrals that AD returns). Empirically, 
> against my AD, even when an ldap search for (sAMAccountName=$USERNAME) 
> correctly returns the dn for the searched-for $USERNAME , I still also get 
> the three ldap referrals mentioned in that stackoverflow post. Thus, even 
> though the first result in the LDAPSearchResults has the correct dn for the 
> user logging in, results.next() then throws an exception when it encounters 
> the referral and the login fails.
> This only happens when ldap-user-base-dn is set to the base dn of my AD (i.e. 
> with dc=example,dc=com I get referrals, but with ou=Users,dc=example,dc=com 
> as the search base I do not). The structure of my AD requires me to set the 
> base dn as the search base, though.
> N.B. A possible workaround is to explicitly query the Global Catalog (by 
> setting ldap-port: 3268). However, that performs a forest-wide search rather 
> than just a domain-wide search, which might not be desired.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (GUACAMOLE-244) Allow Configuration of Alias Dereferencing

2017-03-18 Thread Nick Couchman (JIRA)
Nick Couchman created GUACAMOLE-244:
---

 Summary: Allow Configuration of Alias Dereferencing
 Key: GUACAMOLE-244
 URL: https://issues.apache.org/jira/browse/GUACAMOLE-244
 Project: Guacamole
  Issue Type: Improvement
  Components: guacamole-auth-ldap
Affects Versions: 0.9.11-incubating
Reporter: Nick Couchman
Assignee: Nick Couchman
Priority: Minor
 Fix For: 0.9.13-incubating


Allow Alias Dereferencing Behavior to be Configured by User



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-244) Allow Configuration of Alias Dereferencing

2017-03-18 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15931250#comment-15931250
 ] 

Nick Couchman commented on GUACAMOLE-244:
-

Similar to referral following, it is useful in certain situations to allow the 
user to decide if aliases should be dereferenced or not:
- An admin may want to create a separate area for users or connections and just 
alias the users rather than moving or creating them there.
- Such areas in the LDAP tree might already exist, and might cause problems 
(e.g. duplicate users) if someone is querying an entire tree and dereferencing 
aliases.

I'll have a pull request sometime this weekend...

> Allow Configuration of Alias Dereferencing
> --
>
> Key: GUACAMOLE-244
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-244
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole-auth-ldap
>Affects Versions: 0.9.11-incubating
>Reporter: Nick Couchman
>Assignee: Nick Couchman
>Priority: Minor
> Fix For: 0.9.13-incubating
>
>
> Allow Alias Dereferencing Behavior to be Configured by User



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-243) LDAP auth fails when search results include an LDAP referral

2017-03-18 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15931291#comment-15931291
 ] 

Nick Couchman commented on GUACAMOLE-243:
-

That makes sense.  Adam, please accept my apologies - I'm pretty new to this 
and just figuring out my way around contributions to an open source project, so 
I'm still figuring out some of the etiquette.

I closed my pull request.  Forgive another n00b question, but what's the best 
way to go about collaborating on these changes?  Should I fork Adam's code?  Or 
just make suggestions on the pull request itself?

> LDAP auth fails when search results include an LDAP referral
> 
>
> Key: GUACAMOLE-243
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-243
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Reporter: Adam Thorn
>
> The ldap search in 
> extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserService.java
>  to find the DN of the user who is logging in (i.e. inside getUserDNs() ) 
> fails if the LDAPSearchResults include an LDAP referral, because 
> LDAPSearchResults.next() throws an LDAPReferralException:
> https://www.novell.com/documentation/developer/jldap/jldapenu/api/com/novell/ldap/LDAPSearchResults.html#next()
> This particularly affects Active Directory, where typically the LDAP 
> implementation has separate partitions for DNS zones and Configuration (see 
> e.g. 
> http://stackoverflow.com/questions/32989159/ldapsearch-entire-active-directory-without-refldap-returns
>  for an example of the three LDAP referrals that AD returns). Empirically, 
> against my AD, even when an ldap search for (sAMAccountName=$USERNAME) 
> correctly returns the dn for the searched-for $USERNAME , I still also get 
> the three ldap referrals mentioned in that stackoverflow post. Thus, even 
> though the first result in the LDAPSearchResults has the correct dn for the 
> user logging in, results.next() then throws an exception when it encounters 
> the referral and the login fails.
> This only happens when ldap-user-base-dn is set to the base dn of my AD (i.e. 
> with dc=example,dc=com I get referrals, but with ou=Users,dc=example,dc=com 
> as the search base I do not). The structure of my AD requires me to set the 
> base dn as the search base, though.
> N.B. A possible workaround is to explicitly query the Global Catalog (by 
> setting ldap-port: 3268). However, that performs a forest-wide search rather 
> than just a domain-wide search, which might not be desired.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-243) LDAP auth fails when search results include an LDAP referral

2017-03-18 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15931335#comment-15931335
 ] 

Nick Couchman commented on GUACAMOLE-243:
-

Thanks, Adam, but the other part of this is making sure I'm learning how to 
collaborate on a project like this.  So, I forked your ignore-ldap-referrals 
branch (I think I did this the proper way??) and then made some modifications 
to that branch for enabling referrals and then dealing with cases where they 
fail when they should succeed.  This route should preserve the previous commit 
history, as Mike suggested.  My branch is here:

https://github.com/necouchman/incubator-guacamole-client/tree/GUACAMOLE-243

If you want to take a look at that and see if it makes sense, maybe you can 
incorporate those changes into your branch, improve upon it if you see 
something that could use tweaking, and then we can merge the original PR?  Mike 
and James, if you have other suggestions here, let us know.

Sorry, again, everyone, for the mess made here - I definitely don't want to 
discourage others from contributing to this project, and am certainly not out 
to take credit for work others have done.

> LDAP auth fails when search results include an LDAP referral
> 
>
> Key: GUACAMOLE-243
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-243
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Reporter: Adam Thorn
>
> The ldap search in 
> extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserService.java
>  to find the DN of the user who is logging in (i.e. inside getUserDNs() ) 
> fails if the LDAPSearchResults include an LDAP referral, because 
> LDAPSearchResults.next() throws an LDAPReferralException:
> https://www.novell.com/documentation/developer/jldap/jldapenu/api/com/novell/ldap/LDAPSearchResults.html#next()
> This particularly affects Active Directory, where typically the LDAP 
> implementation has separate partitions for DNS zones and Configuration (see 
> e.g. 
> http://stackoverflow.com/questions/32989159/ldapsearch-entire-active-directory-without-refldap-returns
>  for an example of the three LDAP referrals that AD returns). Empirically, 
> against my AD, even when an ldap search for (sAMAccountName=$USERNAME) 
> correctly returns the dn for the searched-for $USERNAME , I still also get 
> the three ldap referrals mentioned in that stackoverflow post. Thus, even 
> though the first result in the LDAPSearchResults has the correct dn for the 
> user logging in, results.next() then throws an exception when it encounters 
> the referral and the login fails.
> This only happens when ldap-user-base-dn is set to the base dn of my AD (i.e. 
> with dc=example,dc=com I get referrals, but with ou=Users,dc=example,dc=com 
> as the search base I do not). The structure of my AD requires me to set the 
> base dn as the search base, though.
> N.B. A possible workaround is to explicitly query the Global Catalog (by 
> setting ldap-port: 3268). However, that performs a forest-wide search rather 
> than just a domain-wide search, which might not be desired.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-102) Load balancing based on resource

2017-03-19 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15931966#comment-15931966
 ] 

Nick Couchman commented on GUACAMOLE-102:
-

So, I started working on implementing this within the JDBC authentication 
module.  Here's my current working tree:

https://github.com/necouchman/incubator-guacamole-client/tree/GUACAMOLE-102

My current progress just involves adding the weight field to the DB schema and 
then getting it to show up in the connection settings interface.  Have not done 
the actual WRR algorithm, yet.  Also, the current 

Here are some notes and follow-up questions...

{quote}
Pretty much anything of the form "add a ___ which is ignored for all but ___" 
makes me squirm.
{quote}

Okay, I get this...but this particular attribute is really only applicable if 
you have a connection that is part of a balancing group.  It won't be used on 
individual connections, and won't be used in organizational groups.  Maybe 
"ignore" is the wrong word - it seems like adding this field to the JDBC module 
and schema, but hiding it from admins when the current connection is not part 
of a group of type BALANCING seems to be the least confusing to the user/admin.

{quote}
Connection attributes are the current mechanism for exposing arbitrary data. 
That said, if this balancing mechanism will remain internal to the database 
auth (as it is currently), then there is no need to expose the weight at all. 
It could easily just exist within the database schema and the internal objects, 
rather than at the API level.
{quote}

I went ahead and implemented this as a connection attribute.  It currently 
shows up in the "Concurrency Attributes" section...which kind of fits, although 
I'm not sure that's a good long-term place.  As far as exposing it or not, it 
seems like you probably want this to be accessible via manual configuration 
(which is what I've done thus far) - some people might want to manually set up 
the weight used for given servers, while others will employ an automated method 
of adjusting it.

{quote}
...Rearchitecting the webapp in that way would naturally involve exposing the 
creation and balancing of connections at the REST level.
{quote}

I'm going to proceed with just trying to get this implemented in the JDBC 
connection at this point.  I'm just getting comfortable with the webapp and 
REST stuff, and that seems like biting off a little more than I can chew at the 
moment.  If we go this route, eventually, maybe my work won't be a total waste 
of time, but, if nothing else, it gets me a little more familiar with the code 
and the relationship between the servlet and the AngularJS app...which is 
something I've had an oddly hard time wrapping my mind around.

{quote}
A default of 1 seems wonky to me for a couple reasons...
{quote}

Definitely good points, here.  Here's what I propose:
- Weight should be done with higher values equaling more preference - so, 1 is 
less preferred than 100 which is less than 1000.  The scale should be fairly 
arbitrary to Guacamole - we don't care of the admin wants to use a scale of 
1-100 or 1-1000 or 1000 to 2000, etc. - we just use higher numbers to indicate 
preference.  This should build in scalability - 5 nodes can be on a scale of 
1-10, while 1000 can use a larger scale.
- Negative values should indicate problems with the server that cause it to be 
ignored in scheduling.  This would be valuable both for automated balancers, 
that could fill in a negative value if the server is down, and also for 
administrative purposes - you could use a negative number to manually disable a 
server for maintenance.  Furthermore, integrating this with an automated load 
checking mechanism, you could use a couple of possible values to avoid admins 
stepping on the balancer and vice-versa - so -1 can indicate the balancer 
mechanism cannot reach the server and has disabled it; -2 can be 
administratively disabled (and the load balancer will ignore that server), etc.
- 0 should be a server that is part of an automated load monitoring mechanism, 
but has not been polled yet, and should not be used for connections, yet.
- null should be a server that's not part of a weighted connection and just 
gets scheduled in a least-connection-first, which is essentially what the 
current balancing mechanism does.
- Null or zero can be the default.

As far as monitoring goes, a few questions/comments here:
- Should the automated monitoring be something inside the Guacamole client, on 
the servlet side?  Maybe something similar to the way the check for expired 
sessions currently works where there's an implementation of Runnable that polls 
every so often?  This would probably be fairly easy as I'm sure there's a Java 
SNMP implementation available, and it would have pretty easy access via the 
Java code to alter the database fields.
- Or, should the automated load 

[jira] [Commented] (GUACAMOLE-102) Load balancing based on resource

2017-03-20 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15932605#comment-15932605
 ] 

Nick Couchman commented on GUACAMOLE-102:
-

Next up, let's talk algorithms

Currently, looks like Guacamole uses a Least Connection algorithm in the 
balancing groups, despite my earlier assumptions and assertions that it was 
Round Robin.  Moving from Least Connection to Weighted Least Connection is 
relatively easy from an implementation perspective and should be a good initial 
step in resource-based load balancing.

So, a couple of larger questions open up here:
- As we think about implementing load balancing, do we want to stick with a 
single algorithm, or implement several of them and allow them to be selected?  
The following common ones come to mind: Least Connection, Weighted Least 
Connection, Round Robin, Weighted Round Robin, Least Recently Used, and 
Weighted Least Recently Used.
- At a higher level in dealing with load balancing, I believe active 
connections are currently not stored in the database (or wherever they are 
configured) and are completely in memory inside the Guacamole servlet.  This 
definitely works at this point; however, as you think about scaling out a load 
balancer, and the possibility of HA or balanced Guacamole instances, it may be 
worthwhile to implement tracking of active connections inside the DB itself.  
This would allow you to point multiple instances of Guacamaole at a single 
database, but still be able to track how many total active connections you have 
to a given connection or connection group.
- I believe currently in the JDBC connection, the connection history only gets 
updated when a connection ends.  If we implement algorithms like LRU and WLRU, 
we'd need to have the initial population of the connection history happen upon 
connection, and then an update at the end of the connection, so that the (W)LRU 
algorithms work correctly.  Obviously if we don't want to implement (W)LRU, 
this really isn't much of an issue.

> Load balancing based on resource
> 
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Priority: Minor
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-221) Parameter prompting within client interface

2017-03-21 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15935216#comment-15935216
 ] 

Nick Couchman commented on GUACAMOLE-221:
-

Well, I'm taking a stab at implementing some form of parameter prompting.  In 
the past, in one of the duplicate issues, I had suggested using some sort of 
token to handle this - something like ${GUAC_PROMPT} that would trigger a 
prompt (maybe via a certain kind of exception?) to get these values.  But...I'm 
running into a couple of issues with that.

The simplest/obvious issue is that the parameter for port number is represented 
on the web side as a numeric field and you cannot type "${GUAC_PROMPT}" into 
that field.  So, it might work for hostname/username/password, but probably 
would not work for the port - and, while port might be the one you're least 
likely to want to prompt for, someone is going to want it, and I can foresee 
situations where it'd be useful (VNC connections are the most obvious, as VNC 
lacks multi-user session control on a single port).

Next, I explored the option of adding a boolean field for prompting.  From a 
schema perspective this would be pretty easy to do:
- In the JDBC extension, add a field in the guacamole_connection_parameter 
table called parameter_prompt, which defaults to false.
- In the simple file configuration, add a "prompt" attribute to the "param" tag
- In LDAP, add another multi-valued attribute called guacConfigPromptParameter 
that could be used to find attributes that would be prompted for.

Unfortunately there are a couple of issues with this route.  Probably the 
biggest roadblock is that in a lot of places in the current code the parameters 
are stored in some Map-type object with a key/value pair, and adding a second 
value (boolean prompt) isn't necessarily trivial.  In the file configuration 
and LDAP cases this can be worked around by checking for the prompt attribute 
and then setting the actual value to ${GUAC_PROMPT}, sort of combining this 
method and the previous one; however, in the JDBC module it looks like values 
are actually retrieved from the database in the Map way, so, again, 
adding a third column to that to see whether or not to prompt for it isn't 
necessarily the most straight-forward.  I guess I could do something similar to 
the way I was doing the LDAP code and have a separate query to the DB for 
promptable columns that grabs the parameter name and the boolean prompt value, 
and then loops through those and prompts, but that's a decent amount of work.

So, any thoughts/opinions/directions on where to go with this, from the 
perspective of how to key parameters for prompting?  I'm happy to (attempt to) 
do the legwork, just don't want to do a ton of work and then end up going a 
completely different direction.

Beyond that, I'm still struggling with how to inject the prompt into the stream 
of making the connection.  My thought was to kind of follow how the initial 
Guacamole authentication handles challenges - throw a new exception of some 
sort that triggers a form to be displayed with the field being prompted for.  I 
suppose I could do this and loop through until the ${GUAC_PROMPT} value isn't 
found in any of the connection parameters, but is that even viable?  Or is 
there a simpler route to go to throw a prompt at the user, grab the info, and 
then re-attempt the connection?

> Parameter prompting within client interface
> ---
>
> Key: GUACAMOLE-221
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-221
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole
>Reporter: Michael Jumper
>
> {panel:bgColor=#EE}
> *The description of this issue was copied from 
> [GUAC-335|https://glyptodon.org/jira/browse/GUAC-335], an issue in the JIRA 
> instance used by the Guacamole project prior to its acceptance into the 
> Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance 
> *have not been copied* and can be found instead at the original issue.
> {panel}
> Some parameters, such as the username/password for VNC or RDP, are better 
> entered manually within the client when connecting rather than stored on the 
> server in MySQL or {{user-mapping.xml}}.
> Storing secure data within parameters on the server side has security 
> implications that don't fit well with all use cases.
> Further, some connections would benefit if their settings can be modified 
> locally before connecting. A user could change the color depth or screen size 
> of their RDP session, for example, for the sake of a slower connection.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-221) Parameter prompting within client interface

2017-03-21 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15935275#comment-15935275
 ] 

Nick Couchman commented on GUACAMOLE-221:
-

Oh, and the other thing I forgot about that I'm running into with the 
prompting, particularly trying to use ${GUAC_PROMPT} in the current token 
setup.  There's not really a good way to tell what type of data you're 
prompting for.  So, presumably if you're going to be prompting for a password 
you want to use the password field (especially the part where it hides what 
you're typing), and if you're going to be prompting for the port you want a 
numeric field that enforces that the selection/input be numeric.  Without 
significant changes to the current token setup, this isn't really possible - 
some minor changes would allow us to pass through the field name that's being 
prompted for and make some determination based on that (if field name == 
password, use password field, if field name == port, use numeric field, else 
use text field), but I'm not sure that's the cleanest way to go.

> Parameter prompting within client interface
> ---
>
> Key: GUACAMOLE-221
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-221
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole
>Reporter: Michael Jumper
>
> {panel:bgColor=#EE}
> *The description of this issue was copied from 
> [GUAC-335|https://glyptodon.org/jira/browse/GUAC-335], an issue in the JIRA 
> instance used by the Guacamole project prior to its acceptance into the 
> Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance 
> *have not been copied* and can be found instead at the original issue.
> {panel}
> Some parameters, such as the username/password for VNC or RDP, are better 
> entered manually within the client when connecting rather than stored on the 
> server in MySQL or {{user-mapping.xml}}.
> Storing secure data within parameters on the server side has security 
> implications that don't fit well with all use cases.
> Further, some connections would benefit if their settings can be modified 
> locally before connecting. A user could change the color depth or screen size 
> of their RDP session, for example, for the sake of a slower connection.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Created] (GUACAMOLE-248) Support for Inheriting Connection Parameters from Group

2017-03-21 Thread Nick Couchman (JIRA)
Nick Couchman created GUACAMOLE-248:
---

 Summary: Support for Inheriting Connection Parameters from Group
 Key: GUACAMOLE-248
 URL: https://issues.apache.org/jira/browse/GUACAMOLE-248
 Project: Guacamole
  Issue Type: Improvement
  Components: guacamole-client
Reporter: Nick Couchman
Priority: Minor


One of the things that might be nice to implement is the ability to define 
certain parts of a connection at the group level and then have those be 
inherited by the connections.  The main scenario that comes to mind is that you 
want to create a balancing group of (for example) 100 RDP servers.  You'd like 
all of the servers to use 3389 for the port and ${GUAC_USERNAME} and 
${GUAC_PASSWORD} tokens for pass-through authentication from guacamole, and the 
only thing that will be different about each of the connections is the hostname 
or IP address to which they connect.  The ability to define most of the 
settings on the connection group (or, perhaps, a "template connection" of some 
sort) and then allow child connections to inherit properties from either the 
parent group or template would drastically reduce the administration in 
creating at least 99 of those 100 connections.

Seems like this involves either defining parameters at the connection group 
level, or creating a new "template" connection type that then connections could 
link to.  This also seems to be fairly strictly limited to the JDBC 
authentication extension - probably not something you're going to try to do in 
either LDAP or a simple file mechanism, and JDBC is the only area where 
connection groups are supported, anyway.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-221) Parameter prompting within client interface

2017-03-22 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15936357#comment-15936357
 ] 

Nick Couchman commented on GUACAMOLE-221:
-

{quote}
There may be user interface improvements that could solve that issue.
{quote}

I'm happy to try stuff out if there are suggestions...

{quote}
Parameter key/value pairs are exactly how parameters need to be represented, at 
least at the core API level. Within strictly the web application and extension 
subsystem, it's possible to augment this, but I'm not convinced it's necessary. 
Making API changes should be the absolute last resort.
{quote}

Yeah, I didn't think changing this was the correct route to go, and seems like 
a lot of work, anyway.

{quote}
The answer is: don't. You don't want to inject the prompt into the stream - 
that would break the connection handling, muck with the 15 second timeout, etc. 
It would be disastrous.
...
Yes! That's my thinking exactly. It's not possible (and shouldn't even be 
attempted) to inject such prompting into the connection stream, but it can be 
done by adding a step to the connection process.
{quote}

Sorry, I think I used the term "stream" in a way that made you think I was 
saying something I wasn't saying.  I wasn't saying to do the prompting after 
the connection had been initiated, I just meant, when the user clicks on the 
connection they want to launch, you check for the GUAC_PROMPT token, throw 
exceptions when you need information, triggering forms to be displayed on the 
Angular side, then substitute those values back in and *then* start the 
connection stream (the actual stream) with the full parameter set.

{quote}
Currently, the tunnel is established immediately, and it's the tunnel which 
receives additional connection information used by the handshake (screen size, 
supported mimetypes, etc.).
{quote}

Kind of, although I think the current TokenFilter code runs before the actual 
connnection starts, right?  This is where other tokens are replaced with their 
actual values, and I'm fairly certain that code runs on the servlet side before 
the connection stream is actually established?

{quote}
Ah, but there is! See the JSON files in:
https://github.com/apache/incubator-guacamole-client/tree/3407586642f08cc9ffbe682fc8aa30a111fa0a66/guacamole-ext/src/main/resources/org/apache/guacamole/protocols
Those describe the structure and data types of the various parameters accepted 
by each known protocol. These are all exposed via a REST service, and are used 
by the interface when generating the connection parameter admin screen. The 
same thing could be done for the parameter prompting - it would just be a 
subset of those parameters.
...
You would definitely need to expose the field names being prompted, just as the 
initial auth failure contains information describing the parameters required 
for login. You should definitley not make assumptions based solely on parameter 
name - the Guacamole protocol stipulates that these names are arbitrary. With 
the parameter schema JSON, however, the meaning of each parameter for each 
known protocol is available, and no assumptions need be made.
{quote}

Yeah, I had already figured out a way to expose the field names, so no issue 
there, but, as you point out, I don't really want to key on the field name to 
pick out the field type.  However, with the JSON files and REST service, what's 
the best way to link field being prompted for on the servlet side with what 
gets picked up on the Angular side?  I'm currently focusing my efforts on the 
TokenFilter.filter() method.  I've modified the function slightly to take the 
field name as input (in addition to the field value/token name), and this 
allows me to pass the field name in to the prompt, but the filter method is 
called my the filterValues() method, and this only has K/V pairs that don't 
necessarily have any real link back to the type of field being represented.

Or maybe I need to go somewhere else besides the TokenFilter code??

Thanks for the hints.

> Parameter prompting within client interface
> ---
>
> Key: GUACAMOLE-221
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-221
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole
>Reporter: Michael Jumper
>
> {panel:bgColor=#EE}
> *The description of this issue was copied from 
> [GUAC-335|https://glyptodon.org/jira/browse/GUAC-335], an issue in the JIRA 
> instance used by the Guacamole project prior to its acceptance into the 
> Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance 
> *have not been copied* and can be found instead at the original issue.
> {panel}
> Some parameters, such as the username/password for VNC or RDP, are better 
> entered manually wi

[jira] [Commented] (GUACAMOLE-248) Support for Inheriting Connection Parameters from Group

2017-03-22 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15936416#comment-15936416
 ] 

Nick Couchman commented on GUACAMOLE-248:
-

Sounds good.  So, maybe similar to selecting the connection group into which a 
connection goes, we could have a drop-down box for selecting a template 
connection?

I'm guessing we want the batch administration discussion on the mailing lists, 
and not just here in JIRA - user list, dev list, or both?

> Support for Inheriting Connection Parameters from Group
> ---
>
> Key: GUACAMOLE-248
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-248
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole-client
>Reporter: Nick Couchman
>Priority: Minor
>
> One of the things that might be nice to implement is the ability to define 
> certain parts of a connection at the group level and then have those be 
> inherited by the connections.  The main scenario that comes to mind is that 
> you want to create a balancing group of (for example) 100 RDP servers.  You'd 
> like all of the servers to use 3389 for the port and ${GUAC_USERNAME} and 
> ${GUAC_PASSWORD} tokens for pass-through authentication from guacamole, and 
> the only thing that will be different about each of the connections is the 
> hostname or IP address to which they connect.  The ability to define most of 
> the settings on the connection group (or, perhaps, a "template connection" of 
> some sort) and then allow child connections to inherit properties from either 
> the parent group or template would drastically reduce the administration in 
> creating at least 99 of those 100 connections.
> Seems like this involves either defining parameters at the connection group 
> level, or creating a new "template" connection type that then connections 
> could link to.  This also seems to be fairly strictly limited to the JDBC 
> authentication extension - probably not something you're going to try to do 
> in either LDAP or a simple file mechanism, and JDBC is the only area where 
> connection groups are supported, anyway.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Comment Edited] (GUACAMOLE-102) Load balancing based on resource

2017-03-23 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15931966#comment-15931966
 ] 

Nick Couchman edited comment on GUACAMOLE-102 at 3/23/17 3:52 PM:
--

So, I started working on implementing this within the JDBC authentication 
module.  Here's my current working tree:

https://github.com/necouchman/incubator-guacamole-client/tree/GUACAMOLE-102

My current progress just involves adding the weight field to the DB schema and 
then getting it to show up in the connection settings interface.  Have not done 
the actual WRR algorithm, yet.

Here are some notes and follow-up questions...

{quote}
Pretty much anything of the form "add a ___ which is ignored for all but ___" 
makes me squirm.
{quote}

Okay, I get this...but this particular attribute is really only applicable if 
you have a connection that is part of a balancing group.  It won't be used on 
individual connections, and won't be used in organizational groups.  Maybe 
"ignore" is the wrong word - it seems like adding this field to the JDBC module 
and schema, but hiding it from admins when the current connection is not part 
of a group of type BALANCING seems to be the least confusing to the user/admin.

{quote}
Connection attributes are the current mechanism for exposing arbitrary data. 
That said, if this balancing mechanism will remain internal to the database 
auth (as it is currently), then there is no need to expose the weight at all. 
It could easily just exist within the database schema and the internal objects, 
rather than at the API level.
{quote}

I went ahead and implemented this as a connection attribute.  It currently 
shows up in the "Concurrency Attributes" section...which kind of fits, although 
I'm not sure that's a good long-term place.  As far as exposing it or not, it 
seems like you probably want this to be accessible via manual configuration 
(which is what I've done thus far) - some people might want to manually set up 
the weight used for given servers, while others will employ an automated method 
of adjusting it.

{quote}
...Rearchitecting the webapp in that way would naturally involve exposing the 
creation and balancing of connections at the REST level.
{quote}

I'm going to proceed with just trying to get this implemented in the JDBC 
connection at this point.  I'm just getting comfortable with the webapp and 
REST stuff, and that seems like biting off a little more than I can chew at the 
moment.  If we go this route, eventually, maybe my work won't be a total waste 
of time, but, if nothing else, it gets me a little more familiar with the code 
and the relationship between the servlet and the AngularJS app...which is 
something I've had an oddly hard time wrapping my mind around.

{quote}
A default of 1 seems wonky to me for a couple reasons...
{quote}

Definitely good points, here.  Here's what I propose:
- Weight should be done with higher values equaling more preference - so, 1 is 
less preferred than 100 which is less than 1000.  The scale should be fairly 
arbitrary to Guacamole - we don't care of the admin wants to use a scale of 
1-100 or 1-1000 or 1000 to 2000, etc. - we just use higher numbers to indicate 
preference.  This should build in scalability - 5 nodes can be on a scale of 
1-10, while 1000 can use a larger scale.
- Negative values should indicate problems with the server that cause it to be 
ignored in scheduling.  This would be valuable both for automated balancers, 
that could fill in a negative value if the server is down, and also for 
administrative purposes - you could use a negative number to manually disable a 
server for maintenance.  Furthermore, integrating this with an automated load 
checking mechanism, you could use a couple of possible values to avoid admins 
stepping on the balancer and vice-versa - so -1 can indicate the balancer 
mechanism cannot reach the server and has disabled it; -2 can be 
administratively disabled (and the load balancer will ignore that server), etc.
- 0 should be a server that is part of an automated load monitoring mechanism, 
but has not been polled yet, and should not be used for connections, yet.
- null should be a server that's not part of a weighted connection and just 
gets scheduled in a least-connection-first, which is essentially what the 
current balancing mechanism does.
- Null or zero can be the default.

As far as monitoring goes, a few questions/comments here:
- Should the automated monitoring be something inside the Guacamole client, on 
the servlet side?  Maybe something similar to the way the check for expired 
sessions currently works where there's an implementation of Runnable that polls 
every so often?  This would probably be fairly easy as I'm sure there's a Java 
SNMP implementation available, and it would have pretty easy access via the 
Java code to alter the database fields.
- O

[jira] [Created] (GUACAMOLE-255) Support Ability to Auto-Start Connection

2017-03-25 Thread Nick Couchman (JIRA)
Nick Couchman created GUACAMOLE-255:
---

 Summary: Support Ability to Auto-Start Connection
 Key: GUACAMOLE-255
 URL: https://issues.apache.org/jira/browse/GUACAMOLE-255
 Project: Guacamole
  Issue Type: Bug
  Components: guacamole-client
Affects Versions: 0.9.11-incubating
Reporter: Nick Couchman
Priority: Minor


Currently the Guacamole client only automatically starts a connection when a 
single connection is defined for a user/login.  It would be useful to set a 
connection to automatically start when a user logs in, even if multiple 
connections are available.  The user should still be able to disconnect and 
return to the home screen, but there are certainly situations where it is 
desirable to have an automatic connection happen at login.

As I see it there are two possible routes for implementing this:
- Set up a connection parameter or attribute for auto-starting and have the 
client check connections at login time for the attribute and start them.
- Set up a user-specific field for a connection to auto-start, and store the 
connection id (hash of datasource + id + type) in that field, and have the 
client check for that property at login and locate/start the specified 
connection.

My preference would be to do this at the user level, for the following reasons:
- You could then limit it to 1 auto-start per user, and avoid confusion of 
having multiple connections available to a user marked for auto-start and 
having to determine which one(s) you actually start.
- The user can be in control of whether or not a connection is automatically 
started, and, if so, which one.  There doesn't seem to be any security-relevant 
implications for allowing the user to control this - the necessary checks 
should still be in place to make sure the user is only starting a connection he 
has access to, and not injecting something bad into the field, but whether or 
not it starts automatically is more of an experience topic.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-255) Support Ability to Auto-Start Connection

2017-03-25 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15942103#comment-15942103
 ] 

Nick Couchman commented on GUACAMOLE-255:
-

It's mostly a user experience sort of thing.  I can think of a few situations - 
perhaps not overly concrete examples, but they work in my mind:
- I use Guacamole every day, and 99% of the time I use one connection.  I have 
3-4 others defined, and use them occasionally, but my Windows VDI connection is 
by far the most-used connection.  Auto-start seems perfect for that (even 
though it would only save me 1 click per login).
- In a previous place of employment where we used Guacamole, we'd be pointing 
users (and not the sort with a high level of technical skill) toward a 
Guacamole web page and have them log in.  We would tell them specifically to 
use a certain connection, and most of them would most of the time, but there 
would be that small few who couldn't follow instructions.  There were other 
connections that some of them needed access to, but still would have been nice 
to just have it auto-start on the connection we wanted them to use most of the 
time, with the option that other folks could disconnection and choose a new 
connection if they needed to.
- Lack of availability of a particular resource also seems like a valid 
use-case - you have a connection to which users are automatically connected, 
but, if that resource is unavailable for some reason, there are others they 
have permissions to that they could activate.

I know those are a little on the weak side, and this definitely isn't a 
must-have, just seems like there could be scenarios where it's useful for a 
more seamless user experience.

> Support Ability to Auto-Start Connection
> 
>
> Key: GUACAMOLE-255
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-255
> Project: Guacamole
>  Issue Type: Wish
>  Components: guacamole
>Reporter: Nick Couchman
>Priority: Trivial
>
> Currently the Guacamole client only automatically starts a connection when a 
> single connection is defined for a user/login.  It would be useful to set a 
> connection to automatically start when a user logs in, even if multiple 
> connections are available.  The user should still be able to disconnect and 
> return to the home screen, but there are certainly situations where it is 
> desirable to have an automatic connection happen at login.
> As I see it there are two possible routes for implementing this:
> - Set up a connection parameter or attribute for auto-starting and have the 
> client check connections at login time for the attribute and start them.
> - Set up a user-specific field for a connection to auto-start, and store the 
> connection id (hash of datasource + id + type) in that field, and have the 
> client check for that property at login and locate/start the specified 
> connection.
> My preference would be to do this at the user level, for the following 
> reasons:
> - You could then limit it to 1 auto-start per user, and avoid confusion of 
> having multiple connections available to a user marked for auto-start and 
> having to determine which one(s) you actually start.
> - The user can be in control of whether or not a connection is automatically 
> started, and, if so, which one.  There doesn't seem to be any 
> security-relevant implications for allowing the user to control this - the 
> necessary checks should still be in place to make sure the user is only 
> starting a connection he has access to, and not injecting something bad into 
> the field, but whether or not it starts automatically is more of an 
> experience topic.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-255) Support Ability to Auto-Start Connection

2017-03-26 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15942245#comment-15942245
 ] 

Nick Couchman commented on GUACAMOLE-255:
-

{quote}
E... Honestly, this feels more like feature creep to me.
Part of the idea behind ensuring connection URLs were deterministic was to 
ensure they would be bookmarkable for this sort of case - where you 
consistently want to access a specific connection, despite legitimately having 
access to several others. Beyond that, if users are generally not supposed to 
access a set of connections, then they really shouldn't be given such access.
{quote}

{quote}
I'd have to say that I agree with Michael Jumper on this one. If you want to 
always access a certain connection, but still have access to others, 
bookmarking (or sharing) the link for the desired connection seems to work just 
fine. Adding another feature to do essentially the same thing does feel like 
feature creep.
{quote}

Fair enough...I'll close the issue.

> Support Ability to Auto-Start Connection
> 
>
> Key: GUACAMOLE-255
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-255
> Project: Guacamole
>  Issue Type: Wish
>  Components: guacamole
>Reporter: Nick Couchman
>Priority: Trivial
>
> Currently the Guacamole client only automatically starts a connection when a 
> single connection is defined for a user/login.  It would be useful to set a 
> connection to automatically start when a user logs in, even if multiple 
> connections are available.  The user should still be able to disconnect and 
> return to the home screen, but there are certainly situations where it is 
> desirable to have an automatic connection happen at login.
> As I see it there are two possible routes for implementing this:
> - Set up a connection parameter or attribute for auto-starting and have the 
> client check connections at login time for the attribute and start them.
> - Set up a user-specific field for a connection to auto-start, and store the 
> connection id (hash of datasource + id + type) in that field, and have the 
> client check for that property at login and locate/start the specified 
> connection.
> My preference would be to do this at the user level, for the following 
> reasons:
> - You could then limit it to 1 auto-start per user, and avoid confusion of 
> having multiple connections available to a user marked for auto-start and 
> having to determine which one(s) you actually start.
> - The user can be in control of whether or not a connection is automatically 
> started, and, if so, which one.  There doesn't seem to be any 
> security-relevant implications for allowing the user to control this - the 
> necessary checks should still be in place to make sure the user is only 
> starting a connection he has access to, and not injecting something bad into 
> the field, but whether or not it starts automatically is more of an 
> experience topic.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Closed] (GUACAMOLE-255) Support Ability to Auto-Start Connection

2017-03-26 Thread Nick Couchman (JIRA)

 [ 
https://issues.apache.org/jira/browse/GUACAMOLE-255?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman closed GUACAMOLE-255.
---
Resolution: Won't Do

Bookmarking seems to supplant the need for something like this.  Closing out 
this request.

> Support Ability to Auto-Start Connection
> 
>
> Key: GUACAMOLE-255
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-255
> Project: Guacamole
>  Issue Type: Wish
>  Components: guacamole
>Reporter: Nick Couchman
>Priority: Trivial
>
> Currently the Guacamole client only automatically starts a connection when a 
> single connection is defined for a user/login.  It would be useful to set a 
> connection to automatically start when a user logs in, even if multiple 
> connections are available.  The user should still be able to disconnect and 
> return to the home screen, but there are certainly situations where it is 
> desirable to have an automatic connection happen at login.
> As I see it there are two possible routes for implementing this:
> - Set up a connection parameter or attribute for auto-starting and have the 
> client check connections at login time for the attribute and start them.
> - Set up a user-specific field for a connection to auto-start, and store the 
> connection id (hash of datasource + id + type) in that field, and have the 
> client check for that property at login and locate/start the specified 
> connection.
> My preference would be to do this at the user level, for the following 
> reasons:
> - You could then limit it to 1 auto-start per user, and avoid confusion of 
> having multiple connections available to a user marked for auto-start and 
> having to determine which one(s) you actually start.
> - The user can be in control of whether or not a connection is automatically 
> started, and, if so, which one.  There doesn't seem to be any 
> security-relevant implications for allowing the user to control this - the 
> necessary checks should still be in place to make sure the user is only 
> starting a connection he has access to, and not injecting something bad into 
> the field, but whether or not it starts automatically is more of an 
> experience topic.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-189) Add support for per-connection guacd

2017-04-03 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15953840#comment-15953840
 ] 

Nick Couchman commented on GUACAMOLE-189:
-

This particular ticket doesn't necessarily deal with high availability or 
failing from one guacd server to another, just being able to assign a 
connection to a particular guacd instance, as might be necessary to overcome 
firewall issues and deal with distributed networks, and as is necessary for 
implementing the X.org driver.

You're asking about two other things, which are probably good things to 
implement, but separate from this particular ticket and probably separate from 
each other:
- Ability to load-balance or at least fail over from one guacd instance to 
another.  guacd doesn't really care about where the client is getting its 
connection information (MySQL, PostgreSQL, LDAP, etc.), it just receives the 
Guacamole protocol information from the client and processes the translation of 
the Guacamole protocol to whatever back-end you're connecting to (SSH, RDP, 
etc.).
- Ability to load-balance the Guacamole client and share sessions and 
configuration information between multiple instances of the client.  This is 
likely already possible to some degree, although I'm not entirely sure how safe 
it is.  There are some things that probably wouldn't work correctly - like 
tracking active connections - and some others that might be unsafe - like 
multiple admins editing the same connections.

Anyway, probably worth opening a couple of separate tickets for these issues.

> Add support for per-connection guacd
> 
>
> Key: GUACAMOLE-189
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-189
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-ext
>Reporter: Michael Jumper
>Assignee: Michael Jumper
> Fix For: 0.9.13-incubating
>
>
> The web application currently assumes that one guacd will be used to provide 
> access to all connections. This assumption fails if:
> * Multiple guacd instances are spread out across different networks
> * Another component implementing the Guacamole protocol is being used instead 
> of guacd on a per-connection basis (like the X.Org driver of GUACAMOLE-168)
> Though no change is needed to the core APIs, as no such assumption is made at 
> that level, the web application and extension API should be modified such 
> that the guacd (or other Guacamole proxy) applicable to a connection can be 
> specified explicitly for that connection.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-263) Guacamole is not returning paged results of complete ldap user base DN

2017-04-07 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15961184#comment-15961184
 ] 

Nick Couchman commented on GUACAMOLE-263:
-

Have you adjusted the ldap-max-search-results property in your 
guacamole.properties file to a value that pulls in all of your users?  Also, if 
you clone from the github repo, the current development version has an 
ldap-user-search-filter property that allows you to filter out users in the 
LDAP query, so if your entire user base didn't need access to Guacamole you 
could limit the number of results returned.  Does either of these address the 
issue you're running into?

> Guacamole is not returning paged results of complete ldap user base DN
> --
>
> Key: GUACAMOLE-263
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-263
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Affects Versions: 0.9.11-incubating
> Environment: CentOS 7 
> MariaDB 5.5.44
> Windows Server 2012 R2 Active Directory Domain Services
>Reporter: M Goya
>
> My guacamole instance is integrated with Windows 2012 AD Domain Services.  
> LDAP authentication is working fine for all users.  But I am unable to 
> administer the system properly because I am unable to query all users and 
> assign appropriate permissions in the web UI.  My user base base DN is >1000 
> objects.  The application is not returning paged results of all objects and 
> is only showing the first 1000 objects.  Any advice on a fix is much 
> appreciated.  



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-263) Guacamole is not returning paged results of complete ldap user base DN

2017-04-07 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15961423#comment-15961423
 ] 

Nick Couchman commented on GUACAMOLE-263:
-

If you check out the master branch of 
https://github.com/apache/incubator-guacamole-client you should get the version 
that has the ldap-user-search-filter option.

> Guacamole is not returning paged results of complete ldap user base DN
> --
>
> Key: GUACAMOLE-263
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-263
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Affects Versions: 0.9.11-incubating
> Environment: CentOS 7 
> MariaDB 5.5.44
> Windows Server 2012 R2 Active Directory Domain Services
>Reporter: M Goya
>
> My guacamole instance is integrated with Windows 2012 AD Domain Services.  
> LDAP authentication is working fine for all users.  But I am unable to 
> administer the system properly because I am unable to query all users and 
> assign appropriate permissions in the web UI.  My user base base DN is >1000 
> objects.  The application is not returning paged results of all objects and 
> is only showing the first 1000 objects.  Any advice on a fix is much 
> appreciated.  



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-04-10 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15963267#comment-15963267
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

{quote}
It is possible to use this now? I just installed 0.9.12, and I have a RADIUS 
server that I'd like to try using guac against. I'm a newb though, and don't 
know how to install this. I have guac 0.9.12 running on Ubuntu.
{quote}

You're certainly welcome to check out the source code from my fork of the repo 
and try it out:
https://github.com/necouchman/incubator-guacamole-client/tree/GUACAMOLE-197

There are some things to know about it:
-You have to build it yourself, there are no pre-compiled WARs/JARs for it, 
and, actually, for this extension, probably never will be (due to some 
licensing issues).  Building is pretty easy - you need a Java compiler (Oracle 
JDK, for example) and Maven, and then you just do "mvn package" - instructions 
are in the main readme file.
- This particular branch of the incubator-guacamole-client tree lags behind the 
Apache master by several commits (51), so there are probably some fixes and 
functionality changes that you'd be missing.
- There's currently a bug that I need to fix for the build process to exclude 
some JAR signatures.  You currently have to work around it by removing two 
files from the resulting JAR file: META-INF/BCKEY.SF and META-INF/BCKEY.DSA.

Also, since it hasn't been merged into the main code, yet, the documentation 
also hasn't been updated.  The config parameters are as follows:
radius-server
radius-auth-port
radius-acct-port
radius-shared-secret
radius-auth-protocol
radius-key-file
radius-key-type
radius-ca-file
radius-ca-type
radius-eap-ttls-inner-protocol

Feel free to let me know if you encounter any bugs.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Reporter: Nick Couchman
>Priority: Minor
> Fix For: 0.9.13-incubating
>
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-04-10 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15963273#comment-15963273
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

{quote}
There's currently a bug that I need to fix for the build process to exclude 
some JAR signatures. You currently have to work around it by removing two files 
from the resulting JAR file: META-INF/BCKEY.SF and META-INF/BCKEY.DSA.
{quote}
Just committed a change to fix this issue, so you should just be able to build 
and use the resulting JAR file in your /etc/guacamole/extensions directory.

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Reporter: Nick Couchman
>Priority: Minor
> Fix For: 0.9.13-incubating
>
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-04-13 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15967866#comment-15967866
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

Opened up LEGAL-299 to ask for legal guidance on including the source for this 
in the main Guacamole code.  We'll see what they say...

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Reporter: Nick Couchman
>Priority: Minor
> Fix For: 0.9.13-incubating
>
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-284) When using ldap with MySQL backend "Account Restrictions" doesn't work

2017-05-22 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-284?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16019817#comment-16019817
 ] 

Nick Couchman commented on GUACAMOLE-284:
-

It sounds like maybe there's some confusion or missing information with how you 
have authentication set up.  Do you have MySQL authentication only, or are you 
layering MySQL with LDAP?  Based on your description it sounds like you're 
doing the later, and, the way authentication layering currently works in 
Guacamole, disabling the account will only disable authentication of the 
account via the database module, it won't actually block a login, as 
authentication will succeed via the LDAP module.  When authentication succeeds, 
the user will be logged in, and then the user's permissions will be aggregated 
from other authentication sources that contain the same username.

So, disabled, time restrictions, and account expiration settings inside the 
database modules will not impact logins that happen via another module when 
multiple modules are layered.

> When using ldap with MySQL backend "Account Restrictions" doesn't work
> --
>
> Key: GUACAMOLE-284
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-284
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-jdbc-mysql, guacamole-auth-ldap, 
> guacamole-client
>Affects Versions: 0.9.12-incubating
>Reporter: Mark van den Boogaard
>
> When using LDAP authentication and a MySQL backend the options under "Account 
> Restrictions" are not working.
> When we set the option "Disabled" or "Enable/Disable account after" this has 
> no effect.
> For us the users who managing Guacamole (users and connections) do not have 
> access to LDAP to enable/disable accounts. So it would be nice to do have 
> these options working when using LDAP authentication with MySQL



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-284) When using ldap with MySQL backend "Account Restrictions" doesn't work

2017-05-23 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-284?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16021156#comment-16021156
 ] 

Nick Couchman commented on GUACAMOLE-284:
-

> While it's true that account restrictions defined within the database auth 
> shouldn't affect whether another authentication mechanism succeeds/fails, I'd 
> say those restrictions should still take effect when it comes to providing 
> access to the data actually defined within the database.

I agree.  I was commenting on how it currently works, not, necessarily, on how 
it should work :-).  However, the flip-side of this is making sure that it's 
understood how to properly secure database accounts in the above scenario, if 
necessary, to prevent accounts that may not have a password set on them from 
being exploited.  That may already be taken care of in the Guacamole code - I 
did try to create a database user without a password and log in with it and it 
did not work, so this may not be a concern at all?  Anyway, I agree that 
disabling the account in the DB module should result in the connection 
information for that user being inaccessible, even if another module succeeds.

> When using ldap with MySQL backend "Account Restrictions" doesn't work
> --
>
> Key: GUACAMOLE-284
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-284
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-jdbc-mysql, guacamole-auth-ldap, 
> guacamole-client
>Affects Versions: 0.9.12-incubating
>Reporter: Mark van den Boogaard
>
> When using LDAP authentication and a MySQL backend the options under "Account 
> Restrictions" are not working.
> When we set the option "Disabled" or "Enable/Disable account after" this has 
> no effect.
> For us the users who managing Guacamole (users and connections) do not have 
> access to LDAP to enable/disable accounts. So it would be nice to do have 
> these options working when using LDAP authentication with MySQL



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Comment Edited] (GUACAMOLE-284) When using ldap with MySQL backend "Account Restrictions" doesn't work

2017-05-23 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-284?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16021156#comment-16021156
 ] 

Nick Couchman edited comment on GUACAMOLE-284 at 5/23/17 12:58 PM:
---

{quote}
While it's true that account restrictions defined within the database auth 
shouldn't affect whether another authentication mechanism succeeds/fails, I'd 
say those restrictions should still take effect when it comes to providing 
access to the data actually defined within the database.
{quote}
I agree.  I was commenting on how it currently works, not, necessarily, on how 
it should work :-).  However, the flip-side of this is making sure that it's 
understood how to properly secure database accounts in the above scenario, if 
necessary, to prevent accounts that may not have a password set on them from 
being exploited.  That may already be taken care of in the Guacamole code - I 
did try to create a database user without a password and log in with it and it 
did not work, so this may not be a concern at all?  Anyway, I agree that 
disabling the account in the DB module should result in the connection 
information for that user being inaccessible, even if another module succeeds.


was (Author: nick.couch...@yahoo.com):
> While it's true that account restrictions defined within the database auth 
> shouldn't affect whether another authentication mechanism succeeds/fails, I'd 
> say those restrictions should still take effect when it comes to providing 
> access to the data actually defined within the database.

I agree.  I was commenting on how it currently works, not, necessarily, on how 
it should work :-).  However, the flip-side of this is making sure that it's 
understood how to properly secure database accounts in the above scenario, if 
necessary, to prevent accounts that may not have a password set on them from 
being exploited.  That may already be taken care of in the Guacamole code - I 
did try to create a database user without a password and log in with it and it 
did not work, so this may not be a concern at all?  Anyway, I agree that 
disabling the account in the DB module should result in the connection 
information for that user being inaccessible, even if another module succeeds.

> When using ldap with MySQL backend "Account Restrictions" doesn't work
> --
>
> Key: GUACAMOLE-284
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-284
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-jdbc-mysql, guacamole-auth-ldap, 
> guacamole-client
>Affects Versions: 0.9.12-incubating
>Reporter: Mark van den Boogaard
>
> When using LDAP authentication and a MySQL backend the options under "Account 
> Restrictions" are not working.
> When we set the option "Disabled" or "Enable/Disable account after" this has 
> no effect.
> For us the users who managing Guacamole (users and connections) do not have 
> access to LDAP to enable/disable accounts. So it would be nice to do have 
> these options working when using LDAP authentication with MySQL



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-263) Guacamole is not returning paged results of complete ldap user base DN

2017-05-24 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16022826#comment-16022826
 ] 

Nick Couchman commented on GUACAMOLE-263:
-

Any LDAP standard search filter should do - the syntax is exactly like on the 
page you mentioned.  So, filtering for inetOrgPerson objects would be:
(objectClass=inetOrgPerson)

You can also do things like filter for objects with a certain attribute:
(&(objectClass=inetOrgPerson)(mail=*))

The above would filter for any objects that have inetOrgPerson as the class and 
have any value present for the mail attribute.  Probably more common things 
would be to filter on a group membership.  In AD, that would look something 
like this:
(|(memberOf=CN=Group1,OU=Groups,DC=example,DC=com)(memberOf=CN=Group2,OU=Groups,DC=example,DC=com))

The above would search for objects that are a member of either Group1 or Group2.

Hope this helps.

> Guacamole is not returning paged results of complete ldap user base DN
> --
>
> Key: GUACAMOLE-263
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-263
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Affects Versions: 0.9.11-incubating
> Environment: CentOS 7 
> MariaDB 5.5.44
> Windows Server 2012 R2 Active Directory Domain Services
>Reporter: M Goya
>
> My guacamole instance is integrated with Windows 2012 AD Domain Services.  
> LDAP authentication is working fine for all users.  But I am unable to 
> administer the system properly because I am unable to query all users and 
> assign appropriate permissions in the web UI.  My user base base DN is >1000 
> objects.  The application is not returning paged results of all objects and 
> is only showing the first 1000 objects.  Any advice on a fix is much 
> appreciated.  



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-284) When using ldap with MySQL backend "Account Restrictions" doesn't work

2017-05-24 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-284?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16023109#comment-16023109
 ] 

Nick Couchman commented on GUACAMOLE-284:
-

Cool.  So simple solution to this seems to be to check for disabled/expired 
accounts in the methods that return configurations for the accounts, and just 
return empty or null if that's the case.  Is that the route to go, or is there 
a more proper/elegant way you'd go about it?

> When using ldap with MySQL backend "Account Restrictions" doesn't work
> --
>
> Key: GUACAMOLE-284
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-284
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-jdbc-mysql, guacamole-auth-ldap, 
> guacamole-client
>Affects Versions: 0.9.12-incubating
>Reporter: Mark van den Boogaard
>
> When using LDAP authentication and a MySQL backend the options under "Account 
> Restrictions" are not working.
> When we set the option "Disabled" or "Enable/Disable account after" this has 
> no effect.
> For us the users who managing Guacamole (users and connections) do not have 
> access to LDAP to enable/disable accounts. So it would be nice to do have 
> these options working when using LDAP authentication with MySQL



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-299) ldap paged results limited to 1000

2017-05-30 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-299?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16029572#comment-16029572
 ] 

Nick Couchman commented on GUACAMOLE-299:
-

Isaac,
Can you confirm that you've tried setting the ldap-max-search-results parameter 
in your guacamole.properties file to something larger than 1000?  1000 is the 
default limit for that parameter, so you need to increase it if you want to see 
all of the results.

-Nick

> ldap paged results limited to 1000
> --
>
> Key: GUACAMOLE-299
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-299
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Affects Versions: 0.9.12-incubating
>Reporter: Isaac Marco Blancas
> Attachments: Selección568.png
>
>
> The guacamole/#/settings/users just find the first 1000 ldap people. When an 
> existing user is not located I can create a new user with his uid and he can 
> authenticate with no problems but this message captured in logs.
> guacamole[16369]: 08:39:57.685 [http-nio-8080-exec-6] WARN 
> o.a.g.auth.ldap.user.UserService - Could not query list of all users for 
> attribute "uid": Error while querying users.
> By other hand if I edit the user I can't see the MySQL and LDAP tabs... he is 
> not recognized as an LDAP user. See attachment.
> Same problem has been reported with AD in the forum:
> http://apache-guacamole-incubating-users.2363388.n4.nabble.com/Guacamole-and-Active-Directory-Paged-Results-td684.html



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-203) Implementing ServerAliveInterval to keep SSH session alive

2017-05-31 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-203?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16031084#comment-16031084
 ] 

Nick Couchman commented on GUACAMOLE-203:
-

I've taken a stab at an implementation of this.  I'll have a PR open as soon as 
Github allows me to - it seems to be in a bit of a funk this morning.

> Implementing ServerAliveInterval to keep SSH session alive
> --
>
> Key: GUACAMOLE-203
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-203
> Project: Guacamole
>  Issue Type: New Feature
>Reporter: Mark van den Boogaard
>
> We connect to servers of customers to support an application. After about 30 
> minutes of inactivity the session disconnects due to SSH configuration on the 
> remote host. As we don't have root access most of the time we cannot change 
> this behavior on the remote server.
> On client-side it is possible to use the option "ServerAliveInterval" with a 
> "normal" SSH client to send every x seconds a "alive" packet. It would be 
> very helpful to implement this in Guacamole in case you don't have access to 
> change this on server-side.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-312) VNC over SSH

2017-05-31 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-312?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16031324#comment-16031324
 ] 

Nick Couchman commented on GUACAMOLE-312:
-

I guess one question/comment would be: is there any reason to keep this 
specific to VNC, or does it make sense to allow any/all protocols to be 
tunneled over SSH?  VNC is definitely one that comes up commonly, as it lacks 
built-in encryption, but I think it isn't too terribly uncommon that people 
tunnel RDP over SSH, and with X.org support coming, I'm sure that will be one 
that people also want to tunnel over SSH.  Seems like making it available for 
all protocols could be useful??

> VNC over SSH
> 
>
> Key: GUACAMOLE-312
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-312
> Project: Guacamole
>  Issue Type: New Feature
>  Components: VNC
>Reporter: Michael Jumper
>Priority: Minor
>
> {panel:bgColor=#EE}
> *The description of this issue was copied from 
> [GUAC-223|https://glyptodon.org/jira/browse/GUAC-223], an issue in the JIRA 
> instance used by the Guacamole project prior to its acceptance into the 
> Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance 
> *have not been copied* and can be found instead at the original issue.
> {panel}
> It would be useful to provide access to VNC over SSH as an option.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-102) Load balancing based on resource

2017-05-31 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16032330#comment-16032330
 ] 

Nick Couchman commented on GUACAMOLE-102:
-

Well, I went ahead and took a stab at an implementation of a WLC algorithm, 
here.  PR 161 has been opened up in the incubator-guacamole-client repo for 
this change.  I expect there are a LOT of things that need tweaking before that 
code actually gets merged, but it's a start.  Maybe :-).

Anyway, looking forward past the basic WLC implementation, there are a few 
things I'd like to do:
- Implement multiple load balancing algorithms, as described earlier in this 
issue, and give the user control over which ones gets used.  Should be able to 
basically pull out that compare() method into a separate class and then call 
whichever method is appropriate for the selected algorithm.
- Still have to figure out the best way to dynamically update the connection 
weight and implement some default methods for that.  At the moment the only 
real way to do this is to have something update the database directly...which 
may end up being an acceptable long-term route, but probably want some other 
options, too.

> Load balancing based on resource
> 
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Priority: Minor
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Assigned] (GUACAMOLE-203) Implementing ServerAliveInterval to keep SSH session alive

2017-06-01 Thread Nick Couchman (JIRA)

 [ 
https://issues.apache.org/jira/browse/GUACAMOLE-203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman reassigned GUACAMOLE-203:
---

Assignee: Nick Couchman

> Implementing ServerAliveInterval to keep SSH session alive
> --
>
> Key: GUACAMOLE-203
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-203
> Project: Guacamole
>  Issue Type: New Feature
>Reporter: Mark van den Boogaard
>Assignee: Nick Couchman
>
> We connect to servers of customers to support an application. After about 30 
> minutes of inactivity the session disconnects due to SSH configuration on the 
> remote host. As we don't have root access most of the time we cannot change 
> this behavior on the remote server.
> On client-side it is possible to use the option "ServerAliveInterval" with a 
> "normal" SSH client to send every x seconds a "alive" packet. It would be 
> very helpful to implement this in Guacamole in case you don't have access to 
> change this on server-side.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Assigned] (GUACAMOLE-102) Load balancing based on resource

2017-06-01 Thread Nick Couchman (JIRA)

 [ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman reassigned GUACAMOLE-102:
---

Assignee: Nick Couchman

> Load balancing based on resource
> 
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Assignee: Nick Couchman
>Priority: Minor
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Assigned] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-06-01 Thread Nick Couchman (JIRA)

 [ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman reassigned GUACAMOLE-197:
---

Assignee: Nick Couchman

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Reporter: Nick Couchman
>Assignee: Nick Couchman
>Priority: Minor
> Fix For: 0.9.14-incubating
>
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-234) Migrate from JLDAP to Apache Directory LDAP API

2017-06-02 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16035708#comment-16035708
 ] 

Nick Couchman commented on GUACAMOLE-234:
-

Was glancing at this, and the Apache Directory LDAP API says it requires Java 7 
or later.  IIRC, Guacamole is built against JRE 6 compatibility - is this going 
to cause any problems trying to move to the this API?

> Migrate from JLDAP to Apache Directory LDAP API
> ---
>
> Key: GUACAMOLE-234
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-234
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole-auth-ldap
>Reporter: Michael Jumper
>Priority: Minor
>
> The LDAP support currently uses [JLDAP|http://www.openldap.org/jldap/], but 
> that library has been unmaintained for several years now (no changes 
> whatsoever since 2009). Migrating away from such a library might be a good 
> idea. The Apache Directory project has produced an LDAP client API which 
> could serve as a replacement:
> http://directory.apache.org/api/



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-314) Bump version numbers to 0.9.13-incubating

2017-06-03 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16036155#comment-16036155
 ] 

Nick Couchman commented on GUACAMOLE-314:
-

Okay, all changes have been merged to staging, and staging has been merged to 
master.

> Bump version numbers to 0.9.13-incubating
> -
>
> Key: GUACAMOLE-314
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-314
> Project: Guacamole
>  Issue Type: Task
>  Components: Documentation, guacamole-client, guacamole-server
>Reporter: Michael Jumper
>Assignee: Michael Jumper
> Fix For: 0.9.13-incubating
>
>
> As [the scope of 0.9.13-incubating has been 
> finalized|https://lists.apache.org/thread.html/4dcdce2c5c7e60ac9d86257c83c8e787ab02d8c78a9b2a8f20994403@%3Cdev.guacamole.apache.org%3E],
>  and the release branches have been created, the version numbers of all 
> modified components need to be bumped to 0.9.13-incubating.
> Only things which have actually changed should be bumped. This includes 
> component versions and, in the case of libguac, the SO version (libtool 
> version info, which must be incremented only according to [strict 
> guidelines|https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html]).



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-197) Implement Support for RADIUS Authentication

2017-06-05 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16037421#comment-16037421
 ] 

Nick Couchman commented on GUACAMOLE-197:
-

{quote}
Hello, I love that Guacamole is including RADIUS auth. I routinely use OpenOTP 
as a 2factor RADIUS server, and enabling Guacamole as a RADIUS client will make 
it eminently more useful for my purposes.
{quote}

Glad to hear I'm not the only one interested in it.

{quote}
One additional feature I hope this project may consider adding is the ability 
to filter which configuration a user has access to upon authentication. With 
LDAP, Guacamole has the ability to provide a user access to a configuration 
based on which LDAP group the user is a member of (see here 
https://guacamole.incubator.apache.org/doc/0.9.3/gug/ldap-auth.html). This can 
be done with RADIUS as well, but requires the RADIUS client implementation to 
"look" at attributes that are returned by the RADIUS server.
{quote}

I have plans (in my head, anyway) to expand RADIUS support in Guacamole later 
on for both authorization and accounting features, which I think would cover 
what you're talking about, here.  At the moment, this extension only does 
authentication and relies on other stacked authentication modules to provide 
the actual connection information.  The feature that you're referencing in the 
LDAP Authentication module works when the connections are stored in LDAP, and 
the LDAP directory is used for both authentication and connection information.  
If you layer LDAP with DB, you're left with the same challenge - the 
connections in the DB layer must be managed apart from the directory tree.

I think there's also a JIRA issue opened at the moment to add group support to 
the Guacamole client, which would also probably address the challenges, here - 
I would image that would also resolve the challenge you're facing of having to 
administer user/connection permissions on an individual basis.  The combination 
of the two - groups in Guacamole and an improved RADIUS module - is certainly 
an ideal place to get.

If you're able to contribute code to the effort I'd welcome the contribution!

> Implement Support for RADIUS Authentication
> ---
>
> Key: GUACAMOLE-197
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-197
> Project: Guacamole
>  Issue Type: Improvement
>  Components: guacamole, guacamole-client
>Reporter: Nick Couchman
>Assignee: Nick Couchman
>Priority: Minor
> Fix For: 0.9.14-incubating
>
>
> Working on implementing a RADIUS authentication module - 
> guacamole-auth-radius.  The basic implementation is completed - with a basic 
> PAP or CHAP RADIUS server, the authentication succeeds and the user is logged 
> in.
> I'm running into an issue, though, trying to implement Challenge/Response in 
> RADIUS.  I have my RADIUS server configured to talk to LinOTP for MFA/2FA, 
> and RADIUS sends the AccessChallenge package back, asking for the second 
> factor.  My issue is in my continual failure to grasp the connection between 
> the servlet side and the AngularJS web application.  I've copied the Duo 
> authentication code and tried to morph it into something that will present 
> another box for the RADIUS challenge, but I can't get my controller function 
> to actually fire.
> Once that is working, I'd like to support other RADIUS authentication 
> protocols, like EAP-TLS and EAP-TTLS, so there's a little more work to be 
> done, but right now I'm focusing on the basic protocols and the 
> challenge/response.
> Will have a repo posted here in a moment for working on this.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-272) Alternative to Duo

2017-06-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16038896#comment-16038896
 ] 

Nick Couchman commented on GUACAMOLE-272:
-

So, my gut feeling here is that we could do a native 2FA authentication system, 
but I'd suggest *not* an e-mail- (or SMS-) based one.  I would be more tempted 
to go with something like Google Authenticator with a rotating token.  If you 
really want to do 2FA with e-mail or SMS, there's a RADIUS extension that 
should be available, soon, and you can use that plus RADIUS plus your favorite 
OTP implementation (LinOTP, OpenOTP) to do the e-mail or SMS-based 
authentication.

There are a couple of Java libraries available for generating OTPs, we would 
just need to figure out the best place to implement it (bolt on to JDBC 
modules, separate module, etc.) and do the work.  If you have any experience 
coding Java and want to jump in and help, we welcome the contributions!

> Alternative to Duo
> --
>
> Key: GUACAMOLE-272
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-272
> Project: Guacamole
>  Issue Type: Improvement
>Reporter: Chris Wheeler
>
> I love the fact that you support 2 factor authentication, but I am 
> disappointed it costs money when you have more than 10 users. I would like to 
> propose that you implement a simple native 2FA option. All you would need to 
> do is add a configurable email field for each user, and configurable SMTP 
> settings. When the user logs in, it would prompt for a pin, then send that 
> pin to their email address.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-210) OAuth2 authentication plugin

2017-06-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-210?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16038900#comment-16038900
 ] 

Nick Couchman commented on GUACAMOLE-210:
-

I'll throw a suggestion out there - maybe it makes sense to combine all of 
these requests into a single "SSO" module (guacamole-auth-sso)?  SAML and 
OAuth2 have been requested, and I implemented a CAS module, and I would guess 
that there is going to be enough overlap that we could probably have a single 
module responsible for all SSO-type functionality that then implements a 
handful of different classes for the specific protocols.  It would also allow 
for easy expansion later on.

Thoughts?

> OAuth2 authentication plugin
> 
>
> Key: GUACAMOLE-210
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-210
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole-client
>Reporter: Michael Jumper
>Assignee: Michael Jumper
>
> {panel:bgColor=#EE}
> *The description of this issue was copied from 
> [GUAC-1485|https://glyptodon.org/jira/browse/GUAC-1485], an issue in the JIRA 
> instance used by the Guacamole project prior to its acceptance into the 
> Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance 
> *have not been copied* and can be found instead at the original issue.
> {panel}
> It would be nice if Guacamole had OAuth2 authentication plugin.
> OAuth2 is wide spread in web technologies and Guacamole deserves to have its 
> implementation of the protocol.
> My company had this use case and for now we are using a custom authentication 
> plugin because implementing a generic OAuth2 compatible Guacamole 
> authentication plugin presents some difficulties.
> h1. RedirectURI doesn't work because of Angular anchor system
> OAuth2 requires clients (Guacamole in our case) to register a redirect URI so 
> that the OAuth2 server could callback the application when the user has been 
> identify (or rejected) on its side. It also passes along some informations 
> like tokens or reason of failure as part of the URL. If we set the Guacamole 
> index URL as the redirect URI then this data never get passed along to the 
> authenticate plugin.
> Such redirect URI cannot contain any pound sign (#) because this sign in a 
> URI is a delimiter after which data are not sent to the server on HTTP 
> request. In the case of Guacamole, the Angular frontend uses those local URI 
> data to determine which page to display.
> Angular behavior cannot be easilly turned off and would lead to heaver code 
> changes and uncompatibility with older browser.
> h1. Retrieve to connection list on authentication
> Connection list is retrieved at user login. It doesn't make sense to expect 
> the OAuth server to give such list as it would not be generic enough.
> Fortunatly, connection lists get merged between authentication plugins and 
> this OAuth plugin could be paired with another one which goal would just be 
> to provide the connection list.
> h1. Token invalidation
> Upon a successful authentication, the OAuth2 server will issued an auth token.
> First, this token needs to be invalidated by Guacamole when user explicitly 
> disconnects.
> Second, there is no way for Guacamole to know if a stored auth token is still 
> valid. Leaving the user to freely keep on using its Guacamole session even 
> thought the token has expired.
> I am just leaving these though here so the Guacamole community could start an 
> discussion on this matter.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-210) OAuth2 authentication plugin

2017-06-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-210?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16039929#comment-16039929
 ] 

Nick Couchman commented on GUACAMOLE-210:
-

That's fine - single extensions it is.  Just thought I'd throw that out there 
for discussion - I definitely see your points.

> OAuth2 authentication plugin
> 
>
> Key: GUACAMOLE-210
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-210
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole-client
>Reporter: Michael Jumper
>Assignee: Michael Jumper
>
> {panel:bgColor=#EE}
> *The description of this issue was copied from 
> [GUAC-1485|https://glyptodon.org/jira/browse/GUAC-1485], an issue in the JIRA 
> instance used by the Guacamole project prior to its acceptance into the 
> Apache Incubator.*
> Comments, attachments, related issues, and history from prior to acceptance 
> *have not been copied* and can be found instead at the original issue.
> {panel}
> It would be nice if Guacamole had OAuth2 authentication plugin.
> OAuth2 is wide spread in web technologies and Guacamole deserves to have its 
> implementation of the protocol.
> My company had this use case and for now we are using a custom authentication 
> plugin because implementing a generic OAuth2 compatible Guacamole 
> authentication plugin presents some difficulties.
> h1. RedirectURI doesn't work because of Angular anchor system
> OAuth2 requires clients (Guacamole in our case) to register a redirect URI so 
> that the OAuth2 server could callback the application when the user has been 
> identify (or rejected) on its side. It also passes along some informations 
> like tokens or reason of failure as part of the URL. If we set the Guacamole 
> index URL as the redirect URI then this data never get passed along to the 
> authenticate plugin.
> Such redirect URI cannot contain any pound sign (#) because this sign in a 
> URI is a delimiter after which data are not sent to the server on HTTP 
> request. In the case of Guacamole, the Angular frontend uses those local URI 
> data to determine which page to display.
> Angular behavior cannot be easilly turned off and would lead to heaver code 
> changes and uncompatibility with older browser.
> h1. Retrieve to connection list on authentication
> Connection list is retrieved at user login. It doesn't make sense to expect 
> the OAuth server to give such list as it would not be generic enough.
> Fortunatly, connection lists get merged between authentication plugins and 
> this OAuth plugin could be paired with another one which goal would just be 
> to provide the connection list.
> h1. Token invalidation
> Upon a successful authentication, the OAuth2 server will issued an auth token.
> First, this token needs to be invalidated by Guacamole when user explicitly 
> disconnects.
> Second, there is no way for Guacamole to know if a stored auth token is still 
> valid. Leaving the user to freely keep on using its Guacamole session even 
> thought the token has expired.
> I am just leaving these though here so the Guacamole community could start an 
> discussion on this matter.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-102) Load balancing based on resource

2017-06-06 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16039934#comment-16039934
 ] 

Nick Couchman commented on GUACAMOLE-102:
-

So, initial commit has been made that at least begins the goal of this 
particular issue.  Connections can now have a weight assigned to them, and, 
rather than being chosen via a Least Connection algorithm, are now chosen via a 
Weighted Least Connection algorithm.

Next steps, I think, are:
- Look at implementing additional algorithms - Round Robin and Weighted Round 
Robin shouldn't be too hard to do.  I'm not entirely sure where the proper 
place is to start to break out the code for different LB algorithms - any 
thoughts?
- Still have not settled on the best way for dynamically updating the weights 
of the individual connections.  Does this live within the Guacamole Client 
code?  Or is it a separate daemon or piece of code?  Or maybe provide REST 
endpoints in the Guacamole Client code for updating the weights, but leave it 
up to the end user to implement the load checking/updating?  Any opinions here?

> Load balancing based on resource
> 
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Assignee: Nick Couchman
>Priority: Minor
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-102) Load balancing based on resource

2017-06-07 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16040926#comment-16040926
 ] 

Nick Couchman commented on GUACAMOLE-102:
-

{quote}
I would say, as far as this issue is concerned, scope is satisfied. RR and WRR 
sound like great ideas, but that should probably be a separate issue.
{quote}
Okay - I wasn't sure, since the original request was "implementation of 
resource-based balancing" - which isn't entirely satisfied.  The framework has 
been created for this to happen with the addition of the weight field, but it 
doesn't totally satisfy the request to implement resource-based balancing.  If 
the rest of the request is out of scope of the Guacamole Client, that's fine.

I'll submit a new issue and PR once I have RR AND WRR algorithms implemented so 
we can add those.

{quote}
I think the only thing remaining here before this issue can be reasonably 
closed is the documentation for the new column in the manual 
(http://guacamole.incubator.apache.org/doc/gug/jdbc-auth.html#jdbc-auth-schema).
{quote}
Done, and PR submitted on the manual for that.

{quote}
I think the only way would be for the service measurement component to live 
separately, in this case updating the connection weights in the database based 
on some measurement of load.
{quote}
That makes the most sense to me, too - seems like adding it to the client 
itself, though possible, is a little out of scope of the client.

{quote}
REST endpoints sound like a good option (and is possible now as of 
GUACAMOLE-289), but that would need to be done carefully. You wouldn't want 
unauthorized services/users to be able to update things.
{quote}
Yes, definitely need to make sure security is addressed.  With the current API 
is it possible to authenticate individual requests -  like passing either 
username/password in a header, or passing a digest or authorization header?  Or 
would that have to be implemented?  Also, I was thinking about some sort of 
additional permission added for updating the connection weight field such that 
you could have a specific user identified inside the JDBC authentication 
extension, that would authenticate directly to the API and then would have 
permission to update that field and only that field?

> Load balancing based on resource
> 
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Assignee: Nick Couchman
>Priority: Minor
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-102) Load balancing based on resource

2017-06-07 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16041126#comment-16041126
 ] 

Nick Couchman commented on GUACAMOLE-102:
-

The original request started out with:
{quote}
Implementation of an resource based (CPU, Memory, I/O, Loggedin User)...
{quote}

My take on this is that Werner was looking for the full resource-based load 
balancing, which means, not only the ability to weight a connection, but also 
the functionality for actually monitoring resources and dynamically updating 
the weight of the connection based on the resource utilization.  That's just my 
ASS/U/M(E)ption based on the original request - Werner would have to jump in 
and say exactly what he was looking for - maybe it does satisfy his request?

Werner, any input?

{quote}
Yes, REST resources will inherently require an authenticated Guacamole session 
if they are exposed via UserContext.getResource().
{quote}

So, this, plus a permission specifically for updating connection weight should 
do the trick, right?

> Load balancing based on resource
> 
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Assignee: Nick Couchman
>Priority: Minor
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Commented] (GUACAMOLE-102) Load balancing based on resource

2017-06-12 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16046797#comment-16046797
 ] 

Nick Couchman commented on GUACAMOLE-102:
-

Werner,
Thank you for the update.  Are you good closing this issue?

> Load balancing based on resource
> 
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Assignee: Nick Couchman
>Priority: Minor
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (GUACAMOLE-102) Load balancing based on resource

2017-06-13 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16047943#comment-16047943
 ] 

Nick Couchman commented on GUACAMOLE-102:
-

It did not make the 0.9.13 release in time, which should be out here, soon, but 
should be in the 0.9.14 release.

> Load balancing based on resource
> 
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Assignee: Nick Couchman
>Priority: Minor
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (GUACAMOLE-322) Implement Additional Load Balancing Algorithms

2017-06-13 Thread Nick Couchman (JIRA)
Nick Couchman created GUACAMOLE-322:
---

 Summary: Implement Additional Load Balancing Algorithms
 Key: GUACAMOLE-322
 URL: https://issues.apache.org/jira/browse/GUACAMOLE-322
 Project: Guacamole
  Issue Type: Improvement
  Components: guacamole-client
Affects Versions: 0.9.12-incubating
Reporter: Nick Couchman
Assignee: Nick Couchman
Priority: Minor


Now that the connection_weight field has been added, it makes sense to build 
out support for additional load balancing algorithms for the BALANCING 
connection group and allow users to choose which algorithm to use.

Guacamole currently supports Weighted Least Connection (and Least Connection, 
when weights are undefined or are equal).  I propose adding support for the 
following:
- Round Robin
- Weighted Round Robin
- Least Recently Used
- Weighted Least Recently Used

For (Weighted) Round Robin, the plan would be to look at all the connections in 
a group, order them by their id, and then have a DB field keep track of either 
the last one used or the next one to use (opinions?).

For (Weighted) Least Recently Used, it should be relatively easy to look at the 
connection history table and grab the oldest start_date field for a list of 
connections in the group, then calculate out from there.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Assigned] (GUACAMOLE-323) Login screen appears during CAS redirect

2017-06-14 Thread Nick Couchman (JIRA)

 [ 
https://issues.apache.org/jira/browse/GUACAMOLE-323?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman reassigned GUACAMOLE-323:
---

Assignee: Nick Couchman

> Login screen appears during CAS redirect
> 
>
> Key: GUACAMOLE-323
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-323
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-cas
>Affects Versions: 0.9.13-incubating
>Reporter: Michael Jumper
>Assignee: Nick Couchman
>Priority: Blocker
> Fix For: 0.9.13-incubating
>
>
> When using the new CAS authentication extension, the Guacamole login dialog 
> (with no login fields) briefly appears while the browser redirects to CAS 
> itself. This leads to a confusing user experience - the longer the dialog is 
> visible, the more the user will feel they should be interacting with 
> something, even though attempting to do so in this case will not have the 
> intended effect.
> Some sort of feedback needs to be provided during the redirect process, so 
> the user is aware that they need to wait while they are redirected to CAS.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Assigned] (GUACAMOLE-328) Documentation omits that libssl is required for ssh support

2017-06-17 Thread Nick Couchman (JIRA)

 [ 
https://issues.apache.org/jira/browse/GUACAMOLE-328?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman reassigned GUACAMOLE-328:
---

Assignee: Nick Couchman

> Documentation omits that libssl is required for ssh support
> ---
>
> Key: GUACAMOLE-328
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-328
> Project: Guacamole
>  Issue Type: Bug
>  Components: Documentation
>Affects Versions: 0.9.12-incubating
> Environment: A minimal Ubuntu 16.04 image running in Docker
>Reporter: Anna Winters
>Assignee: Nick Couchman
>Priority: Trivial
>  Labels: documentation
>
> Chapter 2 of the documentation, "Installing Guacamole natively", says the 
> following with respect to building guacamole-server:
> {quote}SSH support depends on libssh2 and Pango (a font rendering and text 
> layout library, used by Guacamole's built-in terminal emulator).{quote}
> However, running the ./configure script with libssh2 and pango installed 
> gives the following output i.e. there will be no SSH support:
> {noformat}
>Library status:
>  freerdp . no
>  pango ... yes
>  libavcodec .. no
>  libavutil ... yes
>  libssh2 . yes
>  libssl .. no
>  libswscale .. no
>  libtelnet ... no
>  libVNCServer  yes
>  libvorbis ... no
>  libpulse  no
>  libwebp . yes
>Protocol support:
>   RDP ... no
>   SSH ... no
>   Telnet  no
>   VNC ... yes
> {noformat}
> The README file does say that openssl is also required:
> {quote}
> 
>  Optional dependencies
> 
> In addition, the following optional dependencies may be installed in order to
> enable optional features of Guacamole. Note that while the various supported
> protocols are technically optional, you will no doubt wish to install the
> dependencies of at least ONE supported protocol, as Guacamole would be useless
> otherwise.
> RDP:
> * FreeRDP (http://www.freerdp.com/)
> SSH:
> * libssh2 (http://www.libssh2.org/)
> * OpenSSL (https://www.openssl.org/)
> * Pango (http://www.pango.org/){quote}
> And the documentation itself says further down the page (in the libssl 
> section)
> {quote}Without SSL support, there will be no option to encrypt communication 
> to guacd, and support for SSH cannot be built.{quote}
> And it is correct, SSH support starts working with libssl installed:
> {noformat}
>Library status:
>  freerdp . no
>  pango ... yes
>  libavcodec .. no
>  libavutil ... yes
>  libssh2 . yes
>  libssl .. yes
>  libswscale .. no
>  libtelnet ... no
>  libVNCServer  yes
>  libvorbis ... no
>  libpulse  no
>  libwebp . yes
>Protocol support:
>   RDP ... no
>   SSH ... yes
>   Telnet  no
>   VNC ... yes
> {noformat}
> The original text, which appears at the highest point in the page and in a 
> bigger font, could be updated to also mention openssl, so others don't end up 
> in the situation that I did (installing pango and libssh and wondering why 
> SSH support wasn't being built).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (GUACAMOLE-328) Documentation omits that libssl is required for ssh support

2017-06-17 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-328?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16052909#comment-16052909
 ] 

Nick Couchman commented on GUACAMOLE-328:
-

Anna, I have opened a PR that adds OpenSSL to the libssh2 and Pango 
requirements for SSH support.  It's worth noting that, even in the current 
Guacamole manual, if you look under the Optional Dependencies section, and the 
OpenSSL item, it does mention there that it is required for SSH support.

> Documentation omits that libssl is required for ssh support
> ---
>
> Key: GUACAMOLE-328
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-328
> Project: Guacamole
>  Issue Type: Bug
>  Components: Documentation
>Affects Versions: 0.9.12-incubating
> Environment: A minimal Ubuntu 16.04 image running in Docker
>Reporter: Anna Winters
>Assignee: Nick Couchman
>Priority: Trivial
>  Labels: documentation
>
> Chapter 2 of the documentation, "Installing Guacamole natively", says the 
> following with respect to building guacamole-server:
> {quote}SSH support depends on libssh2 and Pango (a font rendering and text 
> layout library, used by Guacamole's built-in terminal emulator).{quote}
> However, running the ./configure script with libssh2 and pango installed 
> gives the following output i.e. there will be no SSH support:
> {noformat}
>Library status:
>  freerdp . no
>  pango ... yes
>  libavcodec .. no
>  libavutil ... yes
>  libssh2 . yes
>  libssl .. no
>  libswscale .. no
>  libtelnet ... no
>  libVNCServer  yes
>  libvorbis ... no
>  libpulse  no
>  libwebp . yes
>Protocol support:
>   RDP ... no
>   SSH ... no
>   Telnet  no
>   VNC ... yes
> {noformat}
> The README file does say that openssl is also required:
> {quote}
> 
>  Optional dependencies
> 
> In addition, the following optional dependencies may be installed in order to
> enable optional features of Guacamole. Note that while the various supported
> protocols are technically optional, you will no doubt wish to install the
> dependencies of at least ONE supported protocol, as Guacamole would be useless
> otherwise.
> RDP:
> * FreeRDP (http://www.freerdp.com/)
> SSH:
> * libssh2 (http://www.libssh2.org/)
> * OpenSSL (https://www.openssl.org/)
> * Pango (http://www.pango.org/){quote}
> And the documentation itself says further down the page (in the libssl 
> section)
> {quote}Without SSL support, there will be no option to encrypt communication 
> to guacd, and support for SSH cannot be built.{quote}
> And it is correct, SSH support starts working with libssl installed:
> {noformat}
>Library status:
>  freerdp . no
>  pango ... yes
>  libavcodec .. no
>  libavutil ... yes
>  libssh2 . yes
>  libssl .. yes
>  libswscale .. no
>  libtelnet ... no
>  libVNCServer  yes
>  libvorbis ... no
>  libpulse  no
>  libwebp . yes
>Protocol support:
>   RDP ... no
>   SSH ... yes
>   Telnet  no
>   VNC ... yes
> {noformat}
> The original text, which appears at the highest point in the page and in a 
> bigger font, could be updated to also mention openssl, so others don't end up 
> in the situation that I did (installing pango and libssh and wondering why 
> SSH support wasn't being built).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (GUACAMOLE-296) RDP audio input cause disconnection on Windows Server 2012 / 2016

2017-06-19 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16053970#comment-16053970
 ] 

Nick Couchman commented on GUACAMOLE-296:
-

Marc,
Question for you - could you please do "ldd -r 
/usr/lib/x86_64-linux-gnu/freerdp/guacai-client.so" and see what the output is?

> RDP audio input cause disconnection on Windows Server 2012 / 2016
> -
>
> Key: GUACAMOLE-296
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-296
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole
>Affects Versions: 0.9.12-incubating
>Reporter: Hisham
>  Labels: audio
>
> I know this problem was discussed in resolved thread, but it is a bit 
> different, please help me, I tried every thing I was able to find about the 
> topic.
>  On Windows Server 2012 R2: Audio playback works, but the minute I start 
> Sound settings in the "Recording" tab the connection gets disconnected 
> immediately. After that it is impossible to connect to the VM with guacamole, 
> because it keeps disconnecting immediately, the only why is using a RDP 
> client, and closing the Audio settings.
> this are the log info:
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: Loading keymap "base"
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: Loading keymap "de-de-qwertz"
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: guacsnd connected.
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: guacdr connected.
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Connected to RDPDR 1.12 as 
> client 0x0002
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0001, length=44
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0002, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0003, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0004, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0005, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Sending capabilities...
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Capabilities sent.
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Client ID confirmed
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: User logged on
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Sending filesystem
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Registered device 0 (Guacamole 
> Filesystem)
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: All supported devices sent.
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Device 0 (Guacamole Filesystem) 
> connected successfully
> May  8 10:19:37 ip-172-31-20-3 guacd[1183]: Connection 
> "$70610038-ba7e-4e1d-9103-1b870c0cb079" removed.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (GUACAMOLE-296) RDP audio input cause disconnection on Windows Server 2012 / 2016

2017-06-19 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16054096#comment-16054096
 ] 

Nick Couchman commented on GUACAMOLE-296:
-

Hisham,

{quote}
> What thread (or JIRA issue?) are you referring to?
https://issues.apache.org/jira/browse/GUACAMOLE-228
{quote}

That appears to be a different problem.  It's related in that it involves audio 
not working in Guacamole over RDP, but the symptoms described there are 
different than those you're describing.  Issue 228 doesn't say anything about 
RDP connections being terminated when you try to click on the recording tab.

{quote}
It is a new installation on a new AWS EC2, I used the following script to 
install:
https://www.chasewright.com/guacamole-with-mysql-on-ubuntu/
{quote}
Some more detail might be useful - like what version of FreeRDP is being 
installed.  And verify you're using it on the same platform as the web page 
states (Ubuntu 16.04)?  One-shot scripts like this can be useful, but they can 
also make it more difficult to track down problems like this.

{quote}
PLEASE solve this problem!!
{quote}
It isn't really considered good etiquette to yell at the people trying to help 
you :-).  We are trying to help you resolve this issue, it's just not something 
we're currently experiencing, so we have to try to gather additional details 
(from you) about what's going on.  Also, some of us do this as a hobby and 
don't get paid for it, so the time we're able to spend on it competes with 
other things in our lives - we can't always dedicate the time to it we'd like.

-Nick

> RDP audio input cause disconnection on Windows Server 2012 / 2016
> -
>
> Key: GUACAMOLE-296
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-296
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole
>Affects Versions: 0.9.12-incubating
>Reporter: Hisham
>  Labels: audio
>
> I know this problem was discussed in resolved thread, but it is a bit 
> different, please help me, I tried every thing I was able to find about the 
> topic.
>  On Windows Server 2012 R2: Audio playback works, but the minute I start 
> Sound settings in the "Recording" tab the connection gets disconnected 
> immediately. After that it is impossible to connect to the VM with guacamole, 
> because it keeps disconnecting immediately, the only why is using a RDP 
> client, and closing the Audio settings.
> this are the log info:
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: Loading keymap "base"
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: Loading keymap "de-de-qwertz"
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: guacsnd connected.
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: guacdr connected.
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Connected to RDPDR 1.12 as 
> client 0x0002
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0001, length=44
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0002, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0003, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0004, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0005, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Sending capabilities...
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Capabilities sent.
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Client ID confirmed
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: User logged on
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Sending filesystem
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Registered device 0 (Guacamole 
> Filesystem)
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: All supported devices sent.
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Device 0 (Guacamole Filesystem) 
> connected successfully
> May  8 10:19:37 ip-172-31-20-3 guacd[1183]: Connection 
> "$70610038-ba7e-4e1d-9103-1b870c0cb079" removed.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (GUACAMOLE-296) RDP audio input cause disconnection on Windows Server 2012 / 2016

2017-06-19 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16054277#comment-16054277
 ] 

Nick Couchman commented on GUACAMOLE-296:
-

Looks like the Stream_New and Stream_Free symbols are exported in FreeRDP 1.1 
from the libwinpr-utils file:
root@host:~/guacamole-server-0.9.12-incubating# nm -D 
/usr/lib/x86_64-linux-gnu/libwinpr-utils.so.0.1.0 |grep Stream_New
6fb0 T Stream_New
root@host:~/guacamole-server-0.9.12-incubating# nm -D 
/usr/lib/x86_64-linux-gnu/libwinpr-utils.so.0.1.0 |grep Stream_Free
7010 T Stream_Free

So maybe the guacai-client.so file needs to link against that file?  A quick 
change to the src/protocols/rdp/Makefile seems to resolve this issue.  Around 
line 715 should be guacai_ldflags=, and adding -lwinpr-utils to the end of the 
last line (after -lfreerdp-codec) causes that library to be linked against the 
libwinpr-utils shared library, which removes the error.
{code}
guacai_ldflags = \
-module -avoid-version -shared \
-lpthread \
 -lfreerdp-core -lfreerdp-cache -lfreerdp-client -lfreerdp-utils 
-lfreerdp-codec -lwinpr-utils
{code}

{code}
root@ussalxapps179t:~/guacamole-server-0.9.12-incubating# ldd -r 
src/protocols/rdp/.libs/guacai-client.so
linux-vdso.so.1 =>  (0x7fff18b5a000)
libwinpr-utils.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-utils.so.0.1 (0x7ffaeb509000)
libguac.so.12 => 
/root/guacamole-server-0.9.12-incubating/src/libguac/.libs/libguac.so.12 
(0x7ffaeb2f6000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 
(0x7ffaeafe1000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x7ffaeadc4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x7ffaea9fb000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 
(0x7ffaea5b6000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x7ffaea2ad000)
libwinpr-synch.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-synch.so.0.1 (0x7ffaea0a7000)
libwinpr-sysinfo.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-sysinfo.so.0.1 (0x7ffae9ea3000)
libwinpr-crt.so.0.1 => /usr/lib/x86_64-linux-gnu/libwinpr-crt.so.0.1 
(0x7ffae9c9e000)
libwinpr-handle.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-handle.so.0.1 (0x7ffae9a9c000)
libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 
(0x7ffae9842000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 
(0x7ffae961d000)
libossp-uuid.so.16 => /usr/lib/x86_64-linux-gnu/libossp-uuid.so.16 
(0x7ffae9411000)
libwebp.so.5 => /usr/lib/x86_64-linux-gnu/libwebp.so.5 
(0x7ffae91b4000)
libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 
(0x7ffae8f0c000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 
(0x7ffae8cc9000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 
(0x7ffae8a1e000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 
(0x7ffae881a000)
libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 
(0x7ffae861)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 
(0x7ffae83ed000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 
(0x7ffae81e3000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 
(0x7ffae7ea9000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 
(0x7ffae7c96000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x7ffae7a7c000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x7ffae7874000)
/lib64/ld-linux-x86-64.so.2 (0x55c72197e000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x7ffae766f000)
libwinpr-interlocked.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-interlocked.so.0.1 (0x7ffae746c000)
libwinpr-thread.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-thread.so.0.1 (0x7ffae7269000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 
(0x7ffae703f000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 
(0x7ffae6e3b000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 
(0x7ffae6c34000)
undefined symbol: guac_rdp_dvc_list_add 
(src/protocols/rdp/.libs/guacai-client.so)
{code}

(Not sure what the other undefined symbol is...guac_rdp_dvc_list_add??).

[~meeheewee]: Can you try this change to the Makefile and then try the sound 
input, again, and see if this resolves the issue?

> RDP audio input cause disconnection on Windows Server 2012 / 2016
> -
>
> Key: GUACAMOLE-296
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-296
> Project: Guacamole
>  Issue Type: Bug
>   

[jira] [Comment Edited] (GUACAMOLE-296) RDP audio input cause disconnection on Windows Server 2012 / 2016

2017-06-19 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16054277#comment-16054277
 ] 

Nick Couchman edited comment on GUACAMOLE-296 at 6/19/17 4:43 PM:
--

Looks like the Stream_New and Stream_Free symbols are exported in FreeRDP 1.1 
from the libwinpr-utils file:
root@host:~/guacamole-server-0.9.12-incubating# nm -D 
/usr/lib/x86_64-linux-gnu/libwinpr-utils.so.0.1.0 |grep Stream_New
6fb0 T Stream_New
root@host:~/guacamole-server-0.9.12-incubating# nm -D 
/usr/lib/x86_64-linux-gnu/libwinpr-utils.so.0.1.0 |grep Stream_Free
7010 T Stream_Free

So maybe the guacai-client.so file needs to link against that file?  A quick 
change to the src/protocols/rdp/Makefile seems to resolve this issue.  Around 
line 715 should be guacai_ldflags=, and adding -lwinpr-utils to the end of the 
last line (after -lfreerdp-codec) causes that library to be linked against the 
libwinpr-utils shared library, which removes the error.
{code}
guacai_ldflags = \
-module -avoid-version -shared \
-lpthread \
 -lfreerdp-core -lfreerdp-cache -lfreerdp-client -lfreerdp-utils 
-lfreerdp-codec -lwinpr-utils
{code}

{code}
root@host:~/guacamole-server-0.9.12-incubating# ldd -r 
src/protocols/rdp/.libs/guacai-client.so
linux-vdso.so.1 =>  (0x7fff18b5a000)
libwinpr-utils.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-utils.so.0.1 (0x7ffaeb509000)
libguac.so.12 => 
/root/guacamole-server-0.9.12-incubating/src/libguac/.libs/libguac.so.12 
(0x7ffaeb2f6000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 
(0x7ffaeafe1000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x7ffaeadc4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x7ffaea9fb000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 
(0x7ffaea5b6000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x7ffaea2ad000)
libwinpr-synch.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-synch.so.0.1 (0x7ffaea0a7000)
libwinpr-sysinfo.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-sysinfo.so.0.1 (0x7ffae9ea3000)
libwinpr-crt.so.0.1 => /usr/lib/x86_64-linux-gnu/libwinpr-crt.so.0.1 
(0x7ffae9c9e000)
libwinpr-handle.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-handle.so.0.1 (0x7ffae9a9c000)
libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 
(0x7ffae9842000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 
(0x7ffae961d000)
libossp-uuid.so.16 => /usr/lib/x86_64-linux-gnu/libossp-uuid.so.16 
(0x7ffae9411000)
libwebp.so.5 => /usr/lib/x86_64-linux-gnu/libwebp.so.5 
(0x7ffae91b4000)
libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 
(0x7ffae8f0c000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 
(0x7ffae8cc9000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 
(0x7ffae8a1e000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 
(0x7ffae881a000)
libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 
(0x7ffae861)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 
(0x7ffae83ed000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 
(0x7ffae81e3000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 
(0x7ffae7ea9000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 
(0x7ffae7c96000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x7ffae7a7c000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x7ffae7874000)
/lib64/ld-linux-x86-64.so.2 (0x55c72197e000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x7ffae766f000)
libwinpr-interlocked.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-interlocked.so.0.1 (0x7ffae746c000)
libwinpr-thread.so.0.1 => 
/usr/lib/x86_64-linux-gnu/libwinpr-thread.so.0.1 (0x7ffae7269000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 
(0x7ffae703f000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 
(0x7ffae6e3b000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 
(0x7ffae6c34000)
undefined symbol: guac_rdp_dvc_list_add 
(src/protocols/rdp/.libs/guacai-client.so)
{code}

(Not sure what the other undefined symbol is...guac_rdp_dvc_list_add??).

[~meeheewee]: Can you try this change to the Makefile and then try the sound 
input, again, and see if this resolves the issue?


was (Author: nick.couch...@yahoo.com):
Looks like the Stream_New and Stream_Free symbols are exported in FreeRDP 1.1 
from the libwinpr-utils file:
root@host:~/guacamole-server-0.9.12-incubating# nm -D 
/usr/lib/x86_64-linux-gnu/libwinpr-utils.so.0.1.0 |grep Stream_New

[jira] [Resolved] (GUACAMOLE-328) Documentation omits that libssl is required for ssh support

2017-06-19 Thread Nick Couchman (JIRA)

 [ 
https://issues.apache.org/jira/browse/GUACAMOLE-328?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman resolved GUACAMOLE-328.
-
   Resolution: Fixed
Fix Version/s: 0.9.14-incubating

Updated language in manual to reflect this requirement.

> Documentation omits that libssl is required for ssh support
> ---
>
> Key: GUACAMOLE-328
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-328
> Project: Guacamole
>  Issue Type: Bug
>  Components: Documentation
>Affects Versions: 0.9.12-incubating
> Environment: A minimal Ubuntu 16.04 image running in Docker
>Reporter: Anna Winters
>Assignee: Nick Couchman
>Priority: Trivial
>  Labels: documentation
> Fix For: 0.9.14-incubating
>
>
> Chapter 2 of the documentation, "Installing Guacamole natively", says the 
> following with respect to building guacamole-server:
> {quote}SSH support depends on libssh2 and Pango (a font rendering and text 
> layout library, used by Guacamole's built-in terminal emulator).{quote}
> However, running the ./configure script with libssh2 and pango installed 
> gives the following output i.e. there will be no SSH support:
> {noformat}
>Library status:
>  freerdp . no
>  pango ... yes
>  libavcodec .. no
>  libavutil ... yes
>  libssh2 . yes
>  libssl .. no
>  libswscale .. no
>  libtelnet ... no
>  libVNCServer  yes
>  libvorbis ... no
>  libpulse  no
>  libwebp . yes
>Protocol support:
>   RDP ... no
>   SSH ... no
>   Telnet  no
>   VNC ... yes
> {noformat}
> The README file does say that openssl is also required:
> {quote}
> 
>  Optional dependencies
> 
> In addition, the following optional dependencies may be installed in order to
> enable optional features of Guacamole. Note that while the various supported
> protocols are technically optional, you will no doubt wish to install the
> dependencies of at least ONE supported protocol, as Guacamole would be useless
> otherwise.
> RDP:
> * FreeRDP (http://www.freerdp.com/)
> SSH:
> * libssh2 (http://www.libssh2.org/)
> * OpenSSL (https://www.openssl.org/)
> * Pango (http://www.pango.org/){quote}
> And the documentation itself says further down the page (in the libssl 
> section)
> {quote}Without SSL support, there will be no option to encrypt communication 
> to guacd, and support for SSH cannot be built.{quote}
> And it is correct, SSH support starts working with libssl installed:
> {noformat}
>Library status:
>  freerdp . no
>  pango ... yes
>  libavcodec .. no
>  libavutil ... yes
>  libssh2 . yes
>  libssl .. yes
>  libswscale .. no
>  libtelnet ... no
>  libVNCServer  yes
>  libvorbis ... no
>  libpulse  no
>  libwebp . yes
>Protocol support:
>   RDP ... no
>   SSH ... yes
>   Telnet  no
>   VNC ... yes
> {noformat}
> The original text, which appears at the highest point in the page and in a 
> bigger font, could be updated to also mention openssl, so others don't end up 
> in the situation that I did (installing pango and libssh and wondering why 
> SSH support wasn't being built).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (GUACAMOLE-331) Extremely slow download/upload over http tunnel

2017-06-20 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-331?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16056317#comment-16056317
 ] 

Nick Couchman commented on GUACAMOLE-331:
-

Okay, a couple of questions for you:
- You say there is no such problem in the official Guacamole client, which 
leverages the same guacamole-common and guacamole-common-js code as you're 
using for the custom client, so why do you say this is a major bug in the 
guacamole-common code?  Seems if it's working fine in the official client, the 
common code is probably okay??
- Can you provide some further specifications on testing, particularly 
differences between the custom code and the official client?  You say Ubuntu 
16.04 for the custom code, and Fedora 25 for the guacd instances, but were you 
running the official guacamole client on Fedora 25?  Or did you install that 
into Ubuntu 16.04?  Were both the custom client and the official client pointed 
at the same guacd instances in both cases?
- What browser(s) did you test, on what platforms, and was the slow speed 
observation the same across all browsers/platforms you tested on the client?

-Nick

> Extremely slow download/upload over http tunnel
> ---
>
> Key: GUACAMOLE-331
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-331
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-common, guacamole-common-js
>Affects Versions: 0.9.12-incubating
> Environment: Ubuntu 16.04 (custom guacamole client), Fedora 25 (guacd 
> instances in lxd containers)
>Reporter: Josef Krahujec
>  Labels: documentation-update, http-tunneling, input-stream
>
> Downloading/uploading files over http tunnel is extremely slow (200 kB/s 
> maximum), even though we are present in local network. Here is source code 
> for downloading files:
> {code:JavaScript}
> $(".management table").on("click", ".fs-file", function(){
>   var that = this;
>   var filename = $(".management tbody").children().eq(that.rowIndex - 
> 1).find(".name").html();
>   var requestFile = $("#path").html() + filename;
>   if ($.inArray(requestFile, window.downloading) != -1)
>   return false;
>   $(".management tbody").children().eq(that.rowIndex - 
> 1).children().eq(1).addClass("downloading");
>   window.downloading.push(requestFile);
>   window.fs.obj.requestInputStream(requestFile, function(stream, 
> mimetype){
>   stream.sendAck("Ready", Guacamole.Status.Code.SUCCESS);
>   var reader = new Guacamole.BlobReader(stream, mimetype);
>   removeSearch();
>   reader.onend = function(){
>   var blob = reader.getBlob();
>   blobDownload(blob, filename, requestFile);
>   }
>   });
> });
> {code}
> We have also tried the official guacamole client, however there appeared to 
> be no such problem.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (GUACAMOLE-296) RDP audio input cause disconnection on Windows Server 2012 / 2016

2017-06-23 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16060630#comment-16060630
 ] 

Nick Couchman commented on GUACAMOLE-296:
-

{quote}
Is it possible to fix it that the build will have the fix?
{quote}

One of the future builds will.  I need to see if I can figure out how to 
properly change all of the Makefile infrastructure for that, or if I'll need 
[~mike.jumper]'s help for this one.  The main thing I'm concerned about is 
properly detected when this is required (FreeRDP 1.1 and later) so that it 
doesn't cause problems with the build for earlier versions of FreeRDP.

> RDP audio input cause disconnection on Windows Server 2012 / 2016
> -
>
> Key: GUACAMOLE-296
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-296
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole
>Affects Versions: 0.9.12-incubating
>Reporter: Hisham
>  Labels: audio
>
> I know this problem was discussed in resolved thread, but it is a bit 
> different, please help me, I tried every thing I was able to find about the 
> topic.
>  On Windows Server 2012 R2: Audio playback works, but the minute I start 
> Sound settings in the "Recording" tab the connection gets disconnected 
> immediately. After that it is impossible to connect to the VM with guacamole, 
> because it keeps disconnecting immediately, the only why is using a RDP 
> client, and closing the Audio settings.
> this are the log info:
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: Loading keymap "base"
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: Loading keymap "de-de-qwertz"
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: guacsnd connected.
> May  8 10:19:27 ip-172-31-20-3 guacd[14887]: guacdr connected.
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Connected to RDPDR 1.12 as 
> client 0x0002
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0001, length=44
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0002, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0003, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0004, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Ignoring server capability set 
> type=0x0005, length=8
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Sending capabilities...
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Capabilities sent.
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Client ID confirmed
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: User logged on
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Sending filesystem
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Registered device 0 (Guacamole 
> Filesystem)
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: All supported devices sent.
> May  8 10:19:28 ip-172-31-20-3 guacd[14887]: Device 0 (Guacamole Filesystem) 
> connected successfully
> May  8 10:19:37 ip-172-31-20-3 guacd[1183]: Connection 
> "$70610038-ba7e-4e1d-9103-1b870c0cb079" removed.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (GUACAMOLE-299) ldap paged results limited to 1000

2017-06-25 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-299?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16062408#comment-16062408
 ] 

Nick Couchman commented on GUACAMOLE-299:
-

[~isaac.marco]: Any update on this?  Have you set the ldap-max-search-results 
parameter in guacamole.properties?

> ldap paged results limited to 1000
> --
>
> Key: GUACAMOLE-299
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-299
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Affects Versions: 0.9.12-incubating
>Reporter: Isaac Marco Blancas
> Attachments: Selección568.png
>
>
> The guacamole/#/settings/users just find the first 1000 ldap people. When an 
> existing user is not located I can create a new user with his uid and he can 
> authenticate with no problems but this message captured in logs.
> guacamole[16369]: 08:39:57.685 [http-nio-8080-exec-6] WARN 
> o.a.g.auth.ldap.user.UserService - Could not query list of all users for 
> attribute "uid": Error while querying users.
> By other hand if I edit the user I can't see the MySQL and LDAP tabs... he is 
> not recognized as an LDAP user. See attachment.
> Same problem has been reported with AD in the forum:
> http://apache-guacamole-incubating-users.2363388.n4.nabble.com/Guacamole-and-Active-Directory-Paged-Results-td684.html



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (GUACAMOLE-263) Guacamole is not returning paged results of complete ldap user base DN

2017-06-25 Thread Nick Couchman (JIRA)

[ 
https://issues.apache.org/jira/browse/GUACAMOLE-263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16062409#comment-16062409
 ] 

Nick Couchman commented on GUACAMOLE-263:
-

[~mgoya] Were you able to try the development version - build the master branch 
from the git repo?  Also, 0.9.13-incubating should be out, shortly.

> Guacamole is not returning paged results of complete ldap user base DN
> --
>
> Key: GUACAMOLE-263
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-263
> Project: Guacamole
>  Issue Type: Bug
>  Components: guacamole-auth-ldap
>Affects Versions: 0.9.11-incubating
> Environment: CentOS 7 
> MariaDB 5.5.44
> Windows Server 2012 R2 Active Directory Domain Services
>Reporter: M Goya
>
> My guacamole instance is integrated with Windows 2012 AD Domain Services.  
> LDAP authentication is working fine for all users.  But I am unable to 
> administer the system properly because I am unable to query all users and 
> assign appropriate permissions in the web UI.  My user base base DN is >1000 
> objects.  The application is not returning paged results of all objects and 
> is only showing the first 1000 objects.  Any advice on a fix is much 
> appreciated.  



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (GUACAMOLE-102) Load balancing based on resource

2017-06-25 Thread Nick Couchman (JIRA)

 [ 
https://issues.apache.org/jira/browse/GUACAMOLE-102?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman updated GUACAMOLE-102:

Fix Version/s: 0.9.14-incubating

> Load balancing based on resource
> 
>
> Key: GUACAMOLE-102
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-102
> Project: Guacamole
>  Issue Type: New Feature
>  Components: guacamole, guacamole-auth-jdbc, 
> guacamole-auth-jdbc-mysql, guacamole-auth-jdbc-postgresql, guacamole-client, 
> RDP
>Affects Versions: 0.9.10-incubating
> Environment: CentOS Linux 7 (Core)
> Linux 3.10.0-327.10.1.el7.x86_64
>Reporter: Werner Novak
>Assignee: Nick Couchman
>Priority: Minor
> Fix For: 0.9.14-incubating
>
>
> Implementation of an resource based (CPU, Memory, I/O, Loggedin User) 
> balancing in opposite to the current implemented guacamole connections round 
> robin. This is needed because of an large RDP infrastructure (300+ TS), where 
> the terminal server been accessed via multiple RDP load balancers during 
> migration.
> A prototype has been developed in a guacamole fork
> https://github.com/wnovak/incubator-guacamole-client.git



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (GUACAMOLE-203) Implementing ServerAliveInterval to keep SSH session alive

2017-06-25 Thread Nick Couchman (JIRA)

 [ 
https://issues.apache.org/jira/browse/GUACAMOLE-203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Couchman updated GUACAMOLE-203:

Affects Version/s: 0.9.12-incubating
Fix Version/s: 0.9.14-incubating

> Implementing ServerAliveInterval to keep SSH session alive
> --
>
> Key: GUACAMOLE-203
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-203
> Project: Guacamole
>  Issue Type: New Feature
>Affects Versions: 0.9.12-incubating
>Reporter: Mark van den Boogaard
>Assignee: Nick Couchman
> Fix For: 0.9.14-incubating
>
>
> We connect to servers of customers to support an application. After about 30 
> minutes of inactivity the session disconnects due to SSH configuration on the 
> remote host. As we don't have root access most of the time we cannot change 
> this behavior on the remote server.
> On client-side it is possible to use the option "ServerAliveInterval" with a 
> "normal" SSH client to send every x seconds a "alive" packet. It would be 
> very helpful to implement this in Guacamole in case you don't have access to 
> change this on server-side.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


  1   2   3   >