From b2b60fbd5e7ee4a87b21df703572dc0c82b73fc6 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 25 Apr 2017 10:40:17 -0700 Subject: [PATCH] GUACAMOLE-335: Use /etc/guacamole for GUACAMOLE_HOME if not overridden and ~/.guacamole does not exist. --- .../guacamole/environment/LocalEnvironment.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/environment/LocalEnvironment.java b/guacamole-ext/src/main/java/org/apache/guacamole/environment/LocalEnvironment.java index 0b7ffadbf..f45bcaa1a 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/environment/LocalEnvironment.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/environment/LocalEnvironment.java @@ -103,6 +103,7 @@ public class LocalEnvironment implements Environment { // Determine location of GUACAMOLE_HOME guacHome = findGuacamoleHome(); + logger.info("GUACAMOLE_HOME is \"{}\".", guacHome.getAbsolutePath()); // Read properties properties = new Properties(); @@ -146,7 +147,8 @@ public class LocalEnvironment implements Environment { * Locates the Guacamole home directory by checking, in order: * the guacamole.home system property, the GUACAMOLE_HOME environment * variable, and finally the .guacamole directory in the home directory of - * the user running the servlet container. + * the user running the servlet container. If even the .guacamole directory + * doesn't exist, then /etc/guacamole will be used. * * @return The File representing the Guacamole home directory, which may * or may not exist, and may turn out to not be a directory. @@ -166,10 +168,19 @@ public class LocalEnvironment implements Environment { if (desiredDir != null) guacHome = new File(desiredDir); - // If not explicitly specified, use ~/.guacamole - else + // If not explicitly specified, use standard locations + else { + + // Try ~/.guacamole first guacHome = new File(System.getProperty("user.home"), ".guacamole"); + // If that doesn't exist, try /etc/guacamole if the /etc directory + // exists on this system + if (!guacHome.exists() && new File("/etc").exists()) + guacHome = new File("/etc/guacamole"); + + } + // Return discovered directory return guacHome;