From 3f9f71ebd04a0c67ae3fe7306231198a177d2a63 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sat, 9 Feb 2013 13:00:09 -0800 Subject: [PATCH] #268: Implement connection/user deletion. Implement connection update. --- .../net/basic/crud/connections/Delete.java | 20 ++++++- .../net/basic/crud/connections/Update.java | 52 ++++++++++++++++++- .../net/basic/crud/users/Delete.java | 19 ++++++- 3 files changed, 88 insertions(+), 3 deletions(-) diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Delete.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Delete.java index 3f1c14b5b..597e1d858 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Delete.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Delete.java @@ -22,6 +22,9 @@ import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import net.sourceforge.guacamole.GuacamoleException; +import net.sourceforge.guacamole.net.auth.Connection; +import net.sourceforge.guacamole.net.auth.Directory; import net.sourceforge.guacamole.net.auth.UserContext; import net.sourceforge.guacamole.net.basic.AuthenticatingHttpServlet; @@ -38,7 +41,22 @@ public class Delete extends AuthenticatingHttpServlet { HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - /* FIXME: STUB */ + // Get ID + String identifier = request.getParameter("id"); + + try { + + // Attempt to get connection directory + Directory directory = + context.getConnectionDirectory(); + + // Remove connection + directory.remove(identifier); + + } + catch (GuacamoleException e) { + throw new ServletException("Unable to remove connection.", e); + } } diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Update.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Update.java index 67e687abb..cda5e5d75 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Update.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Update.java @@ -19,11 +19,16 @@ package net.sourceforge.guacamole.net.basic.crud.connections; */ import java.io.IOException; +import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import net.sourceforge.guacamole.GuacamoleException; +import net.sourceforge.guacamole.net.auth.Connection; +import net.sourceforge.guacamole.net.auth.Directory; import net.sourceforge.guacamole.net.auth.UserContext; import net.sourceforge.guacamole.net.basic.AuthenticatingHttpServlet; +import net.sourceforge.guacamole.protocol.GuacamoleConfiguration; /** * Simple HttpServlet which handles connection update. @@ -32,13 +37,58 @@ import net.sourceforge.guacamole.net.basic.AuthenticatingHttpServlet; */ public class Update extends AuthenticatingHttpServlet { + /** + * Prefix given to a parameter name when that parameter is a protocol- + * specific parameter meant for the configuration. + */ + public static final String PARAMETER_PREFIX = "_"; + @Override protected void authenticatedService( UserContext context, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - /* FIXME: STUB */ + // Get ID and protocol + String identifier = request.getParameter("id"); + String protocol = request.getParameter("protocol"); + + try { + + // Attempt to get connection directory + Directory directory = + context.getConnectionDirectory(); + + // Create config + GuacamoleConfiguration config = new GuacamoleConfiguration(); + config.setProtocol(protocol); + + // Load parameters into config + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + + // If parameter starts with prefix, load corresponding parameter + // value into config + String param = params.nextElement(); + if (param.startsWith(PARAMETER_PREFIX)) + config.setParameter( + param.substring(PARAMETER_PREFIX.length()), + request.getParameter(param)); + + } + + // Create connection skeleton + Connection connection = new DummyConnection(); + connection.setIdentifier(identifier); + connection.setConfiguration(config); + + // Update connection + directory.update(connection); + + } + catch (GuacamoleException e) { + throw new ServletException("Unable to update connection.", e); + } } diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/users/Delete.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/users/Delete.java index 214ea5ee0..62d3bc332 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/users/Delete.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/users/Delete.java @@ -22,6 +22,9 @@ import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import net.sourceforge.guacamole.GuacamoleException; +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.basic.AuthenticatingHttpServlet; @@ -38,7 +41,21 @@ public class Delete extends AuthenticatingHttpServlet { HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - /* FIXME: STUB */ + // Get username + String username = request.getParameter("name"); + + try { + + // Attempt to get user directory + Directory directory = context.getUserDirectory(); + + // Remove user + directory.remove(username); + + } + catch (GuacamoleException e) { + throw new ServletException("Unable to remove user.", e); + } }