From e66da0b5e23e5d18bb82f04ec5017f97c7d72388 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sat, 9 Feb 2013 12:49:56 -0800 Subject: [PATCH] #268: Implement connection creation. --- .../net/basic/crud/connections/Create.java | 52 ++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Create.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Create.java index 372d2486b..1fb1b4892 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Create.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/crud/connections/Create.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 creation. @@ -32,13 +37,58 @@ import net.sourceforge.guacamole.net.basic.AuthenticatingHttpServlet; */ public class Create 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); + + // Add connection + directory.add(connection); + + } + catch (GuacamoleException e) { + throw new ServletException("Unable to create connection.", e); + } }