You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by mj...@apache.org on 2017/07/10 05:23:14 UTC

incubator-guacamole-website git commit: Deploy draft release notes for 0.9.13-incubating (RC1).

Repository: incubator-guacamole-website
Updated Branches:
  refs/heads/asf-site 4c9581eac -> 60e8a403b


Deploy draft release notes for 0.9.13-incubating (RC1).


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/commit/60e8a403
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/tree/60e8a403
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/diff/60e8a403

Branch: refs/heads/asf-site
Commit: 60e8a403bb4d74168665a5fd9cb5e50b2ba11739
Parents: 4c9581e
Author: Michael Jumper <mj...@apache.org>
Authored: Sun Jul 9 22:22:58 2017 -0700
Committer: Michael Jumper <mj...@apache.org>
Committed: Sun Jul 9 22:22:58 2017 -0700

----------------------------------------------------------------------
 content/releases/0.9.13-incubating/index.html | 694 +++++++++++++++++++++
 1 file changed, 694 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/60e8a403/content/releases/0.9.13-incubating/index.html
----------------------------------------------------------------------
diff --git a/content/releases/0.9.13-incubating/index.html b/content/releases/0.9.13-incubating/index.html
new file mode 100644
index 0000000..f36b189
--- /dev/null
+++ b/content/releases/0.9.13-incubating/index.html
@@ -0,0 +1,694 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+    <head>
+    <link rel="stylesheet" href="/styles/main.css">
+    <link rel="icon" type="image/png" href="/images/guacamole-logo-64.png"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi"/>
+    <meta charset="UTF-8"/>
+    <title>Apache Guacamole (incubating): 0.9.13-incubating</title>
+</head>
+
+
+    <body>
+
+        <!-- Header -->
+<div id="header">
+    <h1><a href="/">Apache Guacamole (incubating)</a></h1>
+    <ul id="navigation" class="menu">
+        
+        
+        
+        
+            
+        
+            
+        
+            
+        
+            
+        
+            
+        
+            
+        
+            
+        
+            
+                <li><a
+                    
+                        href="/releases/"
+                    
+                    
+                        class="download"
+                    >Downloads</a></li>
+            
+        
+            
+                <li><a
+                    
+                        href="https://github.com/search?utf8=%E2%9C%93&q=repo%3Aapache%2Fincubator-guacamole-server+repo%3Aapache%2Fincubator-guacamole-client+repo%3Aapache%2Fincubator-guacamole-website&type=Repositories&ref=searchresults"
+                    
+                    
+                        class="github"
+                    >GitHub</a></li>
+            
+        
+            
+                <li><a
+                    
+                        href="/api-documentation/"
+                    
+                    >API</a></li>
+            
+        
+            
+                <li><a
+                    
+                        href="https://issues.apache.org/jira/browse/GUACAMOLE/"
+                    
+                    >JIRA</a></li>
+            
+        
+            
+                <li><a
+                    
+                        href="/doc/gug/"
+                    
+                    >Manual</a></li>
+            
+        
+            
+                <li><a
+                    
+                        href="/open-source/"
+                    
+                    >Contributing</a></li>
+            
+        
+            
+                <li><a
+                    
+                        href="/support/"
+                    
+                    >Help / Support</a></li>
+            
+        
+    </ul>
+</div>
+
+
+        <!-- Content -->
+        <div id="page">
+            <div id="content">
+                
+    <div class="draft-disclaimer">
+        <p><strong>Apache Guacamole 0.9.13-incubating has not yet been
+        released!</strong> The artifacts and release notes below are drafts for
+        a proposed release of Apache Guacamole which has not yet occurred.</p>
+    </div>
+
+
+<h1>Apache Guacamole 0.9.13-incubating</h1>
+
+<div id="links">
+
+    
+    
+        <h2>Release documentation</h2>
+    
+    <ul>
+        
+            <li><a href="/doc/0.9.13-incubating/gug">Manual</a></li>
+        
+            <li><a href="/doc/0.9.13-incubating/guacamole-common">guacamole-common</a></li>
+        
+            <li><a href="/doc/0.9.13-incubating/guacamole-common-js">guacamole-common-js</a></li>
+        
+            <li><a href="/doc/0.9.13-incubating/guacamole-ext">guacamole-ext</a></li>
+        
+            <li><a href="/doc/0.9.13-incubating/libguac">libguac</a></li>
+        
+    </ul>
+
+
+
+</div>
+
+<p>Apache Guacamole is split into two subprojects: "guacamole-client", the
+HTML5 web application which serves the Guacamole client to users, and
+"guacamole-server", the remote desktop proxy which the web application
+communicates with. The source code for each of these may be downloaded
+below.</p>
+
+<!-- Source archives -->
+<div class="release-downloads">
+    
+    <table>
+        
+            <tr>
+                
+                
+                
+                <td><a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/source/guacamole-client-0.9.13-incubating.tar.gz"
+                       onclick="trackDownload(
+                           'click',
+                           'guacamole-client-0.9.13-incubating.tar.gz'
+                       )"
+                       oncontextmenu="trackDownload(
+                           'menu',
+                           'guacamole-client-0.9.13-incubating.tar.gz'
+                       )">guacamole-client-0.9.13-incubating.tar.gz</a></td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/source/guacamole-client-0.9.13-incubating.tar.gz.md5">MD5</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/source/guacamole-client-0.9.13-incubating.tar.gz.sha">SHA</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/source/guacamole-client-0.9.13-incubating.tar.gz.asc">PGP</a> ]</td>
+            </tr>
+        
+            <tr>
+                
+                
+                
+                <td><a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/source/guacamole-server-0.9.13-incubating.tar.gz"
+                       onclick="trackDownload(
+                           'click',
+                           'guacamole-server-0.9.13-incubating.tar.gz'
+                       )"
+                       oncontextmenu="trackDownload(
+                           'menu',
+                           'guacamole-server-0.9.13-incubating.tar.gz'
+                       )">guacamole-server-0.9.13-incubating.tar.gz</a></td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/source/guacamole-server-0.9.13-incubating.tar.gz.md5">MD5</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/source/guacamole-server-0.9.13-incubating.tar.gz.sha">SHA</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/source/guacamole-server-0.9.13-incubating.tar.gz.asc">PGP</a> ]</td>
+            </tr>
+        
+    </table>
+
+
+</div>
+
+<p>If you do not wish to build Apache Guacamole entirely from source, pre-built
+versions of the web application (.war) and all extensions are provided here in
+binary form for convenience.  <strong>Please note that guacamole-server must
+still be built and installed from source.</strong></p>
+
+<!-- All binaries -->
+<div class="release-downloads">
+    
+    <table>
+        
+            <tr>
+                
+                
+                
+                <td><a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-0.9.13-incubating.war"
+                       onclick="trackDownload(
+                           'click',
+                           'guacamole-0.9.13-incubating.war'
+                       )"
+                       oncontextmenu="trackDownload(
+                           'menu',
+                           'guacamole-0.9.13-incubating.war'
+                       )">guacamole-0.9.13-incubating.war</a></td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-0.9.13-incubating.war.md5">MD5</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-0.9.13-incubating.war.sha">SHA</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-0.9.13-incubating.war.asc">PGP</a> ]</td>
+            </tr>
+        
+            <tr>
+                
+                
+                
+                <td><a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-cas-0.9.13-incubating.tar.gz"
+                       onclick="trackDownload(
+                           'click',
+                           'guacamole-auth-cas-0.9.13-incubating.tar.gz'
+                       )"
+                       oncontextmenu="trackDownload(
+                           'menu',
+                           'guacamole-auth-cas-0.9.13-incubating.tar.gz'
+                       )">guacamole-auth-cas-0.9.13-incubating.tar.gz</a></td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-cas-0.9.13-incubating.tar.gz.md5">MD5</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-cas-0.9.13-incubating.tar.gz.sha">SHA</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-cas-0.9.13-incubating.tar.gz.asc">PGP</a> ]</td>
+            </tr>
+        
+            <tr>
+                
+                
+                
+                <td><a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-duo-0.9.13-incubating.tar.gz"
+                       onclick="trackDownload(
+                           'click',
+                           'guacamole-auth-duo-0.9.13-incubating.tar.gz'
+                       )"
+                       oncontextmenu="trackDownload(
+                           'menu',
+                           'guacamole-auth-duo-0.9.13-incubating.tar.gz'
+                       )">guacamole-auth-duo-0.9.13-incubating.tar.gz</a></td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-duo-0.9.13-incubating.tar.gz.md5">MD5</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-duo-0.9.13-incubating.tar.gz.sha">SHA</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-duo-0.9.13-incubating.tar.gz.asc">PGP</a> ]</td>
+            </tr>
+        
+            <tr>
+                
+                
+                
+                <td><a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-jdbc-0.9.13-incubating.tar.gz"
+                       onclick="trackDownload(
+                           'click',
+                           'guacamole-auth-jdbc-0.9.13-incubating.tar.gz'
+                       )"
+                       oncontextmenu="trackDownload(
+                           'menu',
+                           'guacamole-auth-jdbc-0.9.13-incubating.tar.gz'
+                       )">guacamole-auth-jdbc-0.9.13-incubating.tar.gz</a></td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-jdbc-0.9.13-incubating.tar.gz.md5">MD5</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-jdbc-0.9.13-incubating.tar.gz.sha">SHA</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-jdbc-0.9.13-incubating.tar.gz.asc">PGP</a> ]</td>
+            </tr>
+        
+            <tr>
+                
+                
+                
+                <td><a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-header-0.9.13-incubating.tar.gz"
+                       onclick="trackDownload(
+                           'click',
+                           'guacamole-auth-header-0.9.13-incubating.tar.gz'
+                       )"
+                       oncontextmenu="trackDownload(
+                           'menu',
+                           'guacamole-auth-header-0.9.13-incubating.tar.gz'
+                       )">guacamole-auth-header-0.9.13-incubating.tar.gz</a></td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-header-0.9.13-incubating.tar.gz.md5">MD5</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-header-0.9.13-incubating.tar.gz.sha">SHA</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-header-0.9.13-incubating.tar.gz.asc">PGP</a> ]</td>
+            </tr>
+        
+            <tr>
+                
+                
+                
+                <td><a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-ldap-0.9.13-incubating.tar.gz"
+                       onclick="trackDownload(
+                           'click',
+                           'guacamole-auth-ldap-0.9.13-incubating.tar.gz'
+                       )"
+                       oncontextmenu="trackDownload(
+                           'menu',
+                           'guacamole-auth-ldap-0.9.13-incubating.tar.gz'
+                       )">guacamole-auth-ldap-0.9.13-incubating.tar.gz</a></td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-ldap-0.9.13-incubating.tar.gz.md5">MD5</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-ldap-0.9.13-incubating.tar.gz.sha">SHA</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-ldap-0.9.13-incubating.tar.gz.asc">PGP</a> ]</td>
+            </tr>
+        
+            <tr>
+                
+                
+                
+                <td><a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-noauth-0.9.13-incubating.tar.gz"
+                       onclick="trackDownload(
+                           'click',
+                           'guacamole-auth-noauth-0.9.13-incubating.tar.gz'
+                       )"
+                       oncontextmenu="trackDownload(
+                           'menu',
+                           'guacamole-auth-noauth-0.9.13-incubating.tar.gz'
+                       )">guacamole-auth-noauth-0.9.13-incubating.tar.gz</a></td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-noauth-0.9.13-incubating.tar.gz.md5">MD5</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-noauth-0.9.13-incubating.tar.gz.sha">SHA</a> ]</td>
+                <td>[ <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/0.9.13-incubating-RC1/binary/guacamole-auth-noauth-0.9.13-incubating.tar.gz.asc">PGP</a> ]</td>
+            </tr>
+        
+    </table>
+
+
+</div>
+
+<!-- Release notes -->
+<div id="release-notes">
+    <h1>Release notes</h1>
+    <p>The 0.9.13-incubating release features new support for CAS single sign-on,
+automatic failover to connections within the same connection group, and fixes
+for issues in all supported protocols. The JavaScript API has also been
+extended to provide for in-browser playback of screen recordings, and the
+extension API now allows custom REST services to be defined.</p>
+
+<p><strong>This release contains changes which break compatibility with past releases.</strong>
+Please see the <a href="#deprecation--compatibility-notes">deprecation / compatibility
+notes</a> section for more information.</p>
+
+<h2 id="support-for-cas-single-sign-on">Support for CAS single sign-on</h2>
+
+<p><a href="https://en.wikipedia.org/wiki/Central_Authentication_Service">Central Authentication
+Service</a> (CAS),
+is a single sign-on solution commonly used by universities to unify
+authentication across various web applications which are otherwise independent.
+The newly-implemented guacamole-auth-cas extension allows Guacamole to delegate
+authentication to CAS, relying on CAS to determine the identity and validity
+of each user.</p>
+
+<p>Note that this new extension only deals with determining the identity of users
+that have authenticated with CAS, and redirecting unauthenticated users to the
+CAS system to authenticate. The details of the connections available to each
+user must be provided via another extension, such as the <a href="/doc/0.9.13-incubating/gug/jdbc-auth.html">database
+authentication</a>.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-204">GUACAMOLE-204</a> - Support CAS Single Sign On</li>
+</ul>
+
+<h2 id="correction-to-duo-documentation">Correction to Duo documentation</h2>
+
+<p>The documentation for Guacamole’s Duo extension previously stated that Duo’s
+“Auth API” was required. This is incorrect; though the “Auth API” will work,
+Guacamole actually uses the “Web SDK”. This is particularly important, as Duo
+recently ceased offering the “Auth API” for free, whereas the “Web SDK” is
+still available for free accounts.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-219">GUACAMOLE-219</a> - Duo documentation should point to “Web SDK”, not “Auth API”</li>
+</ul>
+
+<h2 id="in-browser-playback-of-screen-recordings">In-browser playback of screen recordings</h2>
+
+<p>Guacamole’s screen recordings are actually copies of the same exact data which
+would be fed to the Guacamole client over the course of the connection, thus
+the JavaScript API already had much of what was necessary to support in-browser
+playback of recordings. The main things lacking were a means of reading a
+Guacamole protocol stream from a static resource, and a means of seeking
+backward or forward within that stream.</p>
+
+<p>This missing API-level functionality is now provided through the new
+<a href="/doc/0.9.13-incubating/guacamole-common-js/Guacamole.StaticHTTPTunnel.html"><code class="highlighter-rouge">Guacamole.StaticHTTPTunnel</code></a> and <a href="/doc/0.9.13-incubating/guacamole-common-js/Guacamole.SessionRecording.html"><code class="highlighter-rouge">Guacamole.SessionRecording</code></a> objects respectively,
+and an example demonstrating this use, <a href="https://github.com/apache/incubator-guacamole-client/tree/de12b683d746129ddc8b34425ed6e40b618c91d6/doc/guacamole-playback-example">guacamole-playback-example</a>, is provided within the guacamole-client source.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-250">GUACAMOLE-250</a> - Implement support for in-browser playback of screen recordings</li>
+</ul>
+
+<h2 id="noauth-now-deprecated">NoAuth now deprecated</h2>
+
+<p>Over the years since its introduction, the NoAuth extension has grown to become
+a consistent source of issues for both users and the Guacamole development
+community, and simply using the extension has become de facto bad practice. As
+such, <strong>the NoAuth extension is now deprecated</strong>.</p>
+
+<p>To ease migration away from its use, the extension remains part of the
+Guacamole source and a convenience binary of the extension is provided with
+this release, but its continued use is not recommended and it will eventually
+be removed. <strong>Integrations of Guacamole should instead use the extension API</strong>,
+or the core Guacamole API for absolute low-level control.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-256">GUACAMOLE-256</a> - Deprecate the NoAuth extension</li>
+</ul>
+
+<h2 id="sshtelnet-support-for-256-color-console-codes">SSH/telnet support for 256-color console codes</h2>
+
+<p>Guacamole has historically supported only the subset of console codes
+implemented by the Linux kernel’s built-in terminal emulator. As part of a
+larger, ongoing effort to <a href="https://issues.apache.org/jira/browse/GUACAMOLE-277">achieve compatibility with
+xterm</a>, support for
+xterm’s 256-color console codes has been added, along with support for the
+console code which changes the window title.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-265">GUACAMOLE-265</a> - Support OSC 0 for changing SSH/telnet window title</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-278">GUACAMOLE-278</a> - Add support for xterm’s 256-color control codes</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-280">GUACAMOLE-280</a> - Add support for the “faint” SGR flag</li>
+</ul>
+
+<h2 id="automatic-failover-for-connections-in-groups">Automatic failover for connections in groups</h2>
+
+<p>In past releases, the database authentication would handle connection attempts
+to connection groups by selecting the least-used connection, but would
+otherwise only make one connection attempt. If that connection attempt fails
+due to an error within the remote desktop, the user must manually reconnect (or
+wait 15 seconds for the automatic reconnect).</p>
+
+<p>Connection groups provided via the database authentication will now
+automatically and transparently switch to the next available connection in the
+group for remote desktop errors that occur early in the connection. If
+graphical updates are sent prior to the error, automatic failover will not
+occur.</p>
+
+<p>This functionality has also been added at the Java API level. Extensions and
+applications leveraging the Guacamole API can use the
+<a href="/doc/0.9.13-incubating/guacamole-common/org/apache/guacamole/protocol/FailoverGuacamoleSocket.html"><code class="highlighter-rouge">FailoverGuacamoleSocket</code></a> class to automatically detect
+and handle upstream (remote desktop) errors during the connection process.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-208">GUACAMOLE-208</a> - Expand status codes to represent common remote desktop states</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-267">GUACAMOLE-267</a> - Support health checks for connections</li>
+</ul>
+
+<h2 id="fixes-for-all-supported-protocols">Fixes for all supported protocols</h2>
+
+<p>Several bugs with each supported protocol have been addressed. Most
+significantly, issues with audio stream stability for recent versions of
+Windows, and transfer of large files over RDP, the behavior of the “Alt” key
+for SSH and telnet, and VNC connection stability have all been fixed.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-194">GUACAMOLE-194</a> - Double free() in guac_common_ssh_destroy_user()</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-205">GUACAMOLE-205</a> - libguac_common_ssh build fails with OpenSSL 1.1</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-206">GUACAMOLE-206</a> - Alt key combinations broken in SSH and telnet</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-218">GUACAMOLE-218</a> - Audio stops playing on Windows Server 2016</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-222">GUACAMOLE-222</a> - SFTP file handles not closed for downloads</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-257">GUACAMOLE-257</a> - Segfault in on VNC/SSH file upload if SFTP is disabled</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-262">GUACAMOLE-262</a> - Cannot connect to ESXi 6.5 VNC server</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-268">GUACAMOLE-268</a> - RDPDR file size may be truncated to 32 bits</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-282">GUACAMOLE-282</a> - Common surface transfer functions incorrect with respect to alpha channel</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-306">GUACAMOLE-306</a> - VNC may segfault during the connection process</li>
+</ul>
+
+<h2 id="defining-rest-services-via-extensions">Defining REST services via extensions</h2>
+
+<p>Extensions can now define arbitrary REST services by implementing the new
+<code class="highlighter-rouge">getResource()</code> function at either the
+<a href="/doc/0.9.13-incubating/guacamole-ext/org/apache/guacamole/net/auth/AuthenticationProvider.html"><code class="highlighter-rouge">AuthenticationProvider</code></a>
+<a href="/doc/0.9.13-incubating/guacamole-ext/org/apache/guacamole/net/auth/UserContext.html"><code class="highlighter-rouge">UserContext</code></a>
+levels, returning objects annotated with JAX-RS (JSR-311) annotations.</p>
+
+<p>REST resources exposed at the <code class="highlighter-rouge">UserContext</code> level are inherently tied to the
+user’s session and thus require authentication, while resources exposed at the
+<code class="highlighter-rouge">AuthenticationProvider</code> level do not.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-289">GUACAMOLE-289</a> - Add support for declaring REST services within extensions</li>
+</ul>
+
+<h2 id="user-profile-attributes">User profile attributes</h2>
+
+<p>The database authentication now defines additional, arbitrary attributes for
+users which, if specified, are rendered within Guacamole’s user menu. These
+attributes are optional - if omitted, the user menu renders as in previous
+releases.</p>
+
+<p>The additional attributes are standardized at the API level on the
+<a href="/doc/0.9.13-incubating/guacamole-ext/org/apache/guacamole/net/auth/User.Attribute.html"><code class="highlighter-rouge">User.Attribute</code></a>
+object, and thus can be leveraged by any extension, producing the same effect.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-292">GUACAMOLE-292</a> - Add support for user profiles</li>
+</ul>
+
+<h2 id="support-for-filtering-ldap-users">Support for filtering LDAP users</h2>
+
+<p>Guacamole’s LDAP support now provides an additional <code class="highlighter-rouge">ldap-user-search-filter</code>
+property which, if specified, reduces the users that can log into Guacamole or
+are displayed to administrators within the user management interface (when
+combining LDAP with a MySQL or PostgreSQL database).</p>
+
+<p>Note that this filter only affects Guacamole logins if Guacamole has been
+configured to search for users prior to binding (with the <code class="highlighter-rouge">ldap-search-bind-dn</code>
+property). If a search DN is not being used, Guacamole derives each user’s DN
+directly, and thus will not apply the search filter to login attempts.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-101">GUACAMOLE-101</a> - Allow arbitrary filtering of LDAP users</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-244">GUACAMOLE-244</a> - Allow configuration of LDAP alias dereferencing</li>
+</ul>
+
+<h2 id="overriding-guacd-on-a-per-connection-basis">Overriding guacd on a per-connection basis</h2>
+
+<p>The connection to guacd is normally defined globally within
+<code class="highlighter-rouge">guacamole.properties</code>, but this is insufficient for deployments involving
+multiple distinct guacd instances or multiple implementations of the Guacamole
+protocol.</p>
+
+<p>For cases where different instances of guacd may be spread out across the
+network of remote desktop servers, or where other applications/drivers may
+implement their own internal version of guacd (such as the <a href="https://issues.apache.org/jira/browse/GUACAMOLE-168">work-in-progress
+X.Org driver</a>), Guacamole
+now supports defining/overriding the guacd hostname, port, and encryption
+method on a per-connection basis.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-189">GUACAMOLE-189</a> - Add support for per-connection guacd</li>
+</ul>
+
+<h2 id="miscellaneous-fixesimprovements">Miscellaneous fixes/improvements</h2>
+
+<p>This latest release of Guacamole also addresses several minor JavaScript
+issues, addresses potential disconnects due to system clocks which are not
+monotonic (can run backwards), and fixes the Docker image sanity checks such
+that database-specific environment variables need not be specified if a custom
+<code class="highlighter-rouge">GUACAMOLE_HOME</code> is being used.</p>
+
+<ul>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-40">GUACAMOLE-40</a> - Support TS gateway connections to RDP</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-223">GUACAMOLE-223</a> - Locking callbacks not set for guacd+SSL</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-229">GUACAMOLE-229</a> - Intervals when polling xmlhttprequests are not always cleared</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-239">GUACAMOLE-239</a> - Disconnects due to ‘backwards’ running time</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-252">GUACAMOLE-252</a> - Display jumps to top in MS Edge when Guacamole menu is opened</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-259">GUACAMOLE-259</a> - Log metrics for gauging user experience</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-281">GUACAMOLE-281</a> - GUACAMOLE_HOME not taken into account during Docker image sanity checks</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-294">GUACAMOLE-294</a> - Incorrectly positioned bracket in <code class="highlighter-rouge">guacTouchDrag.js</code>.</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-295">GUACAMOLE-295</a> - In Parser.js, the <code class="highlighter-rouge">length</code> variable is incorrectly checked for equality against NaN.</li>
+  <li><a href="https://issues.apache.org/jira/browse/GUACAMOLE-301">GUACAMOLE-301</a> - Login prompt not cleared when visiting unrestricted page</li>
+</ul>
+
+<h1 id="deprecation--compatibility-notes">Deprecation / Compatibility notes</h1>
+
+<p>As of 0.9.13-incubating, the following changes have been made which affect
+compatibility with past releases:</p>
+
+<h2 id="database-schema-changes">Database schema changes</h2>
+
+<p>The MySQL and PostgreSQL schemas have changed, adding columns to
+<code class="highlighter-rouge">guacamole_connection</code> (for defining the connection to guacd service
+implementing the Guacamole protocol) and to <code class="highlighter-rouge">guacamole_user</code> (for defining
+optional and arbitrary profile information).</p>
+
+<p>Users of the database authentication will need to run the
+<code class="highlighter-rouge">upgrade-pre-0.9.13.sql</code> script specific to their chosen database.</p>
+
+<h2 id="deprecation-of-the-noauth-extension">Deprecation of the NoAuth extension</h2>
+
+<p>The NoAuth extension is now deprecated. The extension remains part of the
+Guacamole source and a convenience binary of the extension is provided with
+this release, but its continued use is not recommended and it will eventually
+be removed entirely.</p>
+
+<p><strong>Integrations of Guacamole should instead use the extension API</strong>, or the core
+Guacamole API for absolute low-level control.</p>
+
+<h2 id="extension-api-changes">Extension API changes</h2>
+
+<p>Both the
+<a href="/doc/0.9.13-incubating/guacamole-ext/org/apache/guacamole/net/auth/AuthenticationProvider.html"><code class="highlighter-rouge">AuthenticationProvider</code></a>
+and
+<a href="/doc/0.9.13-incubating/guacamole-ext/org/apache/guacamole/net/auth/UserContext.html"><code class="highlighter-rouge">UserContext</code></a>
+interfaces now define a <code class="highlighter-rouge">getResource()</code> function. If implemented, the returned
+object will be served as a REST resource and must be annotated with JAX-RS
+(JSR-311) annotations. Because this new function is defined at the interface
+level, implementations of these interfaces will now need to define this
+function:</p>
+
+<ul>
+  <li><a href="/doc/0.9.13-incubating/guacamole-ext/org/apache/guacamole/net/auth/AuthenticationProvider.html#getResource--"><code class="highlighter-rouge">AuthenticationProvider.getResource()</code></a></li>
+  <li><a href="/doc/0.9.13-incubating/guacamole-ext/org/apache/guacamole/net/auth/UserContext.html#getResource--"><code class="highlighter-rouge">UserContext.getResource()</code></a></li>
+</ul>
+
+<p>If your extension does not need to expose its own REST resources, the function
+can simply return <code class="highlighter-rouge">null</code>, and no such resources will be exposed:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>@Override
+public Object getResource() {
+
+    // No associated REST resource
+    return null;
+
+}
+</code></pre>
+</div>
+
+
+</div>
+
+
+            </div>
+        </div>
+
+        <!-- Footer -->
+<div id="footer">
+
+    <!-- Copyrights -->
+    <p class="copyright">
+        Copyright &copy; 2017 <a href="http://www.apache.org/">The Apache
+            Software Foundation</a>, Licensed under the <a
+        href="http://www.apache.org/licenses/LICENSE-2.0">Apache License,
+        Version 2.0</a>. The HTML5 shield logo has been modified from the
+        original work of the <a
+            href="http://www.w3.org/">World Wide Web Constortium (W3C)</a>,
+        which is licensed under the <a
+            href="http://creativecommons.org/licenses/by/3.0/">Creative
+        Commons Attribution 3.0</a> license.
+    </p>
+
+    <!-- Trademarks -->
+    <p class="trademarks">
+        Apache and the Apache feather logo are trademarks of The Apache
+        Software Foundation.
+    </p>
+
+    <!-- Incubation disclaimer -->
+    <p class="disclaimer">
+        Apache Guacamole is an effort undergoing Incubation at The Apache
+        Software Foundation (ASF), sponsored by the Incubator. Incubation is
+        required of all newly accepted projects until a further review
+        indicates that the infrastructure, communications, and decision making
+        process have stabilized in a manner consistent with other successful
+        ASF projects. While incubation status is not necessarily a reflection
+        of the completeness or stability of the code, it does indicate that the
+        project has yet to be fully endorsed by the ASF.
+    </p>
+
+</div>
+
+
+        <!-- Google Analytics -->
+        <script type="text/javascript">
+          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+          ga('create', 'UA-75289145-1', 'auto');
+          ga('send', 'pageview');
+        </script>
+
+        <!-- Download tracking helper function -->
+        <script type="text/javascript">
+
+            /**
+             * Signals Google Analytics that a file is being downloaded (or, at
+             * least, we expect that it is). Note that it is not possible to
+             * determine this with 100% certainty without grepping server logs,
+             * but this should still at least help gauge interest/usage.
+             *
+             * @param {String} action
+             *     A human-readable string describing the user event which
+             *     occurred to initiate the download.
+             *
+             * @param {String} filename
+             *     The filename of the file being downloaded.
+             */
+            function trackDownload(action, filename) {
+                ga('send', 'event', {
+                    eventCategory : 'Download',
+                    eventAction   : action,
+                    eventLabel    : filename,
+                    transport     : 'beacon'
+                });
+            }
+
+        </script>
+
+    </body>
+</html>