mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
Renamed InstructionStream -> Outbound, using single unified tunnel package, removed XMLGuacamoleServlet
This commit is contained in:
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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;
|
||||
|
||||
}
|
@@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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();
|
@@ -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 {
|
2
guacamole/web-client/web/META-INF/context.xml
Normal file
2
guacamole/web-client/web/META-INF/context.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Context antiJARLocking="true" path=""/>
|
@@ -17,52 +17,39 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
|
||||
|
||||
<!-- Basic config -->
|
||||
|
||||
<welcome-file-list>
|
||||
<welcome-file>index.html</welcome-file>
|
||||
</welcome-file-list>
|
||||
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
|
||||
<!-- Servlets -->
|
||||
|
||||
<servlet>
|
||||
<description>Instruction stream servlet.</description>
|
||||
<servlet-name>InstructionStream</servlet-name>
|
||||
<servlet-class>net.sourceforge.guacamole.net.output.InstructionStream</servlet-class>
|
||||
<description>Outbound servlet.</description>
|
||||
<servlet-name>Outbound</servlet-name>
|
||||
<servlet-class>net.sourceforge.guacamole.net.tunnel.Outbound</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>InstructionStream</servlet-name>
|
||||
<url-pattern>/instructions</url-pattern>
|
||||
<servlet-name>Outbound</servlet-name>
|
||||
<url-pattern>/outbound</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<description>Input servlet.</description>
|
||||
<servlet-name>Inbound</servlet-name>
|
||||
<servlet-class>net.sourceforge.guacamole.net.input.Inbound</servlet-class>
|
||||
<servlet-class>net.sourceforge.guacamole.net.tunnel.Inbound</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>Inbound</servlet-name>
|
||||
<url-pattern>/inbound</url-pattern>
|
||||
</servlet-mapping>
|
||||
<security-constraint>
|
||||
<display-name>Guacamole Access Restrictions</display-name>
|
||||
<web-resource-collection>
|
||||
<web-resource-name>Guacamole</web-resource-name>
|
||||
<description>All servlets/pages within Guacamole.</description>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</web-resource-collection>
|
||||
<auth-constraint>
|
||||
<description>Only allow Guacamole users access.</description>
|
||||
<role-name>guacamole</role-name>
|
||||
</auth-constraint>
|
||||
</security-constraint>
|
||||
<login-config>
|
||||
<auth-method>BASIC</auth-method>
|
||||
<realm-name>Guacamole</realm-name>
|
||||
</login-config>
|
||||
<security-role>
|
||||
<description>Guacamole</description>
|
||||
<role-name>guacamole</role-name>
|
||||
</security-role>
|
||||
|
||||
</web-app>
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user