List all protocols defined in classpath, add RDP.

This commit is contained in:
Michael Jumper
2013-03-12 13:12:36 -07:00
parent 6a3bac64f9
commit 479d16b704
3 changed files with 68 additions and 14 deletions

View File

@@ -21,6 +21,8 @@ package net.sourceforge.guacamole.net.basic.crud.protocols;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.stream.XMLOutputFactory;
@@ -48,6 +50,12 @@ import org.xml.sax.helpers.XMLReaderFactory;
*/
public class List extends AuthenticatingHttpServlet {
/**
* Array of all known protocol names.
*/
private static final String[] KNOWN_PROTOCOLS = new String[]{
"vnc", "rdp", "ssh"};
/**
* Parses the given XML file, returning the parsed ProtocolInfo.
*
@@ -180,9 +188,33 @@ public class List extends AuthenticatingHttpServlet {
// Do not cache
response.setHeader("Cache-Control", "no-cache");
// Map of all available protocols
Map<String, ProtocolInfo> protocols = new HashMap<String, ProtocolInfo>();
// Read protocols
/* STUB */
// If known protocols are not already defined, read from classpath
for (String protocol : KNOWN_PROTOCOLS) {
// If protocol not defined yet, attempt to load from classpath
if (!protocols.containsKey(protocol)) {
InputStream stream = List.class.getResourceAsStream(
"/net/sourceforge/guacamole/net/protocols/"
+ protocol + ".xml");
// Parse XML if available
if (stream != null)
protocols.put(protocol, getProtocol(stream));
}
}
// Write actual XML
try {
// Write XML content type
response.setHeader("Content-Type", "text/xml");
@@ -193,15 +225,9 @@ public class List extends AuthenticatingHttpServlet {
xml.writeStartDocument();
xml.writeStartElement("protocols");
// Read from classpath
InputStream stream = List.class.getResourceAsStream(
"/net/sourceforge/guacamole/net/protocols/vnc.xml");
if (stream == null)
throw new IOException("Could not read VNC XML.");
// Parse and write protocol
ProtocolInfo protocol = getProtocol(stream);
writeProtocol(xml, protocol);
// Write all protocols
for (ProtocolInfo protocol : protocols.values())
writeProtocol(xml, protocol);
// End document
xml.writeEndElement();

View File

@@ -0,0 +1,24 @@
<protocol name="rdp" title="RDP">
<param name="hostname" type="text" title="Hostname"/>
<param name="port" type="numeric" title="Port"/>
<param name="username" type="text" title="Username"/>
<param name="password" type="password" title="Password"/>
<param name="domain" type="text" title="Domain"/>
<param name="initial-program" type="text" title="Initial program"/>
<param name="width" type="numeric" title="Display width"/>
<param name="height" type="numeric" title="Display height"/>
<param name="color-depth" type="text" title="Color depth">
<option value="8">256 color</option>
<option value="16">Low color (16-bit)</option>
<option value="24">True color (24-bit)</option>
<option value="32">True color (32-bit)</option>
</param>
<param name="console" type="boolean" title="Administrator console"/>
<param name="console-audio" type="boolean" title="Support audio in console"/>
<param name="disable-audio" type="boolean" title="Disable audio"/>
</protocol>

View File

@@ -1,9 +1,13 @@
<protocol name="vnc" title="VNC">
<param name="hostname" type="text" title="Hostname"/>
<param name="port" type="numeric" title="Port"/>
<param name="read-only" type="boolean" title="Read-only"/>
<param name="color-depth" type="text" title="Color depth">
<param name="hostname" type="text" title="Hostname"/>
<param name="port" type="numeric" title="Port"/>
<param name="password" type="password" title="Password"/>
<param name="read-only" type="boolean" title="Read-only"/>
<param name="swap-red-blue" type="boolean" title="Swap red/blue components"/>
<param name="color-depth" type="text" title="Color depth">
<option value="8">256 color</option>
<option value="16">Low color (16-bit)</option>
<option value="24">True color (24-bit)</option>