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.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<String, GuacamoleConfiguration> directory =
context.getGuacamoleConfigurationDirectory();
// Attempt to get configurations from directory
Map<String, GuacamoleConfiguration> 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.");

View File

@@ -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<String, GuacamoleConfiguration> configs;
Directory<String, GuacamoleConfiguration> 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<String, GuacamoleConfiguration> 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");
}

View File

@@ -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<String, User> 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.");

View File

@@ -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<String, User> directory = context.getUserDirectory();
// Get users
Set<User> users = directory.getUsers();
Set<String> 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());