From df6426e04ac3eb1b6b03895a3075958802f48118 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Thu, 31 Jan 2013 12:57:06 -0800 Subject: [PATCH] Migrate to generic Directory interface. --- .../basic/BasicGuacamoleTunnelServlet.java | 13 ++++------ .../net/basic/ConfigurationList.java | 24 +++++++------------ .../guacamole/net/basic/PermissionList.java | 6 ++--- .../guacamole/net/basic/UserList.java | 11 +++++---- 4 files changed, 23 insertions(+), 31 deletions(-) diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java index cf38e5598..9f82f57c9 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java @@ -21,7 +21,6 @@ package net.sourceforge.guacamole.net.basic; import java.io.IOException; import java.util.Arrays; import java.util.Collection; -import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -32,7 +31,7 @@ import net.sourceforge.guacamole.net.GuacamoleSocket; import net.sourceforge.guacamole.net.GuacamoleTunnel; import net.sourceforge.guacamole.net.InetGuacamoleSocket; import net.sourceforge.guacamole.net.auth.Credentials; -import net.sourceforge.guacamole.net.auth.GuacamoleConfigurationDirectory; +import net.sourceforge.guacamole.net.auth.Directory; import net.sourceforge.guacamole.net.auth.UserContext; import net.sourceforge.guacamole.net.basic.event.SessionListenerCollection; import net.sourceforge.guacamole.net.event.TunnelCloseEvent; @@ -175,19 +174,15 @@ public class BasicGuacamoleTunnelServlet extends AuthenticatingHttpServlet { UserContext context = getUserContext(httpSession); // Get configuration directory - GuacamoleConfigurationDirectory directory = + Directory directory = context.getGuacamoleConfigurationDirectory(); - // Attempt to get configurations from directory - Map configs = - directory.getConfigurations(); - // If no configs/credentials in session, not authorized - if (credentials == null || configs == null) + if (credentials == null) throw new GuacamoleSecurityException("Cannot connect - user not logged in."); // Get authorized config - GuacamoleConfiguration config = configs.get(id); + GuacamoleConfiguration config = directory.get(id); if (config == null) { logger.warn("Configuration id={} not found.", id); throw new GuacamoleSecurityException("Requested configuration is not authorized."); diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/ConfigurationList.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/ConfigurationList.java index 4e69a00ba..9de1d0965 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/ConfigurationList.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/ConfigurationList.java @@ -19,8 +19,6 @@ package net.sourceforge.guacamole.net.basic; */ import java.io.IOException; -import java.util.Map; -import java.util.Map.Entry; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -29,7 +27,7 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import net.sourceforge.guacamole.GuacamoleException; import net.sourceforge.guacamole.GuacamoleSecurityException; -import net.sourceforge.guacamole.net.auth.GuacamoleConfigurationDirectory; +import net.sourceforge.guacamole.net.auth.Directory; import net.sourceforge.guacamole.net.auth.User; import net.sourceforge.guacamole.net.auth.UserContext; import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationDirectoryPermission; @@ -123,15 +121,11 @@ public class ConfigurationList extends AuthenticatingHttpServlet { response.setHeader("Content-Type", "text/xml"); // Attempt to get configurations - Map configs; + Directory directory; try { // Get configuration directory - GuacamoleConfigurationDirectory directory = - context.getGuacamoleConfigurationDirectory(); - - // Get configurations - configs = directory.getConfigurations(); + directory = context.getGuacamoleConfigurationDirectory(); } catch (GuacamoleException e) { @@ -156,29 +150,29 @@ public class ConfigurationList extends AuthenticatingHttpServlet { xml.writeAttribute("create", "yes"); // For each entry, write corresponding config element - for (Entry entry : configs.entrySet()) { + for (String identifier : directory.getIdentifiers()) { // Get config - GuacamoleConfiguration config = entry.getValue(); + GuacamoleConfiguration config = directory.get(identifier); // Write config xml.writeEmptyElement("config"); - xml.writeAttribute("id", entry.getKey()); + xml.writeAttribute("id", identifier); xml.writeAttribute("protocol", config.getProtocol()); // Save update permission attribute if (hasConfigPermission(self, ObjectPermission.Type.UPDATE, - entry.getKey())) + identifier)) xml.writeAttribute("update", "yes"); // Save admin permission attribute if (hasConfigPermission(self, ObjectPermission.Type.ADMINISTER, - entry.getKey())) + identifier)) xml.writeAttribute("admin", "yes"); // Save delete permission attribute if (hasConfigPermission(self, ObjectPermission.Type.DELETE, - entry.getKey())) + identifier)) xml.writeAttribute("delete", "yes"); } diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/PermissionList.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/PermissionList.java index d44fefcde..044630c3e 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/PermissionList.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/PermissionList.java @@ -27,9 +27,9 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import net.sourceforge.guacamole.GuacamoleException; import net.sourceforge.guacamole.GuacamoleSecurityException; +import net.sourceforge.guacamole.net.auth.Directory; import net.sourceforge.guacamole.net.auth.User; import net.sourceforge.guacamole.net.auth.UserContext; -import net.sourceforge.guacamole.net.auth.UserDirectory; import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationDirectoryPermission; import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationPermission; import net.sourceforge.guacamole.net.auth.permission.ObjectPermission; @@ -109,10 +109,10 @@ public class PermissionList extends AuthenticatingHttpServlet { throw new ServletException("No user specified."); // Get user directory - UserDirectory users = context.getUserDirectory(); + Directory users = context.getUserDirectory(); // Get specific user - User user = users.getUser(username); + User user = users.get(username); if (user == null) throw new GuacamoleSecurityException("No such user."); diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/UserList.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/UserList.java index 72609c4f8..885321aa8 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/UserList.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/UserList.java @@ -28,9 +28,9 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import net.sourceforge.guacamole.GuacamoleException; import net.sourceforge.guacamole.GuacamoleSecurityException; +import net.sourceforge.guacamole.net.auth.Directory; import net.sourceforge.guacamole.net.auth.User; import net.sourceforge.guacamole.net.auth.UserContext; -import net.sourceforge.guacamole.net.auth.UserDirectory; import net.sourceforge.guacamole.net.auth.permission.ObjectPermission; import net.sourceforge.guacamole.net.auth.permission.Permission; import net.sourceforge.guacamole.net.auth.permission.SystemPermission; @@ -119,10 +119,10 @@ public class UserList extends AuthenticatingHttpServlet { try { // Get user directory - UserDirectory directory = context.getUserDirectory(); + Directory directory = context.getUserDirectory(); // Get users - Set users = directory.getUsers(); + Set users = directory.getIdentifiers(); // Get self User self = context.self(); @@ -139,8 +139,11 @@ public class UserList extends AuthenticatingHttpServlet { xml.writeAttribute("create", "yes"); // For each entry, write corresponding user element - for (User user : users) { + for (String username : users) { + // Get user + User user = directory.get(username); + // Write user xml.writeEmptyElement("user"); xml.writeAttribute("name", user.getUsername());