Solved: Apologies in advance for the long message - I figured it out but have 
questions on the docs and what it's actually doing

>From digging on this I saw tomcat had guacd on localhost:4802 which is NOT 
>where it is - it's at guac-guacd:4822
>From the log file:
01:41:04.511 [http-nio-8080-exec-2] DEBUG o.a.g.net.InetGuacamoleSocket - 
Connecting to guacd at localhost:4822.

So I dug into the code that checks that and saw that the environment has a 
default setting of localhost for the guacd_hostname... and since my environment 
variable was set that seemed odd.  So then I see it's reading 
/root/.guacamole/guacamole.properties and THAT file is being concatenated to MY 
guacamole.properties file that does not have a trailing newline.  When I added 
a line break to my guacamole.properties file it fixed it and loaded up.

So having gone through this, I have a few questions as to how this was supposed 
to work ** this may only apply to a docker installation **

  1.  I created the properties file originally because it seemed like an easy 
way to set the config instead of on the docker run line. The documentation says 
"The guacamole.properties file is optional and is used to configure Guacamole 
in situations where the defaults are insufficient, or to provide additional 
configuration information for extensions."  What actually is happening is the 
startup script is taking environment vars and creating the properties file (I 
think).  So the properties file is necessary, but me creating my own isn't, 
since tomcat is actually reading it. Right?  And creating one can cause 
problems, even if it's correct see #2...
  2.  The properties file in /root/.guacamole (that is created by the startup 
script) is concatenated to a guacamole.properties file located in my local 
volume. The local one is in a docker volume that I also set to $guacamole_home. 
 When the properties file is concatenated, if the one I created in my local 
volume doesn't have a trailing newline, it puts 2 keys on one line-the script 
just starts writing to it, even though it exists already. In my case, that 
happened to be the guacd_hostname that got hosed. I did verify this happens in 
windows and ubuntu.  So if you create a properties file, it has to have a 
trailing newline. I worry about properties files that are concatenated like 
this because the property file could be invalid due to duplicate keys (or the 
newline issue).  The newline issue could be avoided by writing a newline to the 
properties file first in the script though.
  3.  There may be an issue when trying to create a properties file 
programmatically when one already exists in the user defined guacamole_home.  
Maybe this is a scenario that didn't exist before deploying via docker.
  4.  Tomcat seems to only care about /root/.guacamole as the guacamole_home 
which is a bit confusing since it's not using $guacamole_home.  This was 
actually the source of my issues. I didn't realize that the environment 
variables were just used to create a properties file for tomcat. I saw my 
environment variables, they were correct, and yet tomcat had incorrect 
information due to the issues above.

I may have misinterpreted some of this -- sorry if that's the case.  I'd be 
happy to help get to a resolution on these if it's agreed my scenario wasn't 
unique to me and reflects some degree of misinformation in the documentation 
and/or approach to the properties file overall.

Thanks for the replies even though it seemed like I was churning =)
-Ryan


From: Ryan Underwood [mailto:r...@greymarketlabs.com]
Sent: Friday, October 13, 2017 4:20 PM
To: user@guacamole.incubator.apache.org
Subject: RE: Deploying locally built WAR

I can telnet from guacamole to guacd and guacd gives me a protocol error when I 
do. I literally copied the scripts a buddy is using on Windows and his works 
fine.
I added logging to the classes throwing the error to provide more details on 
what was requested.

Sent from my Android phone using TouchDown 
(www.symantec.com<http://www.symantec.com>)

-----Original Message-----
From: Mike Jumper [mike.jum...@guac-dev.org]
Received: Friday, 13 Oct 2017, 4:07PM
To: 
user@guacamole.incubator.apache.org<mailto:user@guacamole.incubator.apache.org> 
[user@guacamole.incubator.apache.org]
Subject: Re: Deploying locally built WAR
On Fri, Oct 13, 2017 at 1:00 PM, Ryan Underwood 
<r...@greymarketlabs.com<mailto:r...@greymarketlabs.com>> wrote:
Thanks Nick - not sure how I missed it in the root.
Now I have the image built from my local repo clone. I've modified some of the 
source to add logging because I still can't connect to an RDP instance and the 
only error I get is:
9:50:16.382 [http-nio-8080-exec-9] ERROR o.a.g.s.GuacamoleHTTPTunnelServlet - 
HTTP tunnel request failed: java.net.ConnectException: Connection refused
19:50:16.384 [http-nio-8080-exec-9] DEBUG o.a.g.s.GuacamoleHTTPTunnelServlet - 
Internal error in HTTP tunnel.
org.apache.guacamole.GuacamoleServerException: java.net.ConnectException: 
Connection refused


This looks like guacd is unreachable. Is your Guacamole image configured to 
connect to a running copy of guacd (in another Docker container or otherwise)?

This is the same error I get with the docker hub image too.  However, after 
adding some logging in the java classes and updating the logback.xml to go to 
trace, none of my messages show up anywhere.  Any thoughts?

What logging did you add?

- Mike

Reply via email to