<?xml version="1.0" encoding="UTF-8"?>

<chapter xml:id="configuring-guacamole"
    xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en"
    xmlns:xi="http://www.w3.org/2001/XInclude">

    <title>Configuring Guacamole</title>
    <para>After installing Guacamole, you need to configure users and connections before Guacamole
        will work. This chapter covers general configuration of Guacamole and the use of its default
        authentication method.</para>
    <para>Guacamole's default authentication method reads all users and connections from a single
        file called <filename>user-mapping.xml</filename>. This authentication method is intended to
        be:</para>
    <orderedlist>
        <listitem>
            <para>Sufficient for small deployments of Guacamole.</para>
        </listitem>
        <listitem>
            <para>A relatively-easy means of verifying that Guacamole has been properly set
                up.</para>
        </listitem>
    </orderedlist>
    <para>Other, more complex authentication methods which use backend databases, LDAP, etc. are
        discussed in a separate, dedicated chapters.</para>
    <para>Regardless of the authentication method you use, Guacamole's configuration always consists
        of two main pieces: a directory referred to as <varname>GUACAMOLE_HOME</varname>, which is
        the primary search location for configuration files, and
            <filename>guacamole.properties</filename>, the main configuration file used by Guacamole
        and its extensions.</para>
    <section xml:id="guacamole-home">
        <title><varname>GUACAMOLE_HOME</varname> (<filename>/etc/guacamole</filename>)</title>
        <indexterm xmlns:xl="http://www.w3.org/1999/xlink">
            <primary><varname>GUACAMOLE_HOME</varname></primary>
        </indexterm>
        <para><varname>GUACAMOLE_HOME</varname> is the name given to Guacamole's configuration
            directory, which is located at <filename>/etc/guacamole</filename> by default. All
            configuration files, extensions, etc. reside within this directory. The structure of
                <varname>GUACAMOLE_HOME</varname> is rigorously defined, and consists of the
            following optional files:</para>
        <variablelist>
            <varlistentry>
                <term><filename>guacamole.properties</filename></term>
                <listitem>
                    <para>The main Guacamole configuration file. Properties within this file dictate
                        how Guacamole will connect to <package>guacd</package>, and may configure
                        the behavior of installed authentication extensions.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><filename>logback.xml</filename></term>
                <listitem>
                    <para>Guacamole uses a logging system called Logback for all messages. By
                        default, Guacamole will log to the console only, but you can change this by
                        providing your own Logback configuration file.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><filename>extensions/</filename></term>
                <listitem>
                    <para>The install location for all Guacamole extensions. Guacamole will
                        automatically load all <filename>.jar</filename> files within this directory
                        on startup.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><filename>lib/</filename></term>
                <listitem>
                    <para>The search directory for libraries required by any Guacamole extensions.
                        Guacamole will make the <filename>.jar</filename> files within this
                        directory available to all extensions. If your extensions require additional
                        libraries, such as database drivers, this is the proper place to put
                        them.</para>
                </listitem>
            </varlistentry>
        </variablelist>
        <section xml:id="overriding-guacamole-home">
            <title>Overriding <varname>GUACAMOLE_HOME</varname></title>
            <para>If you cannot or do not wish to use <filename>/etc/guacamole</filename> for
                    <varname>GUACAMOLE_HOME</varname>, the location can be overridden through any of
                the following methods:</para>
            <orderedlist>
                <listitem>
                    <para>Creating a directory named <filename>.guacamole</filename>, within the
                        home directory of <emphasis>the user running the servlet
                            container</emphasis>. This directory will automatically be used for
                            <varname>GUACAMOLE_HOME</varname> if it exists.</para>
                </listitem>
                <listitem>
                    <para>Specifying the full path to an alternative directory with the environment
                        variable <varname>GUACAMOLE_HOME</varname>. <emphasis>Be sure to consult the
                            documentation for your servlet container to determine how to properly
                            set environment variables.</emphasis></para>
                </listitem>
                <listitem>
                    <para>Specifying the full path to an alternative directory with the system
                        property <property>guacamole.home</property>.</para>
                </listitem>
            </orderedlist>
        </section>
    </section>

    <section xml:id="initial-setup">
        <title><filename>guacamole.properties</filename></title>
        <indexterm xmlns:xl="http://www.w3.org/1999/xlink">
            <primary><filename>guacamole.properties</filename></primary>
        </indexterm>
        <indexterm xmlns:xl="http://www.w3.org/1999/xlink">
            <primary>configuration</primary>
        </indexterm>
        <para>The Guacamole web application uses one main configuration file called
                <filename>guacamole.properties</filename>. This file is the common location for all
            configuration properties read by Guacamole or any extension of Guacamole, including
            authentication providers.</para>
        <para>In previous releases, this file had to be in the classpath of your servlet container.
            Now, the location of <filename>guacamole.properties</filename> can be explicitly defined
            with environment variables or system properties, and the classpath is only used as a
            last resort. When searching for <filename>guacamole.properties</filename>, Guacamole
            will check, in order:</para>
        <orderedlist>
            <listitem>
                <para>Within <varname>GUACAMOLE_HOME</varname>, as defined above.</para>
            </listitem>
            <listitem>
                <para>The classpath of the servlet container.</para>
            </listitem>
        </orderedlist>
        <para>The <filename>guacamole.properties</filename> file is optional and is used to
            configure Guacamole in situations where the defaults are insufficient, or to provide
            additional configuration information for extensions. There are several standard
            properties that are always available for use:</para>
        <variablelist>
            <varlistentry>
                <term><indexterm xmlns:xl="http://www.w3.org/1999/xlink">
                        <primary>api-session-timeout</primary>
                    </indexterm><parameter>api-session-timeout</parameter></term>
                <listitem>
                    <para>The amount of time, in minutes, to allow Guacamole sessions
                        (authentication tokens) to remain valid despite inactivity. If omitted,
                        Guacamole sessions will expire after 60 minutes of inactivity.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm xmlns:xl="http://www.w3.org/1999/xlink">
                        <primary>available-languages</primary>
                    </indexterm><parameter>available-languages</parameter></term>
                <listitem>
                    <para>A comma-separated whitelist of language keys to allow as display language
                        choices within the Guacamole interface. For example, to restrict Guacamole
                        to only English and German, you would specify:</para>
                    <informalexample>
                        <programlisting>available-languages: en, de</programlisting>
                    </informalexample>
                    <para>As English is the fallback language, used whenever a translation key is
                        missing from the chosen language, English should only be omitted from this
                        list if you are absolutely positive that no strings are missing.</para>
                    <para>The corresponding JSON of any built-in languages not listed here will
                        still be available over HTTP, but the Guacamole interface will not use them,
                        nor will they be used automatically based on local browser language. If
                        omitted, all defined languages will be available.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm xmlns:xl="http://www.w3.org/1999/xlink">
                        <primary>enable-environment-properties</primary>
                    </indexterm><parameter>enable-environment-properties</parameter></term>
                <listitem>
                    <para>If set to "true", Guacamole will first evaluate its environment to obtain
                        the value for any given configuration property, before using a value specified
                        in <filename>guacamole.properties</filename> or falling back to a default
                        value. By enabling this option, you can easily override any other configuration
                        property using an environment variable.</para>
                    <informalexample>
                        <programlisting>enable-environment-properties: true</programlisting>
                    </informalexample>
                    <para>When searching for a configuration property in the environment, the name of
                        the property is first transformed by converting all lower case characters to
                        their upper case equivalents, and by replacing all hyphen characters (<code>-</code>) with
                        underscore characters (<code>_</code>). For example, the 
                        <parameter>guacd-hostname</parameter> property would be transformed to 
                        <parameter>GUACD_HOSTNAME</parameter> when searching the environment.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm xmlns:xl="http://www.w3.org/1999/xlink">
                        <primary>guacd-hostname</primary>
                    </indexterm><parameter>guacd-hostname</parameter></term>
                <listitem>
                    <para>The host the Guacamole proxy daemon (<package>guacd</package>) is
                        listening on. If omitted, Guacamole will assume <package>guacd</package> is
                        listening on localhost.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm xmlns:xl="http://www.w3.org/1999/xlink">
                        <primary>guacd-port</primary>
                    </indexterm><parameter>guacd-port</parameter></term>
                <listitem>
                    <para>The port the Guacamole proxy daemon (<package>guacd</package>) is
                        listening on. If omitted, Guacamole will assume <package>guacd</package> is
                        listening on port 4822.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm xmlns:xl="http://www.w3.org/1999/xlink">
                        <primary>guacd-ssl</primary>
                    </indexterm><parameter>guacd-ssl</parameter></term>
                <listitem>
                    <para>If set to "true", Guacamole will require SSL/TLS encryption between the
                        web application and <package>guacd</package>. By default, communication
                        between the web application and <package>guacd</package> will be
                        unencrypted.</para>
                    <para>Note that if you enable this option, you must also configure
                            <package>guacd</package> to use SSL via command line options. These
                        options are documented in the manpage of <package>guacd</package>. You will
                        need an SSL certificate and private key.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm xmlns:xl="http://www.w3.org/1999/xlink">
                        <primary>skip-if-unavailable</primary>
                    </indexterm><parameter>skip-if-unavailable</parameter></term>
                <listitem>
                    <para>A comma-separated list of the identifiers of authentication providers that
                        should be allowed to fail internally without aborting the authentication
                        process. For example, to request that Guacamole ignore failures due to the
                        LDAP directory or MySQL server being unexpectedly down, allowing other
                        authentication providers to continue functioning:</para>
                    <informalexample>
                        <programlisting>skip-if-unavailable: mysql, ldap</programlisting>
                    </informalexample>
                    <para>By default, Guacamole takes a conservative approach to internal failures,
                        aborting the authentication process if an internal error occurs within any
                        authentication provider. Depending on the nature of the error, this may mean
                        that no users can log in until the cause of the failure is dealt with. The
                            <parameter>skip-if-unavailable</parameter> property may be used to
                        explicitly inform Guacamole that one or more underlying systems are expected
                        to occasionally experience failures, and that other functioning systems
                        should be relied upon if they do fail.</para>
                </listitem>
            </varlistentry>
        </variablelist>
        <example>
            <title>Example <filename>guacamole.properties</filename></title>
            <programlisting xml:id="guacamole.properties" version="5.0" xml:lang="en"># Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822</programlisting>
        </example>
    </section>
    <section xml:id="webapp-logging">
        <title>Logging within the web application</title>
        <indexterm>
            <primary>logging</primary>
        </indexterm>
        <para>By default, Guacamole logs all messages to the console. Servlet containers like Tomcat
            will automatically redirect these messages to a log file,
                <filename>catalina.out</filename> in the case of Tomcat, which you can read through
            while Guacamole runs. Messages are logged at four different log levels, depending on
            message importance and severity:</para>
        <variablelist>
            <varlistentry>
                <term><indexterm>
                        <primary>logging</primary>
                        <secondary>errors</secondary>
                    </indexterm><constant>error</constant></term>
                <listitem>
                    <para>Errors are fatal conditions. An operation, described in the log message,
                        was attempted but could not proceed, and the failure of this operation is a
                        serious problem that needs to be addressed.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm>
                        <primary>logging</primary>
                        <secondary>warnings</secondary>
                    </indexterm><constant>warn</constant></term>
                <listitem>
                    <para>Warnings are generally non-fatal conditions. The operation continued, but
                        encountered noteworthy problems.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm>
                        <primary>logging</primary>
                        <secondary>info</secondary>
                    </indexterm><constant>info</constant></term>
                <listitem>
                    <para>"Info" messages are purely informational. They may be useful or
                        interesting to administrators, but are not generally critical to proper
                        operation of a Guacamole server.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm>
                        <primary>logging</primary>
                        <secondary>debug</secondary>
                    </indexterm><constant>debug</constant></term>
                <listitem>
                    <para>Debug messages are highly detailed and oriented toward development. Most
                        debug messages will contain stack traces and internal information that is
                        useful when investigating problems within code. It is expected that debug
                        messages, though verbose, will not affect performance.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><indexterm>
                        <primary>logging</primary>
                        <secondary>trace</secondary>
                    </indexterm><constant>trace</constant></term>
                <listitem>
                    <para>Trace messages are similar to debug messages in intent and verbosity, but
                        are so low-level that they may affect performance due to their frequency.
                        Trace-level logging is rarely necessary, and is mainly useful in providing
                        highly detailed context around issues being investigated.</para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>Guacamole logs messages using a logging framework called <link
                xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://logback.qos.ch/"
                >Logback</link> and, by default, will only log messages at the
                "<constant>info</constant>" level or higher. If you wish to change the log level, or
            configure how or where Guacamole logs messages, you can do so by providing your own
                <filename>logback.xml</filename> file within <varname>GUACAMOLE_HOME</varname>. For
            example, to log all messages to the console, even "<constant>debug</constant>" messages,
            you might use the following <filename>logback.xml</filename>:</para>
        <informalexample>
            <programlisting>&lt;configuration>

    &lt;!-- Appender for debugging -->
    &lt;appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender">
        &lt;encoder>
            &lt;pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n&lt;/pattern>
        &lt;/encoder>
    &lt;/appender>

    &lt;!-- Log at DEBUG level -->
    &lt;root level="debug">
        &lt;appender-ref ref="GUAC-DEBUG"/>
    &lt;/root>

&lt;/configuration></programlisting>
        </informalexample>
        <para>Guacamole and the above example configure only one appender which logs to the console,
            but Logback is extremely flexible and allows any number of appenders which can each log
            to separate files, the console, etc. based on a number of criteria, including the log
            level and the source of the message.</para>
        <para>More thorough <link xmlns:xlink="http://www.w3.org/1999/xlink"
                xlink:href="http://logback.qos.ch/manual/configuration.html">documentation on
                configuring Logback</link> is provided on the Logback project's web site.</para>
    </section>
    <section xml:id="basic-auth">
        <title>Using the default authentication</title>
        <indexterm>
            <primary>authentication</primary>
        </indexterm>
        <para>Guacamole's default authentication module is simple and consists of a mapping of
            usernames to configurations. This authentication module comes with Guacamole and simply
            reads usernames and passwords from an XML file. It is always enabled, but will only read
            from the XML file if it exists, and is always last in priority relative to any other
            authentication extensions.</para>
        <para>There are other authentication modules available. The Guacamole project provides
            database-backed authentication modules with the ability to manage connections and users
            from the web interface, and other authentication modules can be created using the
            extension API provided along with the Guacamole web application,
                <package>guacamole-ext</package>.</para>
        <section xml:id="user-mapping">
            <title><filename>user-mapping.xml</filename></title>
            <indexterm>
                <primary>user-mapping.xml</primary>
            </indexterm>
            <para>The default authentication provider used by Guacamole reads all username,
                password, and configuration information from a file called the "user mapping"
                located at <filename>GUACAMOLE_HOME/user-mapping.xml</filename>. An example of a
                user mapping file is included with Guacamole, and looks something like this:</para>
            <programlisting>&lt;user-mapping>

    &lt;!-- Per-user authentication and config information -->
    &lt;authorize username="USERNAME" password="PASSWORD">
        &lt;protocol>vnc&lt;/protocol>
        &lt;param name="hostname">localhost&lt;/param>
        &lt;param name="port">5900&lt;/param>
        &lt;param name="password">VNCPASS&lt;/param>
    &lt;/authorize>

    &lt;!-- Another user, but using md5 to hash the password
         (example below uses the md5 hash of "PASSWORD") -->
    &lt;authorize
            username="USERNAME2"
            password="319f4d26e3c536b5dd871bb2c52e3178"
            encoding="md5">

        &lt;!-- First authorized connection -->
        &lt;connection name="localhost">
            &lt;protocol>vnc&lt;/protocol>
            &lt;param name="hostname">localhost&lt;/param>
            &lt;param name="port">5901&lt;/param>
            &lt;param name="password">VNCPASS&lt;/param>
        &lt;/connection>

        &lt;!-- Second authorized connection -->
        &lt;connection name="otherhost">
            &lt;protocol>vnc&lt;/protocol>
            &lt;param name="hostname">otherhost&lt;/param>
            &lt;param name="port">5900&lt;/param>
            &lt;param name="password">VNCPASS&lt;/param>
        &lt;/connection>

    &lt;/authorize>

&lt;/user-mapping></programlisting>
            <para>Each user is specified with a corresponding
                    <code>&lt;authorize></code> tag. This tag contains all
                authorized connections for that user, each denoted with a
                    <code>&lt;connection></code> tag. Each
                    <code>&lt;connection></code> tag contains a corresponding
                protocol and set of protocol-specific parameters, specified with
                the <code>&lt;protocol></code> and <code>&lt;param></code> tags
                respectively.</para>
            <section xml:id="user-setup">
                <title>Adding users</title>
                <indexterm>
                    <primary>users</primary>
                    <secondary>adding</secondary>
                </indexterm>
                <para>When using
                        <classname>BasicFileAuthenticationProvider</classname>,
                    username/password pairs are specified with
                        <code>&lt;authorize></code> tags, which each have a
                        <code>username</code> and <code>password</code>
                    attribute. Each <code>&lt;authorize></code> tag authorizes a
                    specific username/password pair to access all connections
                    within the tag:</para>
                <programlisting>&lt;authorize username="<replaceable>USER</replaceable>" password="<replaceable>PASS</replaceable>">
    ...
&lt;/authorize></programlisting>
                <para>In the example above, the password would be listed in
                    plaintext. If you don't want to do this, you can also
                    specify your password hashed with MD5:</para>
                <programlisting>&lt;authorize username="<replaceable>USER</replaceable>"
           password="<replaceable>319f4d26e3c536b5dd871bb2c52e3178</replaceable>"
           encoding="md5">
    ...
&lt;/authorize></programlisting>
                <para>After modifying user-mapping.xml, the file will be
                    automatically reread by Guacamole, and your changes will
                    take effect immediately. The newly-added user will be able
                    to log in - no restart of the servlet container is
                    needed.</para>
            </section>
            <section xml:id="connection-setup">
                <title>Adding connections to a user</title>
                <indexterm>
                    <primary>connections</primary>
                    <secondary>adding</secondary>
                </indexterm>
                <para>To specify a connection within an
                        <code>&lt;authorize></code> tag, you can either list a
                    single protocol and set of parameters (specified with a
                        <code>&lt;protocol></code> tag and any number of
                        <code>&lt;param></code> tags), in which case that user
                    will have access to only one connection named "DEFAULT", or
                    you can specify one or more connections with one or more
                        <code>&lt;connection></code> tags, each of which can be
                    named and contains a <code>&lt;protocol></code> tag and any
                    number of <code>&lt;param></code> tags.</para>
            </section>
        </section>
    </section>
    <section xml:id="connection-configuration">
        <title xml:id="configuring-connections">Configuring connections</title>
        <para>Each protocol supported by Guacamole has its own set of configuration parameters.
            These parameters typically describe the hostname and port of the remote desktop server,
            the credentials to use when connecting, if any, and the size and color depth of the
            display. If the protocol supports file transfer, options for enabling that functionality
            will be provided as well.</para>
        <section xml:id="vnc">
            <title>VNC</title>
            <indexterm>
                <primary>VNC</primary>
            </indexterm>
            <para>The VNC protocol is the simplest and first protocol supported by Guacamole.
                Although generally not as fast as RDP, many VNC servers are adequate, and VNC over
                Guacamole tends to be faster than VNC by itself due to decreased bandwidth
                usage.</para>
            <para>VNC support for Guacamole is provided by the <package>libguac-client-vnc</package>
                library, which will be installed as part of guacamole-server if the required
                dependencies are present during the build.</para>
            <section xml:id="vnc-network-parameters">
                <title>Network parameters</title>
                <para>With the exception of reverse-mode VNC connections, VNC works by making
                    outbound network connections to a particular host which runs one or more VNC
                    servers. Each VNC server is associated with a display number, from which the
                    appropriate port number is derived.</para>
                <informaltable frame="all" xml:id="vnc-parameters">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>VNC</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>hostname</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>hostname</secondary>
                                        </indexterm>The hostname or IP address of the VNC server
                                        Guacamole should connect to.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>port</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>port</secondary>
                                        </indexterm>The port the VNC server is listening on, usually
                                        5900 or 5900 + <replaceable>display number</replaceable>.
                                        For example, if your VNC server is serving display number 1
                                        (sometimes written as <constant>:1</constant>), your port
                                        number here would be 5901.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>autoretry</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>retrying connections</secondary>
                                        </indexterm>The number of times to retry connecting before
                                        giving up and returning an error. In the case of a reverse
                                        connection, this is the number of times the connection
                                        process is allowed to time out.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="vnc-authentication">
                <title>Authentication</title>
                <para>The VNC standard defines only password based authentication. Other
                    authentication mechanisms exist, but are non-standard or proprietary. Guacamole
                    supports only the password method.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>VNC</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>password</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>password</secondary>
                                        </indexterm>The password to use when attempting
                                        authentication, if any. This parameter is optional.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="vnc-display-settings">
                <title>Display settings</title>
                <para>VNC servers do not allow the client to request particular display sizes, so
                    you are at the mercy of your VNC server with respect to display width and
                    height. However, to reduce bandwidth usage, you may request that the VNC server
                    reduce its color depth. Guacamole will automatically detect 256-color images,
                    but this can be guaranteed for absolutely all graphics sent over the connection
                    by forcing the color depth to 8-bit. Color depth is otherwise dictated by the
                    VNC server.</para>
                <para>If you are noticing problems with your VNC display, such as the lack of a
                    mouse cursor, the presence of multiple mouse cursors, or strange colors (such as
                    blue colors appearing more like orange or red), these are typically the result
                    of bugs or limitations within the VNC server, and additional parameters are
                    available to work around such issues.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>VNC</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>color-depth</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>color depth</secondary>
                                        </indexterm>The color depth to request, in bits-per-pixel.
                                        This parameter is optional. If specified, this must be
                                        either 8, 16, 24, or 32. Regardless of what value is chosen
                                        here, if a particular update uses less than 256 colors,
                                        Guacamole will always send that update as a 256-color
                                        PNG.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>swap-red-blue</parameter></entry>
                                <entry>
                                    <para>If the colors of your display appear wrong (blues appear
                                        orange or red, etc.), it may be that your VNC server is
                                        sending image data incorrectly, and the red and blue
                                        components of each color are swapped. If this is the case,
                                        set this parameter to "true" to work around the problem.
                                        This parameter is optional.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>cursor</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>mouse pointer</secondary>
                                        </indexterm>If set to "remote", the mouse pointer will be
                                        rendered remotely, and the local position of the mouse
                                        pointer will be indicated by a small dot. A remote mouse
                                        cursor will feel slower than a local cursor, but may be
                                        necessary if the VNC server does not support sending the
                                        cursor image to the client.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>encodings</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>encodings</secondary>
                                        </indexterm>A space-delimited list of VNC encodings to use.
                                        The format of this parameter is dictated by libvncclient and
                                        thus doesn't really follow the form of other Guacamole
                                        parameters. This parameter is optional, and
                                            <package>libguac-client-vnc</package> will use any
                                        supported encoding by default.</para>
                                    <para>Beware that this parameter is intended to be replaced with
                                        individual, encoding-specific parameters in a future
                                        release.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>read-only</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>read-only</secondary>
                                        </indexterm>Whether this connection should be read-only. If
                                        set to "true", no input will be accepted on the connection
                                        at all. Users will only see the desktop and whatever other
                                        users using that same desktop are doing. This parameter is
                                        optional.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="vnc-recording">
                <title>Session recording</title>
                <para>VNC sessions can be recorded graphically. These recordings take the form of
                    Guacamole protocol dumps and are recorded automatically to a specified
                    directory. Recordings can be subsequently translated to a normal video stream
                    using the <command>guacenc</command> utility provided with
                    guacamole-server.</para>
                <para>For example, to produce a video called "<replaceable>NAME</replaceable>.m4v"
                    from the recording "<replaceable>NAME</replaceable>", you would run:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>guacenc <replaceable>/path/to/recording/NAME</replaceable></userinput></screen>
                </informalexample>
                <para>The <command>guacenc</command> utility has additional options for overriding
                    default behavior, including tweaking the output format, which are documented in
                    detail within the manpage:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>man guacenc</userinput></screen>
                </informalexample>
                <para>If recording of key events is explicitly enabled using the
                        <parameter>recording-include-keys</parameter> parameter, recordings can also
                    be translated into human-readable interpretations of the keys pressed during the
                    session using the <command>guaclog</command> utility. The usage of
                        <command>guaclog</command> is analogous to <command>guacenc</command>, and
                    results in the creation of a new text file containing the interpreted
                    events:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>guaclog <replaceable>/path/to/recording/NAME</replaceable></userinput><computeroutput>
guaclog: INFO: Guacamole input log interpreter (guaclog) version 1.1.0
guaclog: INFO: 1 input file(s) provided.
guaclog: INFO: Writing input events from "<replaceable>/path/to/recording/NAME</replaceable>" to "<replaceable annotations="">/path/to/recording/NAME</replaceable>.txt" ...
guaclog: INFO: All files interpreted successfully.</computeroutput>
<prompt>$</prompt> </screen>
                </informalexample>
                <important>
                    <para>Guacamole will never overwrite an existing recording. If necessary, a
                        numeric suffix like ".1", ".2", ".3", etc. will be appended to
                            <replaceable>NAME</replaceable> to avoid overwriting an existing
                        recording. If even appending a numeric suffix does not help, the session
                        will simply not be recorded.</para>
                </important>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>VNC</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>recording-path</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>graphical recording</secondary>
                                        </indexterm>The directory in which screen recording files
                                        should be created. <emphasis>If a graphical recording needs
                                            to be created, then this parameter is
                                            required.</emphasis> Specifying this parameter enables
                                        graphical screen recording. If this parameter is omitted, no
                                        graphical recording will be created.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>create-recording-path</parameter></entry>
                                <entry>
                                    <para>If set to "true", the directory specified by the
                                            <parameter>recording-path</parameter> parameter will
                                        automatically be created if it does not yet exist. Only the
                                        final directory in the path will be created - if other
                                        directories earlier in the path do not exist, automatic
                                        creation will fail, and an error will be logged.</para>
                                    <para><emphasis>This parameter is optional.</emphasis> By
                                        default, the directory specified by the
                                            <parameter>recording-path</parameter> parameter will not
                                        automatically be created, and attempts to create recordings
                                        within a non-existent directory will be logged as
                                        errors.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-name</parameter></entry>
                                <entry>
                                    <para>The filename to use for any created recordings.
                                            <emphasis>This parameter is optional.</emphasis> If
                                        omitted, the value "recording" will be used instead.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-exclude-output</parameter></entry>
                                <entry>
                                    <para>If set to "true", graphical output and other data normally
                                        streamed from server to client will be excluded from the
                                        recording, producing a recording which contains only user
                                        input events. <emphasis>This parameter is
                                            optional.</emphasis> If omitted, graphical output will
                                        be included in the recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-exclude-mouse</parameter></entry>
                                <entry>
                                    <para>If set to "true", user mouse events will be excluded from
                                        the recording, producing a recording which lacks a visible
                                        mouse cursor. <emphasis>This parameter is
                                            optional.</emphasis> If omitted, mouse events will be
                                        included in the recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-include-keys</parameter></entry>
                                <entry>
                                    <para>If set to "true", user key events will be included in the
                                        recording. The recording can subsequently be passed through
                                        the <command>guaclog</command> utility to produce a
                                        human-readable interpretation of the keys pressed during the
                                        session. <emphasis>This parameter is optional.</emphasis> If
                                        omitted, key events will be not included in the
                                        recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="vnc-sftp">
                <title>File transfer (via SFTP)</title>
                <para>VNC does not normally support file transfer, but Guacamole can provide file
                    transfer over SFTP even when the remote desktop is otherwise being accessed
                    through VNC and not SSH. If SFTP is enabled on a Guacamole VNC connection, users
                    will be able to upload and download files as described in <xref
                        linkend="using-guacamole"/>.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>VNC</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>enable-sftp</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>file transfer</secondary>
                                        </indexterm><indexterm>
                                            <primary>SFTP</primary>
                                        </indexterm>Whether file transfer should be enabled. If set
                                        to "true", the user will be allowed to upload or download
                                        files from the specified server using SFTP. If omitted, SFTP
                                        will be disabled.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-hostname</parameter></entry>
                                <entry>
                                    <para>The hostname or IP address of the server hosting SFTP.
                                        This parameter is optional. If omitted, the hostname of the
                                        VNC server specified with the
                                            <parameter>hostname</parameter> parameter will be
                                        used.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-port</parameter></entry>
                                <entry>
                                    <para>The port the SSH server providing SFTP is listening on,
                                        usually 22. This parameter is optional. If omitted, the
                                        standard port of 22 will be used.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-host-key</parameter></entry>
                                <entry>
                                    <para>The known hosts entry for the SFTP server.  This
                                        parameter is optional, and, if not provided, no verification
                                        of SFTP host identity will be done.  If the parameter is
                                        provided the identity of the server will be checked
                                        against the data.</para>
                                    <para>The format of this parameter should be that of a single
                                        entry from an OpenSSH <filename>known_hosts</filename>
                                        file.</para>
                                    <para>For more information, please see <xref linkend="ssh-host-verification"/>.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-username</parameter></entry>
                                <entry>
                                    <para>The username to authenticate as when connecting to the
                                        specified SSH server for SFTP. This parameter is
                                        required.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-password</parameter></entry>
                                <entry>
                                    <para>The password to use when authenticating with the specified
                                        SSH server for SFTP.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-private-key</parameter></entry>
                                <entry>
                                    <para>The entire contents of the private key to use for public
                                        key authentication. If this parameter is not specified,
                                        public key authentication will not be used. The private key
                                        must be in OpenSSH format, as would be generated by the
                                        OpenSSH <command>ssh-keygen</command> utility.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-passphrase</parameter></entry>
                                <entry>
                                    <para>The passphrase to use to decrypt the private key for use
                                        in public key authentication. This parameter is not needed
                                        if the private key does not require a passphrase.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-directory</parameter></entry>
                                <entry>
                                    <para>The directory to upload files to if they are simply
                                        dragged and dropped, and thus otherwise lack a specific
                                        upload location. This parameter is optional. If omitted, the
                                        default upload location of the SSH server providing SFTP
                                        will be used.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-root-directory</parameter></entry>
                                <entry>
                                    <para>The directory to expose to connected users via Guacamole's
                                            <link xmlns:xlink="http://www.w3.org/1999/xlink"
                                            linkend="file-browser">file browser</link>. If omitted,
                                        the root directory will be used by default.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-server-alive-interval</parameter></entry>
                                <entry>
                                    <para>The interval in seconds at which to send keepalive
                                    packets to the SSH server for the SFTP connection.  This
                                    parameter is optional.  If omitted, the default of 0 will be
                                    used, disabling sending keepalive packets.  The minimum
                                    value is 2.
                                    </para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="vnc-repeater">
                <title>VNC Repeater</title>
                <para>There exist VNC repeaters, such as UltraVNC Repeater, which act as
                    intermediaries or proxies, providing a single logical VNC connection which is
                    then routed to another VNC server elsewhere. Additional parameters are required
                    to select which VNC host behind the repeater will receive the connection.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>VNC</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>dest-host</parameter></entry>
                                <entry><indexterm>
                                        <primary>repeater</primary>
                                        <secondary>VNC</secondary>
                                    </indexterm><indexterm>
                                        <primary>proxy</primary>
                                        <secondary>VNC</secondary>
                                    </indexterm><indexterm>
                                        <primary>VNC</primary>
                                        <secondary>repeater</secondary>
                                    </indexterm>The destination host to request when connecting to a
                                    VNC proxy such as UltraVNC Repeater. This is only necessary if
                                    the VNC proxy in use requires the connecting user to specify
                                    which VNC server to connect to. If the VNC proxy automatically
                                    connects to a specific server, this parameter is not
                                    necessary.</entry>
                            </row>
                            <row>
                                <entry><parameter>dest-port</parameter></entry>
                                <entry><indexterm>
                                        <primary>repeater</primary>
                                        <secondary>VNC</secondary>
                                    </indexterm><indexterm>
                                        <primary>proxy</primary>
                                        <secondary>VNC</secondary>
                                    </indexterm>The destination port to request when connecting to a
                                    VNC proxy such as UltraVNC Repeater. This is only necessary if
                                    the VNC proxy in use requires the connecting user to specify
                                    which VNC server to connect to. If the VNC proxy automatically
                                    connects to a specific server, this parameter is not
                                    necessary.</entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="vnc-reverse-connections">
                <title>Reverse VNC connections</title>
                <para>Guacamole supports "reverse" VNC connections, where the VNC client listens for
                    an incoming connection from the VNC server. When reverse VNC connections are
                    used, the VNC client and server switch network roles, but otherwise function as
                    they normally would. The VNC server still provides the remote display, and the
                    VNC client still provides all keyboard and mouse input.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>VNC</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>reverse-connect</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>reverse connection</secondary>
                                        </indexterm>Whether reverse connection should be used. If
                                        set to "true", instead of connecting to a server at a given
                                        hostname and port, guacd will listen on the given port for
                                        inbound connections from a VNC server.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>listen-timeout</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>listen timeout</secondary>
                                        </indexterm>If reverse connection is in use, the maximum
                                        amount of time to wait for an inbound connection from a VNC
                                        server, in milliseconds. If blank, the default value is 5000
                                        (five seconds).</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="vnc-audio">
                <title>Audio support (via PulseAudio)</title>
                <para>VNC does not provide its own support for audio, but Guacamole's VNC support
                    can obtain audio through a secondary network connection to a PulseAudio server
                    running on the same machine as the VNC server.</para>
                <para>Most Linux systems provide audio through a service called PulseAudio. This
                    service is capable of communicating over the network, and if PulseAudio is
                    configured to allow TCP connections, Guacamole can connect to your PulseAudio
                    server and combine its audio with the graphics coming over VNC.</para>
                <para>Configuring PulseAudio for network connections requires an additional line
                    within the PulseAudio configuration file, usually
                        <filename>/etc/pulse/default.pa</filename>:</para>
                <informalexample>
                    <programlisting>load-module module-native-protocol-tcp auth-ip-acl=<replaceable>192.168.1.0/24</replaceable> auth-anonymous=1</programlisting>
                </informalexample>
                <para>This loads the TCP module for PulseAudio, configuring it to accept connections
                    without authentication and <emphasis>only</emphasis> from the
                        <replaceable>192.168.1.0/24</replaceable> subnet. You will want to replace
                    this value with the subnet or IP address from which guacd will be connecting. It
                    is possible to allow connections from absolutely anywhere, but beware that you
                    should only do so if the nature of your network prevents unauthorized
                    access:</para>
                <informalexample>
                    <programlisting>load-module module-native-protocol-tcp auth-anonymous=1</programlisting>
                </informalexample>
                <para>In either case, the <code>auth-anonymous=1</code> parameter is strictly
                    required. Guacamole does not currently support the cookie-based authentication
                    used by PulseAudio for non-anonymous connections. If this parameter is omitted,
                    Guacamole will not be able to connect to PulseAudio.</para>
                <para>Once the PulseAudio configuration file has been modified appropriately,
                    restart the PulseAudio service. PulseAudio should then begin listening on port
                    4713 (the default PulseAudio port) for incoming TCP connections. You can verify
                    this using a utility like <command>netstat</command>:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>netstat -ln | grep 4713</userinput>
<computeroutput>tcp        0      0 0.0.0.0:4713            0.0.0.0:*               LISTEN
tcp6       0      0 :::4713                 :::*                    LISTEN</computeroutput>
<prompt>$</prompt></screen>
                </informalexample>
                <para>The following parameters are available for configuring the audio support for
                    VNC:</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>VNC</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>enable-audio</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>sound</secondary>
                                        </indexterm><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>PulseAudio</secondary>
                                        </indexterm>If set to "true", audio support will be enabled,
                                        and a second connection for PulseAudio will be made in
                                        addition to the VNC connection. By default, audio support
                                        within VNC is disabled.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>audio-servername</parameter></entry>
                                <entry>
                                    <para>The name of the PulseAudio server to connect to. This will
                                        be the hostname of the computer providing audio for your
                                        connection via PulseAudio, most likely the same as the value
                                        given for the <parameter>hostname</parameter>
                                        parameter.</para>
                                    <para>If this parameter is omitted, the default PulseAudio
                                        device will be used, which will be the PulseAudio server
                                        running on the same machine as guacd.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="vnc-clipboard-encoding">
                <title>Clipboard encoding</title>
                <para>While Guacamole will always use UTF-8 for its own clipboard data, the VNC
                    standard requires that clipboard data be encoded in ISO 8859-1. As most VNC
                    servers will not accept data in any other format, Guacamole will translate
                    between UTF-8 and ISO 8859-1 when exchanging clipboard data with the VNC server,
                    but this behavior can be overridden with the
                        <parameter>clipboard-encoding</parameter> parameter.</para>
                <important>
                    <para><emphasis>The only clipboard encoding guaranteed to be supported by VNC
                            servers is ISO 8859-1.</emphasis> You should only override the clipboard
                        encoding using the <parameter>clipboard-encoding</parameter> parameter of
                        you are absolutely positive your VNC server supports other encodings.</para>
                </important>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>VNC</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>clipboard-encoding</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>clipboard encoding</primary>
                                        </indexterm><indexterm>
                                            <primary>VNC</primary>
                                            <secondary>clipboard encoding</secondary>
                                        </indexterm>The encoding to assume for the VNC clipboard.
                                        This parameter is optionl. By default, the standard encoding
                                        ISO 8859-1 will be used. <emphasis>Only use this parameter
                                            if you are sure your VNC server supports other encodings
                                            beyond the standard ISO 8859-1.</emphasis></para>
                                    <para>Possible values are:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>ISO8859-1</constant></term>
                                            <listitem>
                                                <para>ISO 8859-1 is the clipboard encoding mandated
                                                  by the VNC standard, and supports only basic Latin
                                                  characters.  Unless your VNC server specifies
                                                  otherwise, this encoding is the only encoding
                                                  guaranteed to work.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>UTF-8</constant></term>
                                            <listitem>
                                                <para>UTF-8 - the most common encoding used for
                                                  Unicode. Using this encoding for the VNC clipboard
                                                  violates the VNC specification, but some servers
                                                  do support this. This parameter value should only
                                                  be used if you know your VNC server supports this
                                                  encoding.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>UTF-16</constant></term>
                                            <listitem>
                                                <para>UTF-16 - a 16-bit encoding for Unicode which
                                                  is not as common as UTF-8, but still widely used.
                                                  Using this encoding for the VNC clipboard violates
                                                  the VNC specification. This parameter value should
                                                  only be used if you know your VNC server supports
                                                  this encoding.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>CP1252</constant></term>
                                            <listitem>
                                                <para>Code page 1252 - a Windows-specific encoding
                                                  for Latin characters which is mostly a superset of
                                                  ISO 8859-1, mapping some additional displayable
                                                  characters onto what would otherwise be control
                                                  characters. Using this encoding for the VNC
                                                  clipboard violates the VNC specification. This
                                                  parameter value should only be used if you know
                                                  your VNC server supports this encoding.</para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="adding-vnc">
                <title>Adding a VNC connection</title>
                <indexterm>
                    <primary>VNC</primary>
                    <secondary>adding</secondary>
                </indexterm>
                <para>If you are using the default authentication built into Guacamole, and you wish
                    to grant access to a VNC connection to a particular user, you need to locate the
                        <code>&lt;authorize></code> section for that user within your
                        <filename>user-mapping.xml</filename>, and add a section like the following
                    within it:</para>
                <programlisting>&lt;connection name="<replaceable>Unique Name</replaceable>">
    &lt;protocol>vnc&lt;/protocol>
    &lt;param name="hostname"><replaceable>localhost</replaceable>&lt;/param>
    &lt;param name="port"><replaceable>5901</replaceable>&lt;/param>
&lt;/connection></programlisting>
                <para>If added exactly as above, a new connection named "<replaceable>Unique
                        Name</replaceable>" will be available to the user associated with the
                        <code>&lt;authorize></code> section containing it. The connection will use
                    VNC to connect to <replaceable>localhost</replaceable> at port
                        <replaceable>5901</replaceable>. Naturally, you will want to change some or
                    all of these values.</para>
                <para>If your VNC server requires a password, or you wish to specify other
                    configuration parameters (to reduce the color depth, for example), you will need
                    to add additional <code>&lt;param></code> tags accordingly.</para>
                <para>Other authentication methods will provide documentation describing how to
                    configure new connections. If the authentication method in use fully implements
                    the features of Guacamole's authentication API, you will be able to add a new
                    VNC connection easily and intuitively using the administration interface built
                    into Guacamole. You will not need to edit configuration files.</para>
            </section>
            <section xml:id="vnc-servers">
                <title>Which VNC server?</title>
                <indexterm>
                    <primary>VNC servers</primary>
                </indexterm>
                <para>The choice of VNC server can make a big difference when it comes to
                    performance, especially over slower networks. While many systems provide VNC
                    access by default, using this is often not the fastest method.</para>
                <section xml:id="realvnc">
                    <title>RealVNC or TigerVNC</title>
                    <indexterm>
                        <primary>RealVNC</primary>
                    </indexterm>
                    <indexterm>
                        <primary>TigerVNC</primary>
                    </indexterm>
                    <para>RealVNC, and its derivative TigerVNC, perform quite well. In our testing,
                        they perform the best with Guacamole. If you are okay with having a desktop
                        that can only be accessed via VNC, one of these is likely your best choice.
                        Both optimize window movement and (depending on the application) scrolling,
                        giving a very responsive user experience.</para>
                </section>
                <section xml:id="tightvnc">
                    <title>TightVNC</title>
                    <indexterm>
                        <primary>TightVNC</primary>
                    </indexterm>
                    <para>TightVNC is widely-available and performs generally as well as RealVNC or
                        TigerVNC. If you wish to use TightVNC with Guacamole, performance should be
                        just fine, but we highly recommend disabling its JPEG encoding. This is
                        because images transmitted to Guacamole are always encoded losslessly as PNG
                        images. When this operation is performed on a JPEG image, the artifacts
                        present from JPEG's lossy compression reduce the compressibility of the
                        image for PNG, thus leading to a slower experience overall than if JPEG was
                        simply not used to begin with.</para>
                </section>
                <section xml:id="x11vnc">
                    <title>x11vnc</title>
                    <indexterm>
                        <primary>x11vnc</primary>
                    </indexterm>
                    <para>The main benefit of using x11vnc is that it allows you to continue using
                        your desktop normally, while simultaneously exposing control of your desktop
                        via VNC. Performance of x11vnc is comparable to RealVNC, TigerVNC, and
                        TightVNC. If you need to use your desktop locally as well as via VNC, you
                        will likely be quite happy with x11vnc.</para>
                </section>
                <section xml:id="vino">
                    <title>vino</title>
                    <indexterm>
                        <primary>vino</primary>
                    </indexterm>
                    <para>vino is the VNC server that comes with the Gnome desktop environment, and
                        is enabled if you enable "desktop sharing" via the system preferences
                        available within Gnome. If you need to share your local desktop, we
                        recommend using x11vnc rather vino, as it has proven more performant and
                        feature-complete in our testing. If you don't need to share a local desktop
                        but simply need an environment you can access remotely, using a VNC server
                        like RealVNC, TigerVNC, or TightVNC is a better choice.</para>
                </section>
                <section xml:id="qemu">
                    <title>QEMU or KVM</title>
                    <indexterm>
                        <primary>QEMU</primary>
                    </indexterm>
                    <indexterm>
                        <primary>KVM</primary>
                    </indexterm>
                    <para>QEMU (and thus KVM) expose the displays of virtual machines using VNC. If
                        you need to see the virtual monitor of your virtual machine, using this VNC
                        connection is really your only choice. As the VNC server built into QEMU
                        cannot be aware of higher-level operations like window movement, resizing,
                        or scrolling, those operations will tend to be sent suboptimally, and will
                        not be as fast as a VNC server running within the virtual machine.</para>
                    <para>If you wish to use a virtual machine for desktop access, we recommend
                        installing a native VNC server inside the virtual machine after the virtual
                        machine is set up. This will give a more responsive desktop.</para>
                </section>
            </section>
        </section>
        <section xml:id="rdp">
            <title>RDP</title>
            <indexterm>
                <primary>RDP</primary>
            </indexterm>
            <para>The RDP protocol is more complicated than VNC and was the second protocol
                officially supported by Guacamole. RDP tends to be faster than VNC due to the use of
                caching, which Guacamole does take advantage of.</para>
            <para>RDP support for Guacamole is provided by the <package>libguac-client-rdp</package>
                library, which will be installed as part of guacamole-server if the required
                dependencies are present during the build.</para>
            <section xml:id="rdp-network-parameters">
                <title>Network parameters</title>
                <para>RDP connections require a hostname or IP address defining the destination
                    machine. The RDP port is defined to be 3389, and will be this value in most
                    cases. You only need to specify the RDP port if you are not using port
                    3389.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>hostname</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>hostname</secondary>
                                        </indexterm>The hostname or IP address of the RDP server
                                        Guacamole should connect to.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>port</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>port</secondary>
                                        </indexterm>The port the RDP server is listening on, usually
                                        3389. This parameter is optional. If this is not specified,
                                        the default of 3389 will be used.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-authentication">
                <title>Authentication and security</title>
                <para>RDP provides authentication through the use of a username, password, and
                    optional domain.</para>
                <para>Most RDP servers will provide a graphical login if the username, password, and
                    domain parameters are omitted. One notable exception to this is Network Level
                    Authentication, or NLA, which performs all authentication outside of a desktop
                    session, and thus in the absence of a graphical interface. If your server
                    requires NLA, you will need to manually choose this as your security mode, and
                    you <emphasis>must</emphasis> provide a username and password.</para>
                <para>All RDP connections are encrypted. Higher-grade encryption is available in the
                    form of TLS, another possible security mode.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>username</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>username</secondary>
                                        </indexterm>The username to use to authenticate, if any.
                                        This parameter is optional.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>password</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>password</secondary>
                                        </indexterm>The password to use when attempting
                                        authentication, if any. This parameter is optional.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>domain</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>domain</secondary>
                                        </indexterm>The domain to use when attempting
                                        authentication, if any. This parameter is optional.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>security</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>security</secondary>
                                        </indexterm><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>NLA</secondary>
                                        </indexterm><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>TLS</secondary>
                                        </indexterm>The security mode to use for the RDP connection.
                                        This mode dictates how data will be encrypted and what type
                                        of authentication will be performed, if any. By default,
                                        standard RDP encryption is requested, as it is the most
                                        widely supported.</para>
                                    <para>Possible values are:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>rdp</constant></term>
                                            <listitem>
                                                <para>Standard RDP encryption. <emphasis>This is the
                                                  default</emphasis> and should be supported by all
                                                  RDP servers.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>nla</constant></term>
                                            <listitem>
                                                <para>Network Level Authentication. This mode
                                                  requires the username and password, and performs
                                                  an authentication step before the remote desktop
                                                  session actually starts. If the username and
                                                  password are not given, the connection cannot be
                                                  made.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>tls</constant></term>
                                            <listitem>
                                                <para>TLS encryption. TLS (Transport Layer Security)
                                                  is the successor to SSL.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>any</constant></term>
                                            <listitem>
                                                <para>Allow the server to choose the type of
                                                  security.</para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>ignore-cert</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>ignoring certificates</secondary>
                                        </indexterm>If set to "true", the certificate returned by
                                        the server will be ignored, even if that certificate cannot
                                        be validated. This is useful if you universally trust the
                                        server and your connection to the server, and you know that
                                        the server's certificate cannot be validated (for example,
                                        if it is self-signed).</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>disable-auth</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>disabling authentication</secondary>
                                        </indexterm>If set to "true", authentication will be
                                        disabled. Note that this refers to authentication that takes
                                        place while connecting. Any authentication enforced by the
                                        server over the remote desktop session (such as a login
                                        dialog) will still take place. By default, authentication is
                                        enabled and only used when requested by the server.</para>
                                    <para>If you are using NLA, authentication must be enabled by
                                        definition.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-session-settings">
                <title>Session settings</title>
                <para>RDP sessions will typically involve the full desktop environment of a normal
                    user. Alternatively, you can manually specify a program to use instead of the
                    RDP server's default shell, or connect to the administrative console.</para>
                <para>Although Guacamole is independent of keyboard layout, RDP is not. This is
                    because Guacamole represents keys based on what they <emphasis>do</emphasis>
                    ("press the <keycap>Enter</keycap> key"), while RDP uses identifiers based on
                    the key's location  ("press the rightmost key in the second row"). To translate
                    between a Guacamole key event  and an RDP key event, Guacamole must know ahead
                    of time the keyboard layout of the RDP server.</para>
                <para>By default, the US English qwerty keyboard will be used. If this does not
                    match the keyboard layout of your RDP server, keys will not be properly
                    translated, and you will need to explicitly choose a different layout in your
                    connection settings. If your keyboard layout is not supported, please notify the
                    Guacamole team by <link xmlns:xlink="http://www.w3.org/1999/xlink"
                        xlink:href="https://issues.apache.org/jira/browse/GUACAMOLE">opening an issue in
                    JIRA</link>.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>client-name</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>client-name</secondary>
                                        </indexterm>When connecting to the RDP server, Guacamole
                                        will normally provide its own hostname as the name of the
                                        client. If this parameter is specified, Guacamole will use
                                        its value instead.</para>
                                    <para>On Windows RDP servers, this value is exposed within the
                                        session as the <envar>CLIENTNAME</envar> environment
                                        variable.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>console</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>console</secondary>
                                        </indexterm>If set to "true", you will be connected to the
                                        console (admin) session of the RDP server.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>initial-program</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>initial program</secondary>
                                        </indexterm>The full path to the program to run immediately
                                        upon connecting. This parameter is optional.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>server-layout</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>keyboard layout</primary>
                                        </indexterm><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>keyboard layout</secondary>
                                        </indexterm>The server-side keyboard layout. This is the
                                        layout of the RDP server and has nothing to do with the
                                        keyboard layout in use on the client. <emphasis>The
                                            Guacamole client is independent of keyboard
                                            layout.</emphasis> The RDP protocol, however, is
                                            <emphasis>not</emphasis> independent of keyboard layout,
                                        and Guacamole needs to know the keyboard layout of the
                                        server in order to send the proper keys when a user is
                                        typing.</para>
                                    <para>Possible values are:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>en-us-qwerty</constant></term>
                                            <listitem>
                                                <para>English (US) keyboard</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>en-gb-qwerty</constant></term>
                                            <listitem>
                                                <para>English (UK) keyboard</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>de-ch-qwertz</constant></term>
                                            <listitem>
                                                <para>Swiss German keyboard (qwertz)</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>de-de-qwertz</constant></term>
                                            <listitem>
                                                <para>German keyboard (qwertz)</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>fr-fr-azerty</constant></term>
                                            <listitem>
                                                <para>French keyboard (azerty)</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>fr-ch-qwertz</constant></term>
                                            <listitem>
                                                <para>Swiss French keyboard (qwertz)</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>it-it-qwerty</constant></term>
                                            <listitem>
                                                <para>Italian keyboard</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>ja-jp-qwerty</constant></term>
                                            <listitem>
                                                <para>Japanese keyboard</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>pt-br-qwerty</constant></term>
                                            <listitem>
                                                <para>Portuguese Brazilian keyboard</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>es-es-qwerty</constant></term>
                                            <listitem>
                                                <para>Spanish keyboard</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>sv-se-qwerty</constant></term>
                                            <listitem>
                                                <para>Swedish keyboard</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>tr-tr-qwerty</constant></term>
                                            <listitem>
                                                <para>Turkish-Q keyboard</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>failsafe</constant></term>
                                            <listitem>
                                                <para>Unknown keyboard - this option sends only
                                                  Unicode events and should work for any keyboard,
                                                  though not necessarily all RDP servers or
                                                  applications.</para>
                                                <para>If your server's keyboard layout is not yet
                                                  supported, this option should work in the
                                                  meantime.</para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-display-settings">
                <title>Display settings</title>
                <para>Guacamole will automatically choose an appropriate display size for RDP
                    connections based on the size of the browser window and the DPI of the device.
                    The size of the display can be forced by specifying explicit width or height
                    values.</para>
                <para>To reduce bandwidth usage, you may also request that the server reduce its
                    color depth. Guacamole will automatically detect 256-color images, but this can
                    be guaranteed for absolutely all graphics sent over the connection by forcing
                    the color depth to 8-bit. Color depth is otherwise dictated by the RDP
                    server.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>color-depth</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>color depth</secondary>
                                        </indexterm>The color depth to request, in bits-per-pixel.
                                        This parameter is optional. If specified, this must be
                                        either 8, 16, or 24. Regardless of what value is chosen
                                        here, if a particular update uses less than 256 colors,
                                        Guacamole will always send that update as a 256-color
                                        PNG.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>width</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>display size</secondary>
                                        </indexterm>The width of the display to request, in pixels.
                                        This parameter is optional. If this value is not specified,
                                        the width of the connecting client display will be used
                                        instead.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>height</parameter></entry>
                                <entry>
                                    <para>The height of the display to request, in pixels. This
                                        parameter is optional. If this value is not specified, the
                                        height of the connecting client display will be used
                                        instead.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>dpi</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>display resolution</secondary>
                                        </indexterm>The desired effective resolution of the client
                                        display, in DPI. This parameter is optional. If this value
                                        is not specified, the resolution and size of the client
                                        display will be used together to determine, heuristically,
                                        an appropriate resolution for the RDP session.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>resize-method</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>display size</secondary>
                                        </indexterm>The method to use to update the RDP server when
                                        the width or height of the client display changes. This
                                        parameter is optional. If this value is not specified, no
                                        action will be taken when the client display changes
                                        size.</para>
                                    <para>Normally, the display size of an RDP session is constant
                                        and can only be changed when initially connecting. As of RDP
                                        8.1, the "Display Update" channel can be used to request
                                        that the server change the display size. For older RDP
                                        servers, the only option is to disconnect and reconnect with
                                        the new size.</para>
                                    <para>Possible values are:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>display-update</constant></term>
                                            <listitem>
                                                <para>Uses the "Display Update" channel added with
                                                  RDP 8.1 to signal the server when the client
                                                  display size has changed.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>reconnect</constant></term>
                                            <listitem>
                                                <para>Automatically disconnects the RDP session when
                                                  the client display size has changed, and
                                                  reconnects with the new size.</para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-recording">
                <title>Session recording</title>
                <para>RDP sessions can be recorded graphically. These recordings take the form of
                    Guacamole protocol dumps and are recorded automatically to a specified
                    directory. Recordings can be subsequently translated to a normal video stream
                    using the <command>guacenc</command> utility provided with
                    guacamole-server.</para>
                <para>For example, to produce a video called "<replaceable>NAME</replaceable>.m4v"
                    from the recording "<replaceable>NAME</replaceable>", you would run:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>guacenc <replaceable>/path/to/recording/NAME</replaceable></userinput></screen>
                </informalexample>
                <para>The <command>guacenc</command> utility has additional options for overriding
                    default behavior, including tweaking the output format, which are documented in
                    detail within the manpage:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>man guacenc</userinput></screen>
                </informalexample>
                <para>If recording of key events is explicitly enabled using the
                        <parameter>recording-include-keys</parameter> parameter, recordings can also
                    be translated into human-readable interpretations of the keys pressed during the
                    session using the <command>guaclog</command> utility. The usage of
                        <command>guaclog</command> is analogous to <command>guacenc</command>, and
                    results in the creation of a new text file containing the interpreted
                    events:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>guaclog <replaceable>/path/to/recording/NAME</replaceable></userinput><computeroutput>
guaclog: INFO: Guacamole input log interpreter (guaclog) version 1.1.0
guaclog: INFO: 1 input file(s) provided.
guaclog: INFO: Writing input events from "<replaceable>/path/to/recording/NAME</replaceable>" to "<replaceable annotations="">/path/to/recording/NAME</replaceable>.txt" ...
guaclog: INFO: All files interpreted successfully.</computeroutput>
<prompt>$</prompt> </screen>
                </informalexample>
                <important>
                    <para>Guacamole will never overwrite an existing recording. If necessary, a
                        numeric suffix like ".1", ".2", ".3", etc. will be appended to
                            <replaceable>NAME</replaceable> to avoid overwriting an existing
                        recording. If even appending a numeric suffix does not help, the session
                        will simply not be recorded.</para>
                </important>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>recording-path</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>graphical recording</secondary>
                                        </indexterm>The directory in which screen recording files
                                        should be created. <emphasis>If a graphical recording needs
                                            to be created, then this parameter is
                                            required.</emphasis> Specifying this parameter enables
                                        graphical screen recording. If this parameter is omitted, no
                                        graphical recording will be created.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>create-recording-path</parameter></entry>
                                <entry>
                                    <para>If set to "true", the directory specified by the
                                            <parameter>recording-path</parameter> parameter will
                                        automatically be created if it does not yet exist. Only the
                                        final directory in the path will be created - if other
                                        directories earlier in the path do not exist, automatic
                                        creation will fail, and an error will be logged.</para>
                                    <para><emphasis>This parameter is optional.</emphasis> By
                                        default, the directory specified by the
                                            <parameter>recording-path</parameter> parameter will not
                                        automatically be created, and attempts to create recordings
                                        within a non-existent directory will be logged as
                                        errors.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-name</parameter></entry>
                                <entry>
                                    <para>The filename to use for any created recordings.
                                            <emphasis>This parameter is optional.</emphasis> If
                                        omitted, the value "recording" will be used instead.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-exclude-output</parameter></entry>
                                <entry>
                                    <para>If set to "true", graphical output and other data normally
                                        streamed from server to client will be excluded from the
                                        recording, producing a recording which contains only user
                                        input events. <emphasis>This parameter is
                                            optional.</emphasis> If omitted, graphical output will
                                        be included in the recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-exclude-mouse</parameter></entry>
                                <entry>
                                    <para>If set to "true", user mouse events will be excluded from
                                        the recording, producing a recording which lacks a visible
                                        mouse cursor. <emphasis>This parameter is
                                            optional.</emphasis> If omitted, mouse events will be
                                        included in the recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-include-keys</parameter></entry>
                                <entry>
                                    <para>If set to "true", user key events will be included in the
                                        recording. The recording can subsequently be passed through
                                        the <command>guaclog</command> utility to produce a
                                        human-readable interpretation of the keys pressed during the
                                        session. <emphasis>This parameter is optional.</emphasis> If
                                        omitted, key events will be not included in the
                                        recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-device-redirection">
                <title>Device redirection</title>
                <para>Device redirection refers to the use of non-display devices over RDP.
                    Guacamole's RDP support currently allows redirection of audio, printing, and
                    disk access, some of which require additional configuration in order to function
                    properly.</para>
                <para>Audio redirection will be enabled by default. If Guacamole was correctly
                    installed, and audio redirection is supported by your RDP server, sound should
                    play within remote connections without manual intervention.</para>
                <para>Printing requires <application>GhostScript</application> to be installed on
                    the Guacamole server, and allows users to print arbitrary documents directly to
                    PDF. When documents are printed to the redirected printer, the user will receive
                    a PDF of that document within their web browser.</para>
                <para>Guacamole provides support for file transfer over RDP by emulating a virtual
                    disk drive. This drive will persist on the Guacamole server, confined within the
                    drive path specified. If drive redirection is enabled on a Guacamole SSH
                    connection, users will be able to upload and download files as described in
                        <xref linkend="using-guacamole"/>.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>disable-audio</parameter></entry>
                                <entry><indexterm>
                                        <primary>disabling audio</primary>
                                    </indexterm><indexterm>
                                        <primary>audio</primary>
                                    </indexterm><indexterm>
                                        <primary>RDP</primary>
                                        <secondary>audio</secondary>
                                    </indexterm>Audio is enabled by default in both the client and
                                    in libguac-client-rdp. If you are concerned about bandwidth
                                    usage, or sound is causing problems, you can explicitly disable
                                    sound by setting this parameter to "true".</entry>
                            </row>
                            <row>
                                <entry><parameter>enable-audio-input</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>enabling audio input</primary>
                                        </indexterm><indexterm>
                                            <primary>audio input</primary>
                                        </indexterm><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>audio input</secondary>
                                        </indexterm>If set to "true", audio input support
                                        (microphone) will be enabled, leveraging the standard
                                        "AUDIO_INPUT" channel of RDP. By default, audio input
                                        support within RDP is disabled.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>enable-printing</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>enabling printing</primary>
                                        </indexterm><indexterm>
                                            <primary>printing</primary>
                                        </indexterm><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>printing</secondary>
                                        </indexterm>Printing is disabled by default, but with
                                        printing enabled, RDP users can print to a virtual printer
                                        that sends a PDF containing the document printed to the
                                        Guacamole client. Enable printing by setting this parameter
                                        to "true".</para>
                                    <para><emphasis>Printing support requires
                                                <application>GhostScript</application> to be
                                            installed.</emphasis> If
                                            <application>guacd</application> cannot find the
                                            <filename>gs</filename> executable when printing, the
                                        print attempt will fail.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>printer-name</parameter></entry>
                                <entry>
                                    <para>The name of the redirected printer device that is passed
                                        through to the RDP session.  This is the name that the user
                                        will see in, for example, the Devices and Printers control
                                        panel.</para>
                                    <para>If printer redirection is not enabled, this option has no
                                        effect.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>enable-drive</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>enabling file transfer</primary>
                                        </indexterm><indexterm>
                                            <primary>file transfer</primary>
                                        </indexterm><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>file transfer</secondary>
                                        </indexterm>File transfer is disabled by default, but with
                                        file transfer enabled, RDP users can transfer files to and
                                        from a virtual drive which persists on the Guacamole server.
                                        Enable file transfer support by setting this parameter to
                                        "true".</para>
                                    <para>Files will be stored in the directory specified by the
                                            "<parameter>drive-path</parameter>" parameter, which is
                                        required if file transfer is enabled.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>drive-name</parameter></entry>
                                <entry>
                                    <para>The name of the filesystem used when passed through to
                                        the RDP session.  This is the name that users will see in their
                                        Computer/My Computer area along with client name (for example,
                                        "Guacamole on Guacamole RDP"), and is also the name of the share
                                        when accessing the special <filename>\\tsclient</filename>
                                        network location.</para>
                                    <para>If file transfer is not enabled, this parameter is
                                        ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>drive-path</parameter></entry>
                                <entry>
                                    <para>The directory on the Guacamole server in which transferred
                                        files should be stored. This directory must be accessible by
                                        guacd and both readable and writable by the user that runs
                                        guacd. <emphasis>This parameter does not refer to a
                                            directory on the RDP server.</emphasis></para>
                                    <para>If file transfer is not enabled, this parameter is
                                        ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>create-drive-path</parameter></entry>
                                <entry>
                                    <para>If set to "true", and file transfer is enabled, the
                                        directory specified by the <parameter>drive-path</parameter>
                                        parameter will automatically be created if it does not yet
                                        exist. Only the final directory in the path will be created
                                        - if other directories earlier in the path do not exist,
                                        automatic creation will fail, and an error will be
                                        logged.</para>
                                    <para>By default, the directory specified by the
                                            <parameter>drive-path</parameter> parameter will not
                                        automatically be created, and attempts to transfer files to
                                        a non-existent directory will be logged as errors.</para>
                                    <para>If file transfer is not enabled, this parameter is
                                        ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>console-audio</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>console audio</secondary>
                                        </indexterm>If set to "true", audio will be explicitly
                                        enabled in the console (admin) session of the RDP server.
                                        Setting this option to "true" only makes sense if the
                                            <parameter>console</parameter> parameter is also set to
                                        "true".</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>static-channels</parameter></entry>
                                <entry>
                                    <para>A comma-separated list of static channel names to open and
                                        expose as pipes. If you wish to communicate between an
                                        application running on the remote desktop and JavaScript,
                                        this is the best way to do it. Guacamole will open an
                                        outbound pipe with the name of the static channel. If
                                        JavaScript needs to communicate back in the other direction,
                                        it should respond by opening another pipe with the same
                                        name.</para>
                                    <para>Guacamole allows any number of static channels to be
                                        opened, but protocol restrictions of RDP limit the size of
                                        each channel name to 7 characters.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-preconnection-pdu">
                <title>Preconnection PDU (Hyper-V)</title>
                <para><indexterm>
                        <primary>preconnection PDU</primary>
                    </indexterm><indexterm>
                        <primary>Hyper-V</primary>
                    </indexterm>Some RDP servers host multiple logical RDP connections behind a
                    single server listening on a single TCP port. To select between these logical
                    connections, an RDP client must send the "preconnection PDU" - a message which
                    contains values that uniquely identify the destination, referred to as the "RDP
                    source". This mechanism is defined by the <link
                        xmlns:xlink="http://www.w3.org/1999/xlink"
                        xlink:href="https://msdn.microsoft.com/en-us/library/cc242359.aspx">"Session
                        Selection Extension"</link> for the RDP protocol, and is implemented by
                    Microsoft's Hyper-V hypervisor.</para>
                <para>If you are using Hyper-V, you will need to specify the ID of the destination
                    virtual machine within the <parameter>preconnection-blob</parameter> parameter.
                    This value can be determined using PowerShell:</para>
                <informalexample>
                    <screen><computeroutput><prompt>PS C:\> </prompt></computeroutput><userinput>Get-VM <replaceable>VirtualMachineName</replaceable> | Select-Object Id
</userinput><computeroutput>
Id
--
ed272546-87bd-4db9-acba-e36e1a9ca20a


<prompt>PS C:\> </prompt></computeroutput></screen>
                </informalexample>
                <para>The preconnection PDU is intentionally generic. While its primary use is as a
                    means for selecting virtual machines behind Hyper-V, other RDP servers may use
                    it as well. It is up to the RDP server itself to determine whether the
                    preconnection ID, BLOB, or both will be used, and what their values mean.</para>
                <para>If you do intend to use Hyper-V, beware that its built-in RDP server uses
                    slightly different parameters for both authentication and the port number, and
                    Guacamole's defaults will not work. In most cases, you will need to do the
                    following when connecting to Hyper-V:</para>
                <orderedlist>
                    <listitem>
                        <para>Set "<parameter>port</parameter>" to "<constant>2179</constant>", as
                            this is the default port used by Hyper-V. The standard RDP port is 3389,
                            and Guacamole will use port 3389 unless a different value is
                            specified.</para>
                    </listitem>
                    <listitem>
                        <para>Specify both "<parameter>username</parameter>" and
                                "<parameter>password</parameter>" appropriately, and set
                                "<parameter>security</parameter>" to "<constant>nla</constant>" or
                                "<constant>any</constant>". Hyper-V requires Network Level
                            Authentication from connecting clients. Guacamole's default is to use
                            standard RDP encryption without Network Level Authentication, which
                            Hyper-V does not support.</para>
                    </listitem>
                    <listitem>
                        <para>If necessary, set "<parameter>ignore-cert</parameter>" to
                                "<constant>true</constant>". Hyper-V may use a self-signed
                            certificate.</para>
                    </listitem>
                </orderedlist>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>preconnection-id</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>preconnection ID</primary>
                                        </indexterm>The numeric ID of the RDP source. This is a
                                        non-negative integer value dictating which of potentially
                                        several logical RDP connections should be used. This
                                        parameter is optional, and is only required if the RDP
                                        server is documented as requiring it. <emphasis>If using
                                            Hyper-V, this should be left blank.</emphasis></para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>preconnection-blob</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>preconnection BLOB</primary>
                                        </indexterm><indexterm>
                                            <primary>Hyper-V</primary>
                                        </indexterm>An arbitrary string which identifies the RDP
                                        source - one of potentially several logical RDP connections
                                        hosted by the same RDP server. This parameter is optional,
                                        and is only required if the RDP server is documented as
                                        requiring it, such as Hyper-V. In all cases, the meaning of
                                        this parameter is opaque to the RDP protocol itself and is
                                        dictated by the RDP server. <emphasis>For Hyper-V, this will
                                            be the ID of the destination virtual
                                        machine.</emphasis></para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-gateway">
                <title>Remote desktop gateway</title>
                <para><indexterm>
                        <primary>remote desktop gateway</primary>
                    </indexterm><indexterm>
                        <primary>TS gateway</primary>
                    </indexterm>Microsoft's remote desktop server provides an additional gateway
                    service which allows external connections to be forwarded to internal RDP
                    servers which are otherwise not accessible. If you will be using Guacamole to
                    connect through such a gateway, you will need to provide additional parameters
                    describing the connection to that gateway, as well as any required
                    credentials.</para>
                <para><emphasis>This functionality is only available if Guacamole was built against
                        FreeRDP 1.1 or later.</emphasis> Older versions of FreeRDP do not have
                    support for RDP gateways.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>gateway-hostname</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>gateway hostname</primary>
                                        </indexterm>The hostname of the remote desktop gateway that
                                        should be used as an intermediary for the remote desktop
                                        connection. <emphasis>If omitted, a gateway will not be
                                            used.</emphasis></para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>gateway-port</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>gateway port</primary>
                                        </indexterm>The port of the remote desktop gateway that
                                        should be used as an intermediary for the remote desktop
                                        connection. By default, this will be "443".</para>
                                    <para><emphasis>If using a version of FreeRDP prior to 1.2, this
                                            setting has no effect.</emphasis> Older versions of
                                        FreeRDP use a hard-coded value of "443". </para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>gateway-username</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>gateway username</primary>
                                        </indexterm>The username of the user authenticating with the
                                        remote desktop gateway, if a gateway is being used. This is
                                        not necessarily the same as the user actually using the
                                        remote desktop connection.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>gateway-password</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>gateway password</primary>
                                        </indexterm>The password to provide when authenticating with
                                        the remote desktop gateway, if a gateway is being
                                        used.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>gateway-domain</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>gateway domain</primary>
                                        </indexterm>The domain of the user authenticating with the
                                        remote desktop gateway, if a gateway is being used. This is
                                        not necessarily the same domain as the user actually using
                                        the remote desktop connection.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-connection-broker">
                <title>Load balancing and RDP connection brokers</title>
                <para><indexterm>
                        <primary>load balancing</primary>
                    </indexterm><indexterm>
                        <primary>connection broker</primary>
                    </indexterm>If your remote desktop servers are behind a load balancer, sometimes
                    referred to as a "connection broker" or "TS session broker", that balancer may
                    require additional information during the connection process to determine how
                    the incoming connection should be routed. RDP does not dictate the format of
                    this information; it is specific to the balancer in use.</para>
                <para>If you are using a load balancer and are unsure whether such information is
                    required, <emphasis>you will need to check the documentation for your
                        balancer</emphasis>. If your balancer provides <filename>.rdp</filename>
                    files for convenience, look through the contents of those files for a string
                    field called "loadbalanceinfo", as that field is where the required
                    information/cookie would be specified.</para>
                <para><emphasis>This functionality is only available if Guacamole was built against
                        FreeRDP 1.1 or later.</emphasis> Older versions of FreeRDP do not have
                    support for load balancers which require additional information during the
                    connection process.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>load-balance-info</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>loadbalanceinfo</primary>
                                        </indexterm>The load balancing information or cookie which
                                        should be provided to the connection broker. <emphasis>If no
                                            connection broker is being used, this should be left
                                            blank.</emphasis></para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-sftp">
                <title>RDP + SFTP</title>
                <para>Guacamole can provide file transfer over SFTP even when the remote desktop is
                    otherwise being accessed through RDP and not SSH. If SFTP is enabled on a
                    Guacamole RDP connection, users will be able to upload and download files as
                    described in <xref linkend="using-guacamole"/>.</para>
                <para>This support is independent of the file transfer implemented through RDP's own
                    "drive redirection" (RDPDR), and is particularly useful for RDP servers which do
                    not support RDPDR.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>enable-sftp</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>file transfer</secondary>
                                        </indexterm><indexterm>
                                            <primary>SFTP</primary>
                                        </indexterm>Whether file transfer should be enabled. If set
                                        to "true", the user will be allowed to upload or download
                                        files from the specified server using SFTP. If omitted, SFTP
                                        will be disabled.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-hostname</parameter></entry>
                                <entry>
                                    <para>The hostname or IP address of the server hosting SFTP.
                                        This parameter is optional. If omitted, the hostname of the
                                        RDP server specified with the
                                            <parameter>hostname</parameter> parameter will be
                                        used.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-port</parameter></entry>
                                <entry>
                                    <para>The port the SSH server providing SFTP is listening on,
                                        usually 22. This parameter is optional. If omitted, the
                                        standard port of 22 will be used.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-host-key</parameter></entry>
                                <entry>
                                    <para>The known hosts entry for the SFTP server.  This
                                        parameter is optional, and, if not provided, no verification
                                        of SFTP host identity will be done.  If the parameter is
                                        provided the identity of the server will be checked
                                        against the data.</para>
                                    <para>The format of this parameter is that of a single entry
                                        from an OpenSSH <filename>known_hosts</filename> file.</para>
                                    <para>For more information, please see <xref linkend="ssh-host-verification"/>.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-username</parameter></entry>
                                <entry>
                                    <para>The username to authenticate as when connecting to the
                                        specified SSH server for SFTP. This parameter is optional if
                                        a username is specified for the RDP connection. If omitted,
                                        the value provided for the <parameter>username</parameter>
                                        parameter will be use.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-password</parameter></entry>
                                <entry>
                                    <para>The password to use when authenticating with the specified
                                        SSH server for SFTP.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-private-key</parameter></entry>
                                <entry>
                                    <para>The entire contents of the private key to use for public
                                        key authentication. If this parameter is not specified,
                                        public key authentication will not be used. The private key
                                        must be in OpenSSH format, as would be generated by the
                                        OpenSSH <command>ssh-keygen</command> utility.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-passphrase</parameter></entry>
                                <entry>
                                    <para>The passphrase to use to decrypt the private key for use
                                        in public key authentication. This parameter is not needed
                                        if the private key does not require a passphrase.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-directory</parameter></entry>
                                <entry>
                                    <para>The directory to upload files to if they are simply
                                        dragged and dropped, and thus otherwise lack a specific
                                        upload location. This parameter is optional. If omitted, the
                                        default upload location of the SSH server providing SFTP
                                        will be used.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-root-directory</parameter></entry>
                                <entry>
                                    <para>The directory to expose to connected users via Guacamole's
                                            <link xmlns:xlink="http://www.w3.org/1999/xlink"
                                            linkend="file-browser">file browser</link>. If omitted,
                                        the root directory will be used by default.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-server-alive-interval</parameter></entry>
                                <entry>
                                    <para>The interval in seconds at which to send keepalive
                                    packets to the SSH server for the SFTP connection.  This
                                    parameter is optional.  If omitted, the default of 0 will be
                                    used, disabling sending keepalive packets.  The minimum
                                    value is 2.
                                    </para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-perf-flags">
                <title>Performance flags</title>
                <para>RDP provides several flags which control the availability of features that
                    decrease performance and increase bandwidth for the sake of aesthetics, such as
                    wallpaper, window theming, menu effects, and smooth fonts. These features are
                    all disabled by default within Guacamole such that bandwidth usage is minimized,
                    but you can manually re-enable them on a per-connection basis if desired.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="2.75*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>enable-wallpaper</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>wallpaper</secondary>
                                        </indexterm>If set to "true", enables rendering of the
                                        desktop wallpaper. By default, wallpaper will be disabled,
                                        such that unnecessary bandwidth need not be spent redrawing
                                        the desktop.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>enable-theming</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>theming</secondary>
                                        </indexterm>If set to "true", enables use of theming of
                                        windows and controls. By default, theming within RDP
                                        sessions is disabled.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>enable-font-smoothing</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>font smoothing</secondary>
                                        </indexterm><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>ClearType</secondary>
                                        </indexterm>If set to "true", text will be rendered with
                                        smooth edges. Text over RDP is rendered with rough edges by
                                        default, as this reduces the number of colors used by text,
                                        and thus reduces the bandwidth required for the
                                        connection.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>enable-full-window-drag</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>full window drag</secondary>
                                        </indexterm>If set to "true", the contents of windows will
                                        be displayed as windows are moved. By default, the RDP
                                        server will only draw the window border while windows are
                                        being dragged.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>enable-desktop-composition</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>desktop composition</secondary>
                                        </indexterm><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>Aero</secondary>
                                        </indexterm>If set to "true", graphical effects such as
                                        transparent windows and shadows will be allowed. By default,
                                        such effects, if available, are disabled.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>enable-menu-animations</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>menu animations</secondary>
                                        </indexterm>If set to "true", menu open and close animations
                                        will be allowed. Menu animations are disabled by
                                        default.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>disable-bitmap-caching</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>bitmap caching</secondary>
                                        </indexterm>In certain situations, particularly with RDP server
                                        implementations with known bugs, it is necessary to disable
                                        RDP's built-in bitmap caching functionality.  This parameter
                                        allows that to be controlled in a Guacamole session.  If set to
                                        "true" the RDP bitmap cache will not be used.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>disable-offscreen-caching</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>offscreen bitmap caching</secondary>
                                        </indexterm>RDP normally maintains caches of regions of the screen
                                        that are current not visible in the client in order to accelerate
                                        retrieval of those regions when they come into view.  This parameter,
                                        when set to "true," will disable caching of those regions.  This is
                                        usually only useful when dealing with known bugs in RDP server
                                        implementations and should remain enabled in most circumstances.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>disable-glyph-caching</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RDP</primary>
                                            <secondary>glyph caching</secondary>
                                        </indexterm>In addition to screen regions, RDP maintains caches of
                                        frequently used symbols or fonts, collectively known as "glyphs."  As
                                        with bitmap and offscreen caching, certain known bugs in RDP implementations
                                        can cause performance issues with this enabled, and setting this parameter
                                        to "true" will disable that glyph caching in the RDP session.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="rdp-remoteapp">
                <title>RemoteApp</title>
                <para>Recent versions of Windows provide a feature called RemoteApp which allows
                    individual applications to be used over RDP, without providing access to the
                    full desktop environment. If your RDP server has this feature enabled and
                    configured, you can configure Guacamole connections to use those individual
                    applications.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>RDP</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>remote-app</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>RemoteApp</primary>
                                        </indexterm>Specifies the RemoteApp to start on the remote
                                        desktop. If supported by your remote desktop server, this
                                        application, and only this application, will be visible to
                                        the user.</para>
                                    <para>Windows requires a special notation for the names of
                                        remote applications. The names of remote applications must
                                        be prefixed with two vertical bars. For example, if you have
                                        created a remote application on your server for
                                            <filename>notepad.exe</filename> and have assigned it
                                        the name "notepad", you would set this parameter to:
                                        "||notepad".</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>remote-app-dir</parameter></entry>
                                <entry>
                                    <para>The working directory, if any, for the remote application.
                                        This parameter has no effect if RemoteApp is not in
                                        use.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>remote-app-args</parameter></entry>
                                <entry>
                                    <para>The command-line arguments, if any, for the remote
                                        application. This parameter has no effect if RemoteApp is
                                        not in use.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="adding-rdp">
                <title>Adding an RDP connection</title>
                <indexterm>
                    <primary>RDP</primary>
                    <secondary>adding</secondary>
                </indexterm>
                <para>If you are using the default authentication built into Guacamole, and you wish
                    to grant access to a RDP connection to a particular user, you need to locate the
                        <code>&lt;authorize></code> section for that user within your
                        <filename>user-mapping.xml</filename>, and add a section like the following
                    within it:</para>
                <programlisting>&lt;connection name="<replaceable>Unique Name</replaceable>">
    &lt;protocol>rdp&lt;/protocol>
    &lt;param name="hostname"><replaceable>localhost</replaceable>&lt;/param>
    &lt;param name="port"><replaceable>3389</replaceable>&lt;/param>
&lt;/connection></programlisting>
                <para>If added exactly as above, a new connection named "<replaceable>Unique
                        Name</replaceable>" will be available to the user associated with the
                        <code>&lt;authorize></code> section containing it. The connection will use
                    RDP to connect to <replaceable>localhost</replaceable> at port
                        <replaceable>3389</replaceable>. Naturally, you will want to change some or
                    all of these values.</para>
                <para>If you want to login automatically rather than receive a login prompt upon
                    connecting, you can specify a username and password with additional
                        <code>&lt;param></code> tags. Other options are available for controlling
                    the color depth, size of the screen, etc.</para>
                <para>Other authentication methods will provide documentation describing how to
                    configure new connections. If the authentication method in use fully implements
                    the features of Guacamole's authentication API, you will be able to add a new
                    RDP connection easily and intuitively using the administration interface built
                    into Guacamole. You will not need to edit configuration files.</para>
            </section>
        </section>
        <section xml:id="ssh">
            <title>SSH</title>
            <indexterm>
                <primary>SSH</primary>
            </indexterm>
            <para>Unlike VNC or RDP, SSH is a text protocol. Its implementation in Guacamole is
                actually a combination of a terminal emulator and SSH client, because the SSH
                protocol isn't inherently graphical. Guacamole's SSH support emulates a terminal on
                the server side, and draws the screen of this terminal remotely on the
                client.</para>
            <para>SSH support for Guacamole is provided by the <package>libguac-client-ssh</package>
                library, which will be installed as part of guacamole-server if the required
                dependencies are present during the build.</para>
            <section xml:id="ssh-host-verification">
                <title>SSH Host Verification</title>
                <para>By default, Guacamole does not do any verification of host identity before
                    establishing SSH connections.  While this may be safe for private and trusted
                    networks, it is not ideal for large networks with unknown/untrusted systems,
                    or for SSH connections that traverse the Internet.  The potential exists for
                    Man-in-the-Middle (MitM) attacks when connecting to these hosts.</para>
                <para>Guacamole includes two methods for verifying SSH (and SFTP) server identity
                    that can be used to make sure that the host you are connecting to is a host
                    that you know and trust.  The first method is by reading a file in
                    <varname>GUACAMOLE_HOME</varname> called <filename>ssh_known_hosts</filename>.
                    This file should be in the format of a standard OpenSSH known_hosts file.
                    If the file is not present, no verification is done.  If the file is present,
                    it is read in at connection time and remote host identities are verified
                    against the keys present in the file.</para>
                <para>The second method for verifying host identity is by passing a connection
                    parameter that contains an OpenSSH known hosts entry for that specific host.
                    The <parameter>host-key</parameter> parameter is used for SSH connections, 
                    while the SFTP connections associated with RDP and VNC use the
                    <parameter>sftp-host-key</parameter> parameter.  If these parameters are
                    not present on their respective connections no host identity verification
                    is performed.  If the parameter is present then the identity of the remote
                    host is verified against the identity provided in the parameter before a
                    connection is established.</para> 
            </section>
            <section xml:id="ssh-network-parameters">
                <title>Network parameters</title>
                <para>SSH connections require a hostname or IP address defining the destination
                    machine. SSH is standardized to use port 22 and this will be the proper value in
                    most cases. You only need to specify the SSH port if you are not using the
                    standard port.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>SSH</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>hostname</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>hostname</secondary>
                                        </indexterm>The hostname or IP address of the SSH server
                                        Guacamole should connect to.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>port</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>port</secondary>
                                        </indexterm>The port the SSH server is listening on, usually
                                        22. This parameter is optional. If this is not specified,
                                        the default of 22 will be used.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>host-key</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>host-key</secondary>
                                        </indexterm>The known hosts entry for the SSH server.  This
                                            parameter is optional, and, if not provided, no verification
                                            of host identity will be done.  If the parameter is
                                            provided the identity of the server will be checked
                                            against the data.</para>
                                    <para>The format of this parameter is that of a single entry from
                                        an OpenSSH <filename>known_hosts</filename> file.</para>
                                    <para>For more information, please see <xref linkend="ssh-host-verification"/>.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>server-alive-interval</parameter></entry>
                                <entry>
                                    <para>
                                        <indexterm>
                                            <primary>SSH</primary>
                                            <secondary>server-alive-interval</secondary>
                                        </indexterm>
                                        By default the SSH client does not send keepalive requests
                                        to the server.  This parameter allows you to configure the
                                        the interval in seconds at which the client connection
                                        sends keepalive packets to the server.  The default is 0,
                                        which disables sending the packets.  The minimum value
                                        is 2.
                                    </para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="ssh-authentication">
                <title>Authentication</title>
                <para>SSH provides authentication through passwords and public key
                    authentication, and also supports the NONE method.</para>
                <para>SSH NONE authentication is seen occasionally in appliances
                    and items like network or SAN fabric switches.  Generally
                    for this authentication method you need only provide a
                    username.</para>
                <para>For Guacamole to use public key authentication, it must have access to your
                    private key and, if applicable, its passphrase. If the private key requires a
                    passphrase, but no passphrase is provided, you will be prompted for the
                    passphrase upon connecting.</para>
                <para>If no private key is provided, Guacamole will attempt to authenticate using a
                    password, reading that password from the connection parameters, if provided, or
                    by prompting the user directly.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>SSH</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>username</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>username</secondary>
                                        </indexterm>The username to use to authenticate, if any.
                                        This parameter is optional. If not specified, you will be
                                        prompted for the username upon connecting.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>password</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>password</secondary>
                                        </indexterm>The password to use when attempting
                                        authentication, if any. This parameter is optional. If not
                                        specified, you will be prompted for your password upon
                                        connecting.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>private-key</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>public key authentication</secondary>
                                        </indexterm>The entire contents of the private key to use
                                        for public key authentication. If this parameter is not
                                        specified, public key authentication will not be used. The
                                        private key must be in OpenSSH format, as would be generated
                                        by the OpenSSH <command>ssh-keygen</command> utility.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>passphrase</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>passphrase</secondary>
                                        </indexterm>The passphrase to use to decrypt the private key
                                        for use in public key authentication. This parameter is not
                                        needed if the private key does not require a passphrase. If
                                        the private key requires a passphrase, but this parameter is
                                        not provided, the user will be prompted for the passphrase
                                        upon connecting.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="ssh-display-settings">
                <title>Display settings</title>
                <para>Guacamole's SSH support provides a display, but not in the same sense as a
                    remote desktop protocol like VNC or RDP. The display is a terminal emulator, and
                    thus provides options for configuring the font used and its size. In this case,
                        <emphasis>the chosen font must be installed on the server</emphasis>, as it
                    is the server that will handle rendering of characters to the terminal display,
                    not the client.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>SSH</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>color-scheme</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>color scheme</secondary>
                                        </indexterm>The color scheme to use for the terminal
                                        emulator used by SSH connections. It consists of a
                                        semicolon-separated series of name-value pairs. Each
                                        name-value pair is separated by a colon and assigns a
                                        value to a color in the terminal emulator palette. For
                                        example, to use blue text on white background by default,
                                        and change the red color to a purple shade, you would
                                        specify:</para>
                                    <informalexample>
                                        <programlisting>foreground: rgb:00/00/ff;
background: rgb:ff/ff/ff;
color9: rgb:80/00/80</programlisting>
                                    </informalexample>
                                    <para>This format is similar to the color configuration format
                                        used by Xterm, so Xterm color configurations can be easily
                                        adapted for Guacamole. This parameter is optional. If not
                                        specified, Guacamole will render text as gray over a black
                                        background.</para>
                                    <para>Possible color names are:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>foreground</constant></term>
                                            <listitem>
                                                <para>Set the default foreground color.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>background</constant></term>
                                            <listitem>
                                                <para>Set the default background color.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>color&lt;n&gt;</constant></term>
                                            <listitem>
                                                <para>Set the color at index <code>&lt;n&gt;</code>
                                                    on the Xterm 256-color palette. For example,
                                                    <code>color9</code> refers to the red color.
                                                    </para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                    <para>Possible color values are:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>rgb:RR/GG/BB</constant></term>
                                            <listitem>
                                                <para>Use the specified color in RGB format, with
                                                    each component in hexadecimal. For example,
                                                    <code>rgb:ff/00/00</code> specifies the color
                                                    red. Note that each hexadecimal component can be
                                                    one to four digits, but the effective values are
                                                    always zero-extended or truncated to two digits;
                                                    for example, <code>rgb:f/8/0</code>,
                                                    <code>rgb:f0/80/00</code>, and
                                                    <code>rgb:f0f/808/00f</code> all refer to the
                                                    same effective color.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>color&lt;n&gt;</constant></term>
                                            <listitem>
                                                <para>Use the color currently assigned to index
                                                    <code>&lt;n&gt;</code> on the Xterm 256-color
                                                    palette. For example, <code>color9</code>
                                                    specifies the current red color. Note that the
                                                    color value is used rather than the color
                                                    reference, so if <code>color9</code> is changed
                                                    later in the color scheme configuration, that
                                                    new color will not be reflected in this
                                                    assignment.</para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                    <para>For backward compatibility, Guacamole will also accept
                                        four special values as the color scheme parameter:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>black-white</constant></term>
                                            <listitem>
                                                <para>Black text over a white background.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>gray-black</constant></term>
                                            <listitem>
                                                <para>Gray text over a black background. This is the
                                                  default color scheme.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>green-black</constant></term>
                                            <listitem>
                                                <para>Green text over a black background.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>white-black</constant></term>
                                            <listitem>
                                                <para>White text over a black background.</para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>font-name</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>font</secondary>
                                        </indexterm>The name of the font to use. This parameter is
                                        optional. If not specified, the default of "monospace" will
                                        be used instead.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>font-size</parameter></entry>
                                <entry>
                                    <para>The size of the font to use, in points. This parameter is
                                        optional. If not specified, the default of 12 will be used
                                        instead.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>scrollback</parameter></entry>
                                <entry>
                                    <para>The maximum number of rows to allow within the terminal
                                        scrollback buffer. This parameter is optional. If not
                                        specified, the scrollback buffer will be limited to a
                                        maximum of 1000 rows.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="ssh-command">
                <title>Running a command (instead of a shell)</title>
                <para>By default, SSH sessions will start an interactive shell. The shell which will
                    be used is determined by the SSH server, normally by reading the user's default
                    shell previously set with <command>chsh</command> or within
                        <filename>/etc/passwd</filename>. If you wish to override this and instead
                    run a specific command, you can do so by specifying that command in the
                    configuration of the Guacamole SSH connection.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>SSH</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>command</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>command</secondary>
                                        </indexterm>The command to execute over the SSH session, if
                                        any. This parameter is optional. If not specified, the SSH
                                        session will use the user's default shell.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="ssh-terminal-behavior">
                <title>Controlling terminal behavior</title>
                <para>In most cases, the default behavior for a terminal works without modification.
                    However, when connecting to certain systems, particularly operating systems other
                    than Linux, the terminal behavior may need to be tweaked to allow it to operate
                    properly.  The settings in this section control that behavior.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>SSH</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>backspace</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>backspace</secondary>
                                        </indexterm>This parameter controls the ASCII code that
                                        the backspace key sends to the remote system.  Under most
                                        circumstances this should not need to be adjusted; however,
                                        if, when pressing the backspace key, you see control characters
                                        (often either ^? or ^H) instead of seeing the text erased,
                                        you may need to adjust this parameter.  By default the terminal
                                        sends ASCII code 127 (Delete) if this option is not set.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>terminal-type</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>terminal type</secondary>
                                        </indexterm>This parameter sets the terminal emulator type
                                        string that is passed to the SSH server. This parameter is
                                        optional. If not specified, &quot;<code>linux</code>&quot;
                                        is used as the terminal emulator type by default.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="ssh-typescripts">
                <title>Text session recording (typescripts)</title>
                <para>The full, raw text content of SSH sessions, including timing information, can
                    be recorded automatically to a specified directory. This recording, also known
                    as a "typescript", will be written to two files within the directory specified
                    by <parameter>typescript-path</parameter>:
                            <filename><replaceable>NAME</replaceable></filename>, which contains the
                    raw text data, and <filename><replaceable>NAME</replaceable>.timing</filename>,
                    which contains timing information, where <replaceable>NAME</replaceable> is the
                    value provided for the <parameter>typescript-name</parameter> parameter.</para>
                <para>This format is compatible with the format used by the standard UNIX
                        <command>script</command> command, and can be replayed using
                        <command>scriptreplay</command> (if installed). For example, to replay a
                    typescript called "<replaceable>NAME</replaceable>", you would run:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>scriptreplay <replaceable>NAME</replaceable>.timing <replaceable>NAME</replaceable></userinput></screen>
                </informalexample>
                <important>
                    <para>Guacamole will never overwrite an existing recording. If necessary, a
                        numeric suffix like ".1", ".2", ".3", etc. will be appended to
                            <replaceable>NAME</replaceable> to avoid overwriting an existing
                        recording. If even appending a numeric suffix does not help, the session
                        will simply not be recorded.</para>
                </important>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>SSH</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>typescript-path</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>typescripts</secondary>
                                        </indexterm><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>text recording</secondary>
                                        </indexterm>The directory in which typescript files should
                                        be created. <emphasis>If a typescript needs to be recorded,
                                            this parameter is required.</emphasis> Specifying this
                                        parameter enables typescript recording. If this parameter is
                                        omitted, no typescript will be recorded.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>create-typescript-path</parameter></entry>
                                <entry>
                                    <para>If set to "true", the directory specified by the
                                            <parameter>typescript-path</parameter> parameter will
                                        automatically be created if it does not yet exist. Only the
                                        final directory in the path will be created - if other
                                        directories earlier in the path do not exist, automatic
                                        creation will fail, and an error will be logged.</para>
                                    <para><emphasis>This parameter is optional.</emphasis> By
                                        default, the directory specified by the
                                            <parameter>typescript-path</parameter> parameter will
                                        not automatically be created, and attempts to record
                                        typescripts in a non-existent directory will be logged as
                                        errors.</para>
                                    <para>This parameter only has an effect if typescript recording
                                        is enabled. If the <parameter>typescript-path</parameter> is
                                        not specified, recording of typescripts will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>typescript-name</parameter></entry>
                                <entry>
                                    <para>The base filename to use when determining the names for
                                        the data and timing files of the typescript. <emphasis>This
                                            parameter is optional.</emphasis> If omitted, the value
                                        "typescript" will be used instead.</para>
                                    <para>Each typescript consists of two files which are created
                                        within the directory specified by
                                            <parameter>typescript-path</parameter>:
                                                <filename><replaceable>NAME</replaceable></filename>,
                                        which contains the raw text data, and
                                                <filename><replaceable>NAME</replaceable>.timing</filename>,
                                        which contains timing information, where
                                            <replaceable>NAME</replaceable> is the value provided
                                        for the <parameter>typescript-name</parameter>
                                        parameter.</para>
                                    <para>This parameter only has an effect if typescript recording
                                        is enabled. If the <parameter>typescript-path</parameter> is
                                        not specified, recording of typescripts will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="ssh-recording">
                <title>Graphical session recording</title>
                <para>In addition to text-based recordings, SSH sessions can be recorded
                    graphically. These recordings take the form of Guacamole protocol dumps and are
                    recorded automatically to a specified directory. Recordings can be subsequently
                    translated to a normal video stream using the <command>guacenc</command> utility
                    provided with guacamole-server.</para>
                <para>For example, to produce a video called "<replaceable>NAME</replaceable>.m4v"
                    from the recording "<replaceable>NAME</replaceable>", you would run:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>guacenc <replaceable>/path/to/recording/NAME</replaceable></userinput></screen>
                </informalexample>
                <para>The <command>guacenc</command> utility has additional options for overriding
                    default behavior, including tweaking the output format, which are documented in
                    detail within the manpage:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>man guacenc</userinput></screen>
                </informalexample>
                <para>If recording of key events is explicitly enabled using the
                        <parameter>recording-include-keys</parameter> parameter, recordings can also
                    be translated into human-readable interpretations of the keys pressed during the
                    session using the <command>guaclog</command> utility. The usage of
                        <command>guaclog</command> is analogous to <command>guacenc</command>, and
                    results in the creation of a new text file containing the interpreted
                    events:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>guaclog <replaceable>/path/to/recording/NAME</replaceable></userinput><computeroutput>
guaclog: INFO: Guacamole input log interpreter (guaclog) version 1.1.0
guaclog: INFO: 1 input file(s) provided.
guaclog: INFO: Writing input events from "<replaceable>/path/to/recording/NAME</replaceable>" to "<replaceable annotations="">/path/to/recording/NAME</replaceable>.txt" ...
guaclog: INFO: All files interpreted successfully.</computeroutput>
<prompt>$</prompt> </screen>
                </informalexample>
                <important>
                    <para>Guacamole will never overwrite an existing recording. If necessary, a
                        numeric suffix like ".1", ".2", ".3", etc. will be appended to
                            <replaceable>NAME</replaceable> to avoid overwriting an existing
                        recording. If even appending a numeric suffix does not help, the session
                        will simply not be recorded.</para>
                </important>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>SSH</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>recording-path</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>graphical recording</secondary>
                                        </indexterm>The directory in which screen recording files
                                        should be created. <emphasis>If a graphical recording needs
                                            to be created, then this parameter is
                                            required.</emphasis> Specifying this parameter enables
                                        graphical screen recording. If this parameter is omitted, no
                                        graphical recording will be created.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>create-recording-path</parameter></entry>
                                <entry>
                                    <para>If set to "true", the directory specified by the
                                            <parameter>recording-path</parameter> parameter will
                                        automatically be created if it does not yet exist. Only the
                                        final directory in the path will be created - if other
                                        directories earlier in the path do not exist, automatic
                                        creation will fail, and an error will be logged.</para>
                                    <para><emphasis>This parameter is optional.</emphasis> By
                                        default, the directory specified by the
                                            <parameter>recording-path</parameter> parameter will not
                                        automatically be created, and attempts to create recordings
                                        within a non-existent directory will be logged as
                                        errors.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-name</parameter></entry>
                                <entry>
                                    <para>The filename to use for any created recordings.
                                            <emphasis>This parameter is optional.</emphasis> If
                                        omitted, the value "recording" will be used instead.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-exclude-output</parameter></entry>
                                <entry>
                                    <para>If set to "true", graphical output and other data normally
                                        streamed from server to client will be excluded from the
                                        recording, producing a recording which contains only user
                                        input events. <emphasis>This parameter is
                                            optional.</emphasis> If omitted, graphical output will
                                        be included in the recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-exclude-mouse</parameter></entry>
                                <entry>
                                    <para>If set to "true", user mouse events will be excluded from
                                        the recording, producing a recording which lacks a visible
                                        mouse cursor. <emphasis>This parameter is
                                            optional.</emphasis> If omitted, mouse events will be
                                        included in the recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-include-keys</parameter></entry>
                                <entry>
                                    <para>If set to "true", user key events will be included in the
                                        recording. The recording can subsequently be passed through
                                        the <command>guaclog</command> utility to produce a
                                        human-readable interpretation of the keys pressed during the
                                        session. <emphasis>This parameter is optional.</emphasis> If
                                        omitted, key events will be not included in the
                                        recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="ssh-sftp">
                <title>SFTP</title>
                <para>Guacamole provides support for file transfer over SSH using SFTP, the file
                    transfer protocol built into most SSH servers. If SFTP is enabled on a Guacamole
                    SSH connection, users will be able to upload and download files as described in
                        <xref linkend="using-guacamole"/>.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>SSH</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>enable-sftp</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>SSH</primary>
                                            <secondary>file transfer</secondary>
                                        </indexterm><indexterm>
                                            <primary>SFTP</primary>
                                        </indexterm>Whether file transfer should be enabled. If set
                                        to "true", the user will be allowed to upload or download
                                        files from the SSH server using SFTP. Guacamole includes the
                                            <command>guacctl</command> utility which controls file
                                        downloads and uploads when run on the SSH server by the user
                                        over the SSH connection.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>sftp-root-directory</parameter></entry>
                                <entry>
                                    <para>The directory to expose to connected users via Guacamole's
                                            <link xmlns:xlink="http://www.w3.org/1999/xlink"
                                            linkend="file-browser">file browser</link>. If omitted,
                                        the root directory will be used by default.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="adding-ssh">
                <title>Adding an SSH connection</title>
                <indexterm>
                    <primary>SSH</primary>
                    <secondary>adding</secondary>
                </indexterm>
                <para>If you are using the default authentication built into Guacamole, and you wish
                    to grant access to a SSH connection to a particular user, you need to locate the
                        <code>&lt;authorize></code> section for that user within your
                        <filename>user-mapping.xml</filename>, and add a section like the following
                    within it:</para>
                <programlisting>&lt;connection name="<replaceable>Unique Name</replaceable>">
    &lt;protocol>ssh&lt;/protocol>
    &lt;param name="hostname"><replaceable>localhost</replaceable>&lt;/param>
    &lt;param name="port"><replaceable>22</replaceable>&lt;/param>
&lt;/connection></programlisting>
                <para>If added exactly as above, a new connection named "<replaceable>Unique
                        Name</replaceable>" will be available to the user associated with the
                        <code>&lt;authorize></code> section containing it. The connection will use
                    SSH to connect to <replaceable>localhost</replaceable> at port
                        <replaceable>22</replaceable>. Naturally, you will want to change some or
                    all of these values.</para>
                <para>If you want to login automatically rather than receive a login prompt upon
                    connecting, you can specify a username and password with additional
                        <code>&lt;param></code> tags. Other options are available for controlling
                    the font.</para>
                <para>Other authentication methods will provide documentation describing how to
                    configure new connections.</para>
            </section>
        </section>
        <section xml:id="telnet">
            <title>Telnet</title>
            <indexterm>
                <primary>telnet</primary>
            </indexterm>
            <para>Telnet is a text protocol and provides similar functionality to SSH. By nature, it
                is not encrypted, and does not provide support for file transfer. As far as graphics
                are concerned, Guacamole's telnet support works in the same manner as SSH: it
                emulates a terminal on the server side which renders to the Guacamole client's
                display.</para>
            <para>Telnet support for Guacamole is provided by the
                    <package>libguac-client-telnet</package> library, which will be installed as
                part of guacamole-server if the required dependencies are present during the
                build.</para>
            <section xml:id="telnet-network-parameters">
                <title>Network parameters</title>
                <para>Telnet connections require a hostname or IP address defining the destination
                    machine. Telnet is standardized to use port 23 and this will be the proper value
                    in most cases. You only need to specify the telnet port if you are not using the
                    standard port.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>telnet</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>hostname</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>hostname</secondary>
                                        </indexterm>The hostname or IP address of the telnet server
                                        Guacamole should connect to.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>port</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>port</secondary>
                                        </indexterm>The port the telnet server is listening on,
                                        usually 23. This parameter is optional. If this is not
                                        specified, the default of 23 will be used.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="telnet-authentication">
                <title>Authentication</title>
                <para>Telnet does not actually provide any standard means of authentication.
                    Authentication over telnet depends entirely on the login process running on the
                    server and is interactive. To cope with this, Guacamole provides non-standard
                    mechanisms for automatically passing the username and entering password. Whether
                    these mechanisms work depends on specific login process used by your telnet
                    server.</para>
                <para>The de-facto method for passing the username automatically via telnet is to
                    submit it via the <envar>USER</envar> environment variable, sent using the
                        <methodname>NEW-ENVIRON</methodname> option. This is the mechanism used by
                    most telnet clients, typically via the <option>-l</option> command-line
                    option.</para>
                <para>Passwords cannot typically be sent automatically - at least not as reliably as
                    the username. There is no <envar>PASSWORD</envar> environment variable (this
                    would actually be a horrible idea) nor any similar mechanism for passing the
                    password to the telnet login process, and most telnet clients provide no
                    built-in support for automatically entering the password. The best that can be
                    done is to heuristically detect the password prompt, and type the password on
                    behalf of the user when the prompt appears. The prescribed method for doing this
                    with a traditional command-line telnet is to use a utility like
                        <command>expect</command>. Guacamole provides similar functionality by
                    searching for the password prompt with a regular expression.</para>
                <para>If Guacamole receives a line of text which matches the regular expression, the
                    password is automatically sent. If no such line is ever received, the password
                    is not sent, and the user must type the password manually. Pressing any key
                    during this process cancels the heuristic password prompt detection.</para>
                <para>If the password prompt is not being detected properly, you can try using your
                    own regular expression by specifying it within the
                        <parameter>password-regex</parameter> parameter. The regular expression must
                    be written in the POSIX ERE dialect (the dialect typically used by
                        <command>egrep</command>).</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>telnet</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>username</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>username</secondary>
                                        </indexterm>The username to use to authenticate, if any.
                                        This parameter is optional. If not specified, or not
                                        supported by the telnet server, the login process on the
                                        telnet server will prompt you for your credentials. For this
                                        to work, your telnet server must support the
                                            <methodname>NEW-ENVIRON</methodname> option, and the
                                        telnet login process must pay attention to the
                                            <envar>USER</envar> environment variable. Most telnet
                                        servers satisfy this criteria.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>password</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>password</secondary>
                                        </indexterm>The password to use when attempting
                                        authentication, if any. This parameter is optional. If
                                        specified, your password will be typed on your behalf when
                                        the password prompt is detected.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>username-regex</parameter></entry>
                                <entry>
                                    <para>The regular expression to use when waiting for the
                                        username prompt. This parameter is optional. If not
                                        specified, a reasonable default built into Guacamole will be
                                        used. The regular expression must be written in the POSIX
                                        ERE dialect (the dialect typically used by
                                            <command>egrep</command>).</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>password-regex</parameter></entry>
                                <entry>
                                    <para>The regular expression to use when waiting for the
                                        password prompt. This parameter is optional. If not
                                        specified, a reasonable default built into Guacamole will be
                                        used. The regular expression must be written in the POSIX
                                        ERE dialect (the dialect typically used by
                                            <command>egrep</command>).</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>login-success-regex</parameter></entry>
                                <entry>
                                    <para>The regular expression to use when detecting that the
                                        login attempt has succeeded. This parameter is optional. If
                                        specified, the terminal display will not be shown to the
                                        user until text matching this regular expression has been
                                        received from the telnet server. The regular expression must
                                        be written in the POSIX ERE dialect (the dialect typically
                                        used by <command>egrep</command>).</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>login-failure-regex</parameter></entry>
                                <entry>
                                    <para>The regular expression to use when detecting that the
                                        login attempt has failed. This parameter is optional. If
                                        specified, the connection will be closed with an explicit
                                        login failure error if text matching this regular expression
                                        has been received from the telnet server. The regular
                                        expression must be written in the POSIX ERE dialect (the
                                        dialect typically used by <command>egrep</command>).</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="telnet-display-settings">
                <title>Display settings</title>
                <para>Guacamole's telnet support provides a display, but not in the same sense as a
                    remote desktop protocol like VNC or RDP. The display is a terminal emulator, and
                    thus provides options for configuring the font used and its size. In this case,
                        <emphasis>the chosen font must be installed on the server</emphasis>, as it
                    is the server that will handle rendering of characters to the terminal display,
                    not the client.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>telnet</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>color-scheme</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>color scheme</secondary>
                                        </indexterm>The color scheme to use for the terminal
                                        emulator used by telnet connections. It consists of a
                                        semicolon-separated series of name-value pairs. Each
                                        name-value pair is separated by a colon and assigns a
                                        value to a color in the terminal emulator palette. For
                                        example, to use blue text on white background by default,
                                        and change the red color to a purple shade, you would
                                        specify:</para>
                                    <informalexample>
                                        <programlisting>foreground: rgb:00/00/ff;
background: rgb:ff/ff/ff;
color9: rgb:80/00/80</programlisting>
                                    </informalexample>
                                    <para>This format is similar to the color configuration format
                                        used by Xterm, so Xterm color configurations can be easily
                                        adapted for Guacamole. This parameter is optional. If not
                                        specified, Guacamole will render text as gray over a black
                                        background.</para>
                                    <para>Possible color names are:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>foreground</constant></term>
                                            <listitem>
                                                <para>Set the default foreground color.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>background</constant></term>
                                            <listitem>
                                                <para>Set the default background color.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>color&lt;n&gt;</constant></term>
                                            <listitem>
                                                <para>Set the color at index <code>&lt;n&gt;</code>
                                                    on the Xterm 256-color palette. For example,
                                                    <code>color9</code> refers to the red color.
                                                    </para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                    <para>Possible color values are:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>rgb:RR/GG/BB</constant></term>
                                            <listitem>
                                                <para>Use the specified color in RGB format, with
                                                    each component in hexadecimal. For example,
                                                    <code>rgb:ff/00/00</code> specifies the color
                                                    red. Note that each hexadecimal component can be
                                                    one to four digits, but the effective values are
                                                    always zero-extended or truncated to two digits;
                                                    for example, <code>rgb:f/8/0</code>,
                                                    <code>rgb:f0/80/00</code>, and
                                                    <code>rgb:f0f/808/00f</code> all refer to the
                                                    same effective color.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>color&lt;n&gt;</constant></term>
                                            <listitem>
                                                <para>Use the color currently assigned to index
                                                    <code>&lt;n&gt;</code> on the Xterm 256-color
                                                    palette. For example, <code>color9</code>
                                                    specifies the current red color. Note that the
                                                    color value is used rather than the color
                                                    reference, so if <code>color9</code> is changed
                                                    later in the color scheme configuration, that
                                                    new color will not be reflected in this
                                                    assignment.</para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                    <para>For backward compatibility, Guacamole will also accept
                                        four special values as the color scheme parameter:</para>
                                    <variablelist>
                                        <varlistentry>
                                            <term><constant>black-white</constant></term>
                                            <listitem>
                                                <para>Black text over a white background.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>gray-black</constant></term>
                                            <listitem>
                                                <para>Gray text over a black background. This is the
                                                  default color scheme.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>green-black</constant></term>
                                            <listitem>
                                                <para>Green text over a black background.</para>
                                            </listitem>
                                        </varlistentry>
                                        <varlistentry>
                                            <term><constant>white-black</constant></term>
                                            <listitem>
                                                <para>White text over a black background.</para>
                                            </listitem>
                                        </varlistentry>
                                    </variablelist>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>font-name</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>font</secondary>
                                        </indexterm>The name of the font to use. This parameter is
                                        optional. If not specified, the default of "monospace" will
                                        be used instead.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>font-size</parameter></entry>
                                <entry>
                                    <para>The size of the font to use, in points. This parameter is
                                        optional. If not specified, the default of 12 will be used
                                        instead.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>scrollback</parameter></entry>
                                <entry>
                                    <para>The maximum number of rows to allow within the terminal
                                        scrollback buffer. This parameter is optional. If not
                                        specified, the scrollback buffer will be limited to a
                                        maximum of 1000 rows.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="telnet-terminal-behavior">
                <title>Controlling terminal behavior</title>
                <para>In most cases, the default behavior for a terminal works without modification.
                    However, when connecting to certain systems, particularly operating systems other
                    than Linux, the terminal behavior may need to be tweaked to allow it to operate
                    properly.  The settings in this section control that behavior.</para>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>telnet</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>backspace</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>backspace</secondary>
                                        </indexterm>This parameter controls the ASCII code that
                                        the backspace key sends to the remote system.  Under most
                                        circumstances this should not need to be adjusted; however,
                                        if, when pressing the backspace key, you see control characters
                                        (often either ^? or ^H) instead of seeing the text erased,
                                        you may need to adjust this parameter.  By default the terminal
                                        sends ASCII code 127 (Delete) if this option is not set.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>terminal-type</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>terminal type</secondary>
                                        </indexterm>This parameter sets the terminal emulator type
                                        string that is passed to the telnet server. This parameter
                                        is optional. If not specified,
                                        &quot;<code>linux</code>&quot; is used as the terminal
                                        emulator type by default.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="telnet-typescripts">
                <title>Text session recording (typescripts)</title>
                <para>The full, raw text content of telnet sessions, including timing information,
                    can be recorded automatically to a specified directory. This recording, also
                    known as a "typescript", will be written to two files within the directory
                    specified by <parameter>typescript-path</parameter>:
                            <filename><replaceable>NAME</replaceable></filename>, which contains the
                    raw text data, and <filename><replaceable>NAME</replaceable>.timing</filename>,
                    which contains timing information, where <replaceable>NAME</replaceable> is the
                    value provided for the <parameter>typescript-name</parameter> parameter.</para>
                <para>This format is compatible with the format used by the standard UNIX
                        <command>script</command> command, and can be replayed using
                        <command>scriptreplay</command> (if installed). For example, to replay a
                    typescript called "<replaceable>NAME</replaceable>", you would run:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>scriptreplay <replaceable>NAME</replaceable>.timing <replaceable>NAME</replaceable></userinput></screen>
                </informalexample>
                <important>
                    <para>Guacamole will never overwrite an existing recording. If necessary, a
                        numeric suffix like ".1", ".2", ".3", etc. will be appended to
                            <replaceable>NAME</replaceable> to avoid overwriting an existing
                        recording. If even appending a numeric suffix does not help, the session
                        will simply not be recorded.</para>
                </important>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>telnet</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>typescript-path</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>typescripts</secondary>
                                        </indexterm><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>text recording</secondary>
                                        </indexterm>The directory in which typescript files should
                                        be created. <emphasis>If a typescript needs to be recorded,
                                            this parameter is required.</emphasis> Specifying this
                                        parameter enables typescript recording. If this parameter is
                                        omitted, no typescript will be recorded.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>create-typescript-path</parameter></entry>
                                <entry>
                                    <para>If set to "true", the directory specified by the
                                            <parameter>typescript-path</parameter> parameter will
                                        automatically be created if it does not yet exist. Only the
                                        final directory in the path will be created - if other
                                        directories earlier in the path do not exist, automatic
                                        creation will fail, and an error will be logged.</para>
                                    <para><emphasis>This parameter is optional.</emphasis> By
                                        default, the directory specified by the
                                            <parameter>typescript-path</parameter> parameter will
                                        not automatically be created, and attempts to record
                                        typescripts in a non-existent directory will be logged as
                                        errors.</para>
                                    <para>This parameter only has an effect if typescript recording
                                        is enabled. If the <parameter>typescript-path</parameter> is
                                        not specified, recording of typescripts will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>typescript-name</parameter></entry>
                                <entry>
                                    <para>The base filename to use when determining the names for
                                        the data and timing files of the typescript. <emphasis>This
                                            parameter is optional.</emphasis> If omitted, the value
                                        "typescript" will be used instead.</para>
                                    <para>Each typescript consists of two files which are created
                                        within the directory specified by
                                            <parameter>typescript-path</parameter>:
                                                <filename><replaceable>NAME</replaceable></filename>,
                                        which contains the raw text data, and
                                                <filename><replaceable>NAME</replaceable>.timing</filename>,
                                        which contains timing information, where
                                            <replaceable>NAME</replaceable> is the value provided
                                        for the <parameter>typescript-name</parameter>
                                        parameter.</para>
                                    <para>This parameter only has an effect if typescript recording
                                        is enabled. If the <parameter>typescript-path</parameter> is
                                        not specified, recording of typescripts will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="telnet-recording">
                <title>Graphical session recording</title>
                <para>In addition to text-based recordings, telnet sessions can be recorded
                    graphically. These recordings take the form of Guacamole protocol dumps and are
                    recorded automatically to a specified directory. Recordings can be subsequently
                    translated to a normal video stream using the <command>guacenc</command> utility
                    provided with guacamole-server.</para>
                <para>For example, to produce a video called "<replaceable>NAME</replaceable>.m4v"
                    from the recording "<replaceable>NAME</replaceable>", you would run:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>guacenc <replaceable>/path/to/recording/NAME</replaceable></userinput></screen>
                </informalexample>
                <para>The <command>guacenc</command> utility has additional options for overriding
                    default behavior, including tweaking the output format, which are documented in
                    detail within the manpage:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>man guacenc</userinput></screen>
                </informalexample>
                <para>If recording of key events is explicitly enabled using the
                        <parameter>recording-include-keys</parameter> parameter, recordings can also
                    be translated into human-readable interpretations of the keys pressed during the
                    session using the <command>guaclog</command> utility. The usage of
                        <command>guaclog</command> is analogous to <command>guacenc</command>, and
                    results in the creation of a new text file containing the interpreted
                    events:</para>
                <informalexample>
                    <screen><prompt>$</prompt> <userinput>guaclog <replaceable>/path/to/recording/NAME</replaceable></userinput><computeroutput>
guaclog: INFO: Guacamole input log interpreter (guaclog) version 1.1.0
guaclog: INFO: 1 input file(s) provided.
guaclog: INFO: Writing input events from "<replaceable>/path/to/recording/NAME</replaceable>" to "<replaceable annotations="">/path/to/recording/NAME</replaceable>.txt" ...
guaclog: INFO: All files interpreted successfully.</computeroutput>
<prompt>$</prompt> </screen>
                </informalexample>
                <important>
                    <para>Guacamole will never overwrite an existing recording. If necessary, a
                        numeric suffix like ".1", ".2", ".3", etc. will be appended to
                            <replaceable>NAME</replaceable> to avoid overwriting an existing
                        recording. If even appending a numeric suffix does not help, the session
                        will simply not be recorded.</para>
                </important>
                <informaltable frame="all">
                    <indexterm>
                        <primary>parameters</primary>
                        <secondary>telnet</secondary>
                    </indexterm>
                    <tgroup cols="2">
                        <colspec colname="c1" colnum="1" colwidth="1*"/>
                        <colspec colname="c2" colnum="2" colwidth="3.55*"/>
                        <thead>
                            <row>
                                <entry>Parameter name</entry>
                                <entry>Description</entry>
                            </row>
                        </thead>
                        <tbody>
                            <row>
                                <entry><parameter>recording-path</parameter></entry>
                                <entry>
                                    <para><indexterm>
                                            <primary>telnet</primary>
                                            <secondary>graphical recording</secondary>
                                        </indexterm>The directory in which screen recording files
                                        should be created. <emphasis>If a graphical recording needs
                                            to be created, then this parameter is
                                            required.</emphasis> Specifying this parameter enables
                                        graphical screen recording. If this parameter is omitted, no
                                        graphical recording will be created.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>create-recording-path</parameter></entry>
                                <entry>
                                    <para>If set to "true", the directory specified by the
                                            <parameter>recording-path</parameter> parameter will
                                        automatically be created if it does not yet exist. Only the
                                        final directory in the path will be created - if other
                                        directories earlier in the path do not exist, automatic
                                        creation will fail, and an error will be logged.</para>
                                    <para><emphasis>This parameter is optional.</emphasis> By
                                        default, the directory specified by the
                                            <parameter>recording-path</parameter> parameter will not
                                        automatically be created, and attempts to create recordings
                                        within a non-existent directory will be logged as
                                        errors.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-name</parameter></entry>
                                <entry>
                                    <para>The filename to use for any created recordings.
                                            <emphasis>This parameter is optional.</emphasis> If
                                        omitted, the value "recording" will be used instead.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-exclude-output</parameter></entry>
                                <entry>
                                    <para>If set to "true", graphical output and other data normally
                                        streamed from server to client will be excluded from the
                                        recording, producing a recording which contains only user
                                        input events. <emphasis>This parameter is
                                            optional.</emphasis> If omitted, graphical output will
                                        be included in the recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-exclude-mouse</parameter></entry>
                                <entry>
                                    <para>If set to "true", user mouse events will be excluded from
                                        the recording, producing a recording which lacks a visible
                                        mouse cursor. <emphasis>This parameter is
                                            optional.</emphasis> If omitted, mouse events will be
                                        included in the recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                            <row>
                                <entry><parameter>recording-include-keys</parameter></entry>
                                <entry>
                                    <para>If set to "true", user key events will be included in the
                                        recording. The recording can subsequently be passed through
                                        the <command>guaclog</command> utility to produce a
                                        human-readable interpretation of the keys pressed during the
                                        session. <emphasis>This parameter is optional.</emphasis> If
                                        omitted, key events will be not included in the
                                        recording.</para>
                                    <para>This parameter only has an effect if graphical recording
                                        is enabled. If the <parameter>recording-path</parameter> is
                                        not specified, graphical session recording will be disabled,
                                        and this parameter will be ignored.</para>
                                </entry>
                            </row>
                        </tbody>
                    </tgroup>
                </informaltable>
            </section>
            <section xml:id="adding-telnet">
                <title>Adding a telnet connection</title>
                <indexterm>
                    <primary>telnet</primary>
                    <secondary>adding</secondary>
                </indexterm>
                <para>If you are using the default authentication built into Guacamole, and you wish
                    to grant access to a telnet connection to a particular user, you need to locate
                    the <code>&lt;authorize></code> section for that user within your
                        <filename>user-mapping.xml</filename>, and add a section like the following
                    within it:</para>
                <programlisting>&lt;connection name="<replaceable>Unique Name</replaceable>">
    &lt;protocol>telnet&lt;/protocol>
    &lt;param name="hostname"><replaceable>localhost</replaceable>&lt;/param>
    &lt;param name="port"><replaceable>23</replaceable>&lt;/param>
&lt;/connection></programlisting>
                <para>If added exactly as above, a new connection named "<replaceable>Unique
                        Name</replaceable>" will be available to the user associated with the
                        <code>&lt;authorize></code> section containing it. The connection will use
                    telnet to connect to <replaceable>localhost</replaceable> at port
                        <replaceable>23</replaceable>. Naturally, you will want to change some or
                    all of these values.</para>
                <para>As telnet is inherently insecure compared to SSH, you should use SSH instead
                    wherever possible. If Guacamole is set up to use HTTPS then communication with
                    the Guacamole <emphasis>client</emphasis> will be encrypted, but communication
                    between guacd and the telnet server will still be unencrypted. You should not
                    use telnet unless the network between guacd and the telnet server is
                    trusted.</para>
            </section>
        </section>
        <section xml:id="parameter-tokens">
            <title>Parameter tokens</title>
            <para>The values of connection parameters can contain "tokens" which will be replaced by
                Guacamole when used. These tokens allow the values of connection parameters to vary
                dynamically by the user using the connection, and provide a simple means of
                forwarding authentication information without storing that information in the
                connection configuration itself, so long as the remote desktop connection uses the
                same credentials as Guacamole.</para>
            <para>Each token is of the form
                    <varname>${<replaceable>TOKEN_NAME</replaceable>}</varname>, where
                    <replaceable>TOKEN_NAME</replaceable> is some descriptive name for the value the
                token represents. Tokens with no corresponding value will never be replaced, but
                should you need such text within your connection parameters, and wish to guarantee
                that this text will not be replaced with a token value, you can escape the token by
                adding an additional leading "$", as in "$${TOKEN_NAME}".</para>
            <variablelist>
                <varlistentry>
                    <term><varname>${GUAC_USERNAME}</varname></term>
                    <listitem>
                        <para>The username of the current Guacamole user. When a user accesses a
                            connection, this token will be dynamically replaced with the username
                            they provided when logging in to Guacamole.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><varname>${GUAC_PASSWORD}</varname></term>
                    <listitem>
                        <para>The password of the current Guacamole user. When a user accesses a
                            connection, this token will be dynamically replaced with the password
                            they used when logging in to Guacamole.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><varname>${GUAC_CLIENT_ADDRESS}</varname></term>
                    <listitem>
                        <para>The IPv4 or IPv6 address of the current Guacamole user. This will be
                            the address of the client side of the HTTP connection to the Guacamole
                            server at the time the current user logged in.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><varname>${GUAC_CLIENT_HOSTNAME}</varname></term>
                    <listitem>
                        <para>The hostname of the current Guacamole user. This will be the hostname
                            of the client side of the HTTP connection to the Guacamole server at the
                            time the current user logged in. If no such hostname can be determined,
                            the IPv4 or IPv6 address will be used instead, and this token will be
                            equivalent to <varname>${GUAC_CLIENT_ADDRESS}</varname>.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><varname>${GUAC_DATE}</varname></term>
                    <listitem>
                        <para>The current date in the local time zone of the Guacamole server. This
                            will be written in "YYYYMMDD" format, where "YYYY" is the year, "MM" is
                            the month number, and "DD" is the day of the month, all zero-padded.
                            When a user accesses a connection, this token will be dynamically
                            replaced with the date that the connection began.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term><varname>${GUAC_TIME}</varname></term>
                    <listitem>
                        <para>The current time in the local time zone of the Guacamole server. This
                            will be written in "HHMMSS" format, where "HH" is hours in 24-hour time,
                            "MM" is minutes, and "SS" is seconds, all zero-padded. When a user
                            accesses a connection, this token will be dynamically replaced with the
                            time that the connection began.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
            <para>Note that these tokens are replaced dynamically each time a connection is used. If
                two different users access the same connection at the same time, both users will be
                connected independently of each other using different sets of connection
                parameters.</para>
        </section>
    </section>
    <section xml:id="guacd.conf">
        <title>Configuring guacd</title>
        <para><indexterm>
                <primary>guacd.conf</primary>
            </indexterm>guacd is configured with a configuration file called
                <filename>guacd.conf</filename>, by default located in
                <filename>/etc/guacamole</filename>. This file follows a simple, INI-like
            format:</para>
        <informalexample>
            <programlisting>#
# guacd configuration file
#

[daemon]

pid_file = /var/run/guacd.pid
log_level = info

[server]

bind_host = localhost
bind_port = 4822

#
# The following parameters are valid only if
# guacd was built with SSL support.
#

[ssl]

server_certificate = /etc/ssl/certs/guacd.crt
server_key = /etc/ssl/private/guacd.key</programlisting>
        </informalexample>
        <para>Configuration options are given as parameter/value pairs, where the name of the
            parameter is specified on the left side of an "<code>=</code>", and the value is
            specified on the right. Each parameter must occur within a proper section, indicated by
            a section name within brackets. The names of these sections are important; it is the
            pairing of a section name with a parameter that constitutes the fully-qualified
            parameter being set.</para>
        <para>For the sake of documentation and readability, comments can be added anywhere within
            guacd.conf using "<code>#</code>" symbols. All text following a "<code>#</code>" until
            end-of-line will be ignored.</para>
        <para>If you need to include special characters within the value of a parameter, such as
            whitespace or any of the above symbols, you can do so by placing the parameter within
            double quotes:</para>
        <informalexample>
            <programlisting>[ssl]

# Whitespace is legal within double quotes ...
server_certificate = "/etc/ssl/my certs/guacd.crt"

# ... as are other special symbols
server_key = "/etc/ssl/#private/guacd.key"</programlisting>
        </informalexample>
        <para>Note that even within double quotes, some characters still have special meaning, such
            as the double quote itself or newline characters. If you need to include these, they
            must be "escaped" with a backslash:</para>
        <informalexample>
            <programlisting># Parameter value containing a double quote
parameter = "some\"value"

# Parameter value containing newline characters
parameter2 = "line1\
line2\
line3"

# Parameter value containing backslashes
parameter3 = "c:\\windows\\path\\to\\file.txt"</programlisting>
        </informalexample>
        <para>Don't worry too much about the more complex formatting examples - they are only rarely
            necessary, and guacd will complain with parsing errors if the configuration file is
            somehow invalid. To ensure parameter values are entered correctly, just follow the
            following guidelines:</para>
        <orderedlist>
            <listitem>
                <para>If the value contains no special characters, just include it as-is.</para>
            </listitem>
            <listitem>
                <para>If the value contains any special characters (whitespace, newlines,
                        <code>#</code>, <code>\</code>, or <code>"</code>), enclose the entire value
                    within double quotes.</para>
            </listitem>
            <listitem>
                <para>If the value is enclosed within double quotes, escape newlines,
                    <code>\</code>, and <code>"</code> with a backslash.</para>
            </listitem>
        </orderedlist>
        <table frame="all">
            <title>guacd.conf parameters</title>
            <indexterm>
                <primary>parameters</primary>
                <secondary>guacd.conf</secondary>
            </indexterm>
            <tgroup cols="3">
                <colspec colname="c1" colnum="1" colwidth="1*"/>
                <colspec colname="c2" colnum="2" colwidth="1.85*"/>
                <colspec colname="c3" colnum="3" colwidth="5.55*"/>
                <thead>
                    <row>
                        <entry>Section</entry>
                        <entry>Name</entry>
                        <entry>Description</entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry><parameter>daemon</parameter></entry>
                        <entry><parameter>pid_file</parameter></entry>
                        <entry>
                            <para><indexterm>
                                    <primary><parameter>pid_file</parameter></primary>
                                </indexterm>The name of the file in which the PID of the main guacd
                                process should be written. This is mainly needed for startup
                                scripts, which need to monitor the state of guacd, killing it if
                                necessary. If this parameter is specified, the user running guacd
                                must have sufficient permissions to create or modify the specified
                                file, or startup will fail.</para>
                        </entry>
                    </row>
                    <row>
                        <entry><parameter>daemon</parameter></entry>
                        <entry><parameter>log_level</parameter></entry>
                        <entry>
                            <para><indexterm>
                                    <primary>logging</primary>
                                    <secondary>guacd</secondary>
                                </indexterm><indexterm>
                                    <primary>guacd</primary>
                                    <secondary>logging</secondary>
                                </indexterm><indexterm>
                                    <primary><parameter>log_level</parameter></primary>
                                </indexterm>The maximum level at which guacd will log messages to
                                syslog and, if running in the foreground, the console. If omitted,
                                the default level of <constant>info</constant> will be used.</para>
                            <para>Legal values are <constant>trace</constant>,
                                    <constant>debug</constant>, <constant>info</constant>,
                                    <constant>warning</constant>, and
                                <constant>error</constant>.</para>
                        </entry>
                    </row>
                    <row>
                        <entry><parameter>server</parameter></entry>
                        <entry><parameter>bind_host</parameter></entry>
                        <entry>
                            <para><indexterm>
                                    <primary><parameter>bind_host</parameter></primary>
                                </indexterm>The host that guacd should bind to when listening for
                                connections. If unspecified, guacd will bind to localhost, and only
                                connections from within the server hosting guacd will
                                succeed.</para>
                        </entry>
                    </row>
                    <row>
                        <entry><parameter>server</parameter></entry>
                        <entry><parameter>bind_port</parameter></entry>
                        <entry>
                            <para><indexterm>
                                    <primary><parameter>bind_port</parameter></primary>
                                </indexterm>The port that guacd should bind to when listening for
                                connections. If unspecified, port 4822 will be used.</para>
                        </entry>
                    </row>
                    <row>
                        <entry><parameter>ssl</parameter></entry>
                        <entry><parameter>server_certificate</parameter></entry>
                        <entry>
                            <para><indexterm>
                                    <primary><parameter>server_certificate</parameter></primary>
                                </indexterm>The filename of the certificate to use for SSL
                                encryption of the Guacamole protocol. If this option is specified,
                                SSL encryption will be enabled, and the Guacamole web application
                                will need to be configured within
                                    <filename>guacamole.properties</filename> to use SSL as
                                well.</para>
                        </entry>
                    </row>
                    <row>
                        <entry><parameter>ssl</parameter></entry>
                        <entry><parameter>server_key</parameter></entry>
                        <entry>
                            <para><indexterm>
                                    <primary><parameter>server_key</parameter></primary>
                                </indexterm>The filename of the private key to use for SSL
                                encryption of the Guacamole protocol. If this option is specified,
                                SSL encryption will be enabled, and the Guacamole web application
                                will need to be configured within
                                    <filename>guacamole.properties</filename> to use SSL as
                                well.</para>
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </table>
        <para>You can also affect the configuration of guacd with command-line options. If given,
            these options take precendence over the system-wide configuration file:</para>
        <variablelist>
            <varlistentry>
                <term><option>-b <replaceable>HOST</replaceable></option></term>
                <listitem>
                    <para>Changes the host or address that guacd listens on.</para>
                    <para>This corresponds to the <parameter>bind_host</parameter> parameter within
                        the <parameter>server</parameter> section of
                        <filename>guacd.conf</filename>.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><option>-l <replaceable>PORT</replaceable></option></term>
                <listitem>
                    <para>Changes the port that guacd listens on (the default is port 4822).</para>
                    <para>This corresponds to the <parameter>bind_port</parameter> parameter within
                        the <parameter>server</parameter> section of
                        <filename>guacd.conf</filename>.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><option>-p <replaceable>PIDFILE</replaceable></option></term>
                <listitem>
                    <para>Causes guacd to write the PID of the daemon process to the specified file.
                        This is useful for init scripts and is used by the provided init
                        script.</para>
                    <para>This corresponds to the <parameter>pid_file</parameter> parameter within
                        the <parameter>daemon</parameter> section of
                        <filename>guacd.conf</filename>.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><option>-L <replaceable>LEVEL</replaceable></option></term>
                <listitem>
                    <para>Sets the maximum level at which guacd will log messages to syslog and, if
                        running in the foreground, the console. Legal values are
                            <constant>trace</constant>, <constant>debug</constant>,
                            <constant>info</constant>, <constant>warning</constant>, and
                            <constant>error</constant>. The default value is
                            <constant>info</constant>.</para>
                    <para>This corresponds to the <parameter>log_level</parameter> parameter within
                        the <parameter>daemon</parameter> section of
                        <filename>guacd.conf</filename>.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><option>-f</option></term>
                <listitem>
                    <para>Causes guacd to run in the foreground, rather than automatically forking
                        into the background.</para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>If guacd was built with support for SSL, data sent via the Guacamole protocol can be
            encrypted with SSL if an SSL certificate and private key are given with the following
            options:</para>
        <variablelist>
            <varlistentry>
                <term><option>-C <replaceable>CERTIFICATE</replaceable></option></term>
                <listitem>
                    <para>The filename of the certificate to use for SSL encryption of the Guacamole
                        protocol. If this option is specified, SSL encryption will be enabled, and
                        the Guacamole web application will need to be configured within
                            <filename>guacamole.properties</filename> to use SSL as well.</para>
                    <para>This corresponds to the <parameter>server_certificate</parameter>
                        parameter within the <parameter>ssl</parameter> section of
                            <filename>guacd.conf</filename>.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><option>-K <replaceable>KEY</replaceable></option></term>
                <listitem>
                    <para>The filename of the private key to use for SSL encryption of the Guacamole
                        protocol. If this option is specified, SSL encryption will be enabled, and
                        the Guacamole web application will need to be configured within
                            <filename>guacamole.properties</filename> to use SSL as well.</para>
                    <para>This corresponds to the <parameter>server_key</parameter> parameter within
                        the <parameter>ssl</parameter> section of
                        <filename>guacd.conf</filename>.</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </section>

</chapter>
