From de219b6773a0c29345634f730373df99d1780378 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Fri, 26 Nov 2010 16:55:58 -0800 Subject: [PATCH] Renamed InstructionStream -> Outbound, using single unified tunnel package, removed XMLGuacamoleServlet --- .../guacamole/net/XMLGuacamoleServlet.java | 132 ------------------ .../net/{input => tunnel}/Inbound.java | 12 +- .../Outbound.java} | 4 +- guacamole/web-client/web/META-INF/context.xml | 2 + guacamole/web-client/web/WEB-INF/web.xml | 39 ++---- .../web-client/web/javascript/guacamole.js | 2 +- 6 files changed, 24 insertions(+), 167 deletions(-) delete mode 100644 guacamole/web-client/src/net/sourceforge/guacamole/net/XMLGuacamoleServlet.java rename guacamole/web-client/src/net/sourceforge/guacamole/net/{input => tunnel}/Inbound.java (81%) rename guacamole/web-client/src/net/sourceforge/guacamole/net/{output/InstructionStream.java => tunnel/Outbound.java} (96%) create mode 100644 guacamole/web-client/web/META-INF/context.xml diff --git a/guacamole/web-client/src/net/sourceforge/guacamole/net/XMLGuacamoleServlet.java b/guacamole/web-client/src/net/sourceforge/guacamole/net/XMLGuacamoleServlet.java deleted file mode 100644 index 2fef0c647..000000000 --- a/guacamole/web-client/src/net/sourceforge/guacamole/net/XMLGuacamoleServlet.java +++ /dev/null @@ -1,132 +0,0 @@ - -package net.sourceforge.guacamole.net; - -/* - * Guacamole - Clientless Remote Desktop - * Copyright (C) 2010 Michael Jumper - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import javax.servlet.ServletRequest; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import net.sourceforge.guacamole.Client; -import net.sourceforge.guacamole.GuacamoleException; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public abstract class XMLGuacamoleServlet extends GuacamoleServlet { - - @Override - protected final void handleRequest(GuacamoleSession session, HttpServletRequest request, HttpServletResponse response) throws GuacamoleException { - - response.setContentType("text/xml"); - response.setHeader("Cache-Control", "no-store"); - response.setHeader("Pragma", "no-cache"); - response.setDateHeader("Expires", 0); - - try { - - // Create document - DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); - Document document = documentBuilder.newDocument(); - - // Root element - Element root = document.createElement("guacamole"); - document.appendChild(root); - - try { - handleRequest(session, request, root); - } - catch (Throwable t) { - addFatalError(root, t.getMessage()); - - // FATAL error ... try to disconnect - if (session != null) { - Client client = session.getClient(); - try { - if (client != null) - client.disconnect(); - } - catch (GuacamoleException e) { - addFatalError(root, e.getMessage()); - } - } - } - - // Set up transformer - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - //transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); - - // Write XML using transformer - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - StreamResult result = new StreamResult(bos); - DOMSource source = new DOMSource(document); - transformer.transform(source, result); - - - bos.flush(); - - byte[] xmlData = bos.toByteArray(); - response.setContentLength(xmlData.length); - OutputStream outputStream = response.getOutputStream(); - outputStream.write(xmlData); - - // Close stream - outputStream.close(); - } - catch (ParserConfigurationException e) { - throw new GuacamoleException(e); - } - catch (TransformerConfigurationException e) { - throw new GuacamoleException(e); - } - catch (TransformerException e) { - throw new GuacamoleException(e); - } - catch (IOException e) { - throw new GuacamoleException(e); - } - - - } - - private void addFatalError(Element root, String message) { - Element error = root.getOwnerDocument().createElement("error"); - error.setAttribute("type", "fatal"); - error.setTextContent(message); - root.appendChild(error); - } - - protected abstract void handleRequest(GuacamoleSession session, ServletRequest request, Element root) throws GuacamoleException; - -} diff --git a/guacamole/web-client/src/net/sourceforge/guacamole/net/input/Inbound.java b/guacamole/web-client/src/net/sourceforge/guacamole/net/tunnel/Inbound.java similarity index 81% rename from guacamole/web-client/src/net/sourceforge/guacamole/net/input/Inbound.java rename to guacamole/web-client/src/net/sourceforge/guacamole/net/tunnel/Inbound.java index 7be7bc6cb..7fdca3001 100644 --- a/guacamole/web-client/src/net/sourceforge/guacamole/net/input/Inbound.java +++ b/guacamole/web-client/src/net/sourceforge/guacamole/net/tunnel/Inbound.java @@ -1,4 +1,4 @@ -package net.sourceforge.guacamole.net.input; +package net.sourceforge.guacamole.net.tunnel; /* * Guacamole - Clientless Remote Desktop @@ -18,24 +18,24 @@ package net.sourceforge.guacamole.net.input; * along with this program. If not, see . */ -import javax.servlet.ServletRequest; import net.sourceforge.guacamole.GuacamoleException; -import org.w3c.dom.Element; import java.io.Reader; import java.io.IOException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import net.sourceforge.guacamole.net.GuacamoleServlet; import net.sourceforge.guacamole.net.GuacamoleSession; -import net.sourceforge.guacamole.net.XMLGuacamoleServlet; -public class Inbound extends XMLGuacamoleServlet { +public class Inbound extends GuacamoleServlet { protected boolean shouldCreateSession() { return true; } @Override - protected void handleRequest(GuacamoleSession session, ServletRequest request, Element root) throws GuacamoleException { + protected void handleRequest(GuacamoleSession session, HttpServletRequest request, HttpServletResponse response) throws GuacamoleException { if (!session.isConnected()) session.connect(); diff --git a/guacamole/web-client/src/net/sourceforge/guacamole/net/output/InstructionStream.java b/guacamole/web-client/src/net/sourceforge/guacamole/net/tunnel/Outbound.java similarity index 96% rename from guacamole/web-client/src/net/sourceforge/guacamole/net/output/InstructionStream.java rename to guacamole/web-client/src/net/sourceforge/guacamole/net/tunnel/Outbound.java index 27e5e65de..942a2d72d 100644 --- a/guacamole/web-client/src/net/sourceforge/guacamole/net/output/InstructionStream.java +++ b/guacamole/web-client/src/net/sourceforge/guacamole/net/tunnel/Outbound.java @@ -1,4 +1,4 @@ -package net.sourceforge.guacamole.net.output; +package net.sourceforge.guacamole.net.tunnel; /* * Guacamole - Clientless Remote Desktop @@ -30,7 +30,7 @@ import net.sourceforge.guacamole.GuacamoleException; import net.sourceforge.guacamole.net.GuacamoleSession; -public class InstructionStream extends GuacamoleServlet { +public class Outbound extends GuacamoleServlet { @Override protected void handleRequest(GuacamoleSession session, HttpServletRequest request, HttpServletResponse response) throws GuacamoleException { diff --git a/guacamole/web-client/web/META-INF/context.xml b/guacamole/web-client/web/META-INF/context.xml new file mode 100644 index 000000000..5bee3dc30 --- /dev/null +++ b/guacamole/web-client/web/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/guacamole/web-client/web/WEB-INF/web.xml b/guacamole/web-client/web/WEB-INF/web.xml index 147eb1462..e26ab78b9 100644 --- a/guacamole/web-client/web/WEB-INF/web.xml +++ b/guacamole/web-client/web/WEB-INF/web.xml @@ -17,52 +17,39 @@ along with this program. If not, see . --> + + index.html + 30 + + - Instruction stream servlet. - InstructionStream - net.sourceforge.guacamole.net.output.InstructionStream + Outbound servlet. + Outbound + net.sourceforge.guacamole.net.tunnel.Outbound - InstructionStream - /instructions + Outbound + /outbound + Input servlet. Inbound - net.sourceforge.guacamole.net.input.Inbound + net.sourceforge.guacamole.net.tunnel.Inbound Inbound /inbound - - Guacamole Access Restrictions - - Guacamole - All servlets/pages within Guacamole. - /* - - - Only allow Guacamole users access. - guacamole - - - - BASIC - Guacamole - - - Guacamole - guacamole - + diff --git a/guacamole/web-client/web/javascript/guacamole.js b/guacamole/web-client/web/javascript/guacamole.js index 58800dc7c..c7b77d858 100644 --- a/guacamole/web-client/web/javascript/guacamole.js +++ b/guacamole/web-client/web/javascript/guacamole.js @@ -380,7 +380,7 @@ function GuacamoleClient(display) { // Download self var xmlhttprequest = new XMLHttpRequest(); - xmlhttprequest.open("POST", "instructions"); + xmlhttprequest.open("POST", "outbound"); xmlhttprequest.send(null); return xmlhttprequest;