import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties;
import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
import net.sourceforge.guacamole.properties.GuacamoleProperties;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
public class BasicFileAuthenticationProvider implements AuthenticationProvider {
+ private Logger logger = LoggerFactory.getLogger(BasicFileAuthenticationProvider.class);
+
private long mappingTime;
private Map<String, AuthInfo> mapping;
if (mapFile == null)
throw new GuacamoleException("Missing \"basic-user-mapping\" parameter required for basic login.");
+ logger.info("Reading user mapping file: {}", mapFile);
+
// Parse document
try {
// If modified recently, gain exclusive access and recheck
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
+ }
}
}
authProvider = GuacamoleProperties.getProperty(BasicGuacamoleProperties.AUTH_PROVIDER);
}
catch (GuacamoleException e) {
+ logger.error("Error getting authentication provider from properties.", e);
throw new ServletException(e);
}
String password = request.getParameter("password");
// 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) {
logger.warn("Failed login from {} for user \"{}\".", request.getRemoteAddr(), username);
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
String hostname = GuacamoleProperties.getProperty(GuacamoleProperties.GUACD_HOSTNAME);