Improved logging for user-mapping and login.

This commit is contained in:
Michael Jumper
2011-07-15 00:14:47 -07:00
parent 1240b10474
commit 493b43fe27
2 changed files with 20 additions and 3 deletions

View File

@@ -30,6 +30,8 @@ import net.sourceforge.guacamole.GuacamoleException;
import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties; import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties;
import net.sourceforge.guacamole.protocol.GuacamoleConfiguration; import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
import net.sourceforge.guacamole.properties.GuacamoleProperties; import net.sourceforge.guacamole.properties.GuacamoleProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.Attributes; import org.xml.sax.Attributes;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import org.xml.sax.XMLReader; import org.xml.sax.XMLReader;
@@ -38,6 +40,8 @@ import org.xml.sax.helpers.XMLReaderFactory;
public class BasicFileAuthenticationProvider implements AuthenticationProvider { public class BasicFileAuthenticationProvider implements AuthenticationProvider {
private Logger logger = LoggerFactory.getLogger(BasicFileAuthenticationProvider.class);
private long mappingTime; private long mappingTime;
private Map<String, AuthInfo> mapping; private Map<String, AuthInfo> mapping;
@@ -55,6 +59,8 @@ public class BasicFileAuthenticationProvider implements AuthenticationProvider {
if (mapFile == null) if (mapFile == null)
throw new GuacamoleException("Missing \"basic-user-mapping\" parameter required for basic login."); throw new GuacamoleException("Missing \"basic-user-mapping\" parameter required for basic login.");
logger.info("Reading user mapping file: {}", mapFile);
// Parse document // Parse document
try { try {
@@ -86,8 +92,10 @@ public class BasicFileAuthenticationProvider implements AuthenticationProvider {
// If modified recently, gain exclusive access and recheck // If modified recently, gain exclusive access and recheck
synchronized (this) { synchronized (this) {
if (userMappingFile.exists() && mappingTime < userMappingFile.lastModified()) if (userMappingFile.exists() && mappingTime < userMappingFile.lastModified()) {
logger.info("User mapping file {} has been modified.", userMappingFile);
init(); // If still not up to date, re-init init(); // If still not up to date, re-init
}
} }
} }

View File

@@ -48,6 +48,7 @@ public class BasicGuacamoleTunnelServlet extends GuacamoleTunnelServlet {
authProvider = GuacamoleProperties.getProperty(BasicGuacamoleProperties.AUTH_PROVIDER); authProvider = GuacamoleProperties.getProperty(BasicGuacamoleProperties.AUTH_PROVIDER);
} }
catch (GuacamoleException e) { catch (GuacamoleException e) {
logger.error("Error getting authentication provider from properties.", e);
throw new ServletException(e); throw new ServletException(e);
} }
@@ -63,13 +64,21 @@ public class BasicGuacamoleTunnelServlet extends GuacamoleTunnelServlet {
String password = request.getParameter("password"); String password = request.getParameter("password");
// Get authorized config // Get authorized config
GuacamoleConfiguration config = authProvider.getAuthorizedConfiguration(username, password); GuacamoleConfiguration config;
try {
config = authProvider.getAuthorizedConfiguration(username, password);
}
catch (GuacamoleException e) {
logger.error("Error retrieving authorized configuration for user {}.", username);
throw e;
}
if (config == null) { if (config == null) {
logger.warn("Failed login from {} for user \"{}\".", request.getRemoteAddr(), username); logger.warn("Failed login from {} for user \"{}\".", request.getRemoteAddr(), username);
throw new GuacamoleException("Invalid login"); throw new GuacamoleException("Invalid login");
} }
logger.debug("Successful login from {} for user \"{}\".", request.getRemoteAddr(), username); logger.info("Successful login from {} for user \"{}\".", request.getRemoteAddr(), username);
// Configure and connect socket // Configure and connect socket
String hostname = GuacamoleProperties.getProperty(GuacamoleProperties.GUACD_HOSTNAME); String hostname = GuacamoleProperties.getProperty(GuacamoleProperties.GUACD_HOSTNAME);