Migrate to generic Directory interface.

This commit is contained in:
Michael Jumper
2013-01-31 12:57:06 -08:00
parent bff58e38a3
commit df6426e04a
4 changed files with 23 additions and 31 deletions

View File

@@ -21,7 +21,6 @@ package net.sourceforge.guacamole.net.basic;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Map;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; 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.GuacamoleTunnel;
import net.sourceforge.guacamole.net.InetGuacamoleSocket; import net.sourceforge.guacamole.net.InetGuacamoleSocket;
import net.sourceforge.guacamole.net.auth.Credentials; 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.auth.UserContext;
import net.sourceforge.guacamole.net.basic.event.SessionListenerCollection; import net.sourceforge.guacamole.net.basic.event.SessionListenerCollection;
import net.sourceforge.guacamole.net.event.TunnelCloseEvent; import net.sourceforge.guacamole.net.event.TunnelCloseEvent;
@@ -175,19 +174,15 @@ public class BasicGuacamoleTunnelServlet extends AuthenticatingHttpServlet {
UserContext context = getUserContext(httpSession); UserContext context = getUserContext(httpSession);
// Get configuration directory // Get configuration directory
GuacamoleConfigurationDirectory directory = Directory<String, GuacamoleConfiguration> directory =
context.getGuacamoleConfigurationDirectory(); context.getGuacamoleConfigurationDirectory();
// Attempt to get configurations from directory
Map<String, GuacamoleConfiguration> configs =
directory.getConfigurations();
// If no configs/credentials in session, not authorized // 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."); throw new GuacamoleSecurityException("Cannot connect - user not logged in.");
// Get authorized config // Get authorized config
GuacamoleConfiguration config = configs.get(id); GuacamoleConfiguration config = directory.get(id);
if (config == null) { if (config == null) {
logger.warn("Configuration id={} not found.", id); logger.warn("Configuration id={} not found.", id);
throw new GuacamoleSecurityException("Requested configuration is not authorized."); throw new GuacamoleSecurityException("Requested configuration is not authorized.");

View File

@@ -19,8 +19,6 @@ package net.sourceforge.guacamole.net.basic;
*/ */
import java.io.IOException; import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -29,7 +27,7 @@ import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter; import javax.xml.stream.XMLStreamWriter;
import net.sourceforge.guacamole.GuacamoleException; import net.sourceforge.guacamole.GuacamoleException;
import net.sourceforge.guacamole.GuacamoleSecurityException; 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.User;
import net.sourceforge.guacamole.net.auth.UserContext; import net.sourceforge.guacamole.net.auth.UserContext;
import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationDirectoryPermission; import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationDirectoryPermission;
@@ -123,15 +121,11 @@ public class ConfigurationList extends AuthenticatingHttpServlet {
response.setHeader("Content-Type", "text/xml"); response.setHeader("Content-Type", "text/xml");
// Attempt to get configurations // Attempt to get configurations
Map<String, GuacamoleConfiguration> configs; Directory<String, GuacamoleConfiguration> directory;
try { try {
// Get configuration directory // Get configuration directory
GuacamoleConfigurationDirectory directory = directory = context.getGuacamoleConfigurationDirectory();
context.getGuacamoleConfigurationDirectory();
// Get configurations
configs = directory.getConfigurations();
} }
catch (GuacamoleException e) { catch (GuacamoleException e) {
@@ -156,29 +150,29 @@ public class ConfigurationList extends AuthenticatingHttpServlet {
xml.writeAttribute("create", "yes"); xml.writeAttribute("create", "yes");
// For each entry, write corresponding config element // For each entry, write corresponding config element
for (Entry<String, GuacamoleConfiguration> entry : configs.entrySet()) { for (String identifier : directory.getIdentifiers()) {
// Get config // Get config
GuacamoleConfiguration config = entry.getValue(); GuacamoleConfiguration config = directory.get(identifier);
// Write config // Write config
xml.writeEmptyElement("config"); xml.writeEmptyElement("config");
xml.writeAttribute("id", entry.getKey()); xml.writeAttribute("id", identifier);
xml.writeAttribute("protocol", config.getProtocol()); xml.writeAttribute("protocol", config.getProtocol());
// Save update permission attribute // Save update permission attribute
if (hasConfigPermission(self, ObjectPermission.Type.UPDATE, if (hasConfigPermission(self, ObjectPermission.Type.UPDATE,
entry.getKey())) identifier))
xml.writeAttribute("update", "yes"); xml.writeAttribute("update", "yes");
// Save admin permission attribute // Save admin permission attribute
if (hasConfigPermission(self, ObjectPermission.Type.ADMINISTER, if (hasConfigPermission(self, ObjectPermission.Type.ADMINISTER,
entry.getKey())) identifier))
xml.writeAttribute("admin", "yes"); xml.writeAttribute("admin", "yes");
// Save delete permission attribute // Save delete permission attribute
if (hasConfigPermission(self, ObjectPermission.Type.DELETE, if (hasConfigPermission(self, ObjectPermission.Type.DELETE,
entry.getKey())) identifier))
xml.writeAttribute("delete", "yes"); xml.writeAttribute("delete", "yes");
} }

View File

@@ -27,9 +27,9 @@ import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter; import javax.xml.stream.XMLStreamWriter;
import net.sourceforge.guacamole.GuacamoleException; import net.sourceforge.guacamole.GuacamoleException;
import net.sourceforge.guacamole.GuacamoleSecurityException; 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.User;
import net.sourceforge.guacamole.net.auth.UserContext; 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.GuacamoleConfigurationDirectoryPermission;
import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationPermission; import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationPermission;
import net.sourceforge.guacamole.net.auth.permission.ObjectPermission; import net.sourceforge.guacamole.net.auth.permission.ObjectPermission;
@@ -109,10 +109,10 @@ public class PermissionList extends AuthenticatingHttpServlet {
throw new ServletException("No user specified."); throw new ServletException("No user specified.");
// Get user directory // Get user directory
UserDirectory users = context.getUserDirectory(); Directory<String, User> users = context.getUserDirectory();
// Get specific user // Get specific user
User user = users.getUser(username); User user = users.get(username);
if (user == null) if (user == null)
throw new GuacamoleSecurityException("No such user."); throw new GuacamoleSecurityException("No such user.");

View File

@@ -28,9 +28,9 @@ import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter; import javax.xml.stream.XMLStreamWriter;
import net.sourceforge.guacamole.GuacamoleException; import net.sourceforge.guacamole.GuacamoleException;
import net.sourceforge.guacamole.GuacamoleSecurityException; 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.User;
import net.sourceforge.guacamole.net.auth.UserContext; 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.ObjectPermission;
import net.sourceforge.guacamole.net.auth.permission.Permission; import net.sourceforge.guacamole.net.auth.permission.Permission;
import net.sourceforge.guacamole.net.auth.permission.SystemPermission; import net.sourceforge.guacamole.net.auth.permission.SystemPermission;
@@ -119,10 +119,10 @@ public class UserList extends AuthenticatingHttpServlet {
try { try {
// Get user directory // Get user directory
UserDirectory directory = context.getUserDirectory(); Directory<String, User> directory = context.getUserDirectory();
// Get users // Get users
Set<User> users = directory.getUsers(); Set<String> users = directory.getIdentifiers();
// Get self // Get self
User self = context.self(); User self = context.self();
@@ -139,7 +139,10 @@ public class UserList extends AuthenticatingHttpServlet {
xml.writeAttribute("create", "yes"); xml.writeAttribute("create", "yes");
// For each entry, write corresponding user element // For each entry, write corresponding user element
for (User user : users) { for (String username : users) {
// Get user
User user = directory.get(username);
// Write user // Write user
xml.writeEmptyElement("user"); xml.writeEmptyElement("user");