blob: 98d40a572734ffd53b527c991be2b1c1899a0f9d [file] [log] [blame]
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="/styles/main.css?s=1714581448">
<link rel="icon" type="image/svg+xml" href="/images/logos/guac-classic-logo.svg"/>
<link rel="icon" type="image/png" href="/images/logos/guac-classic-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™: 1.5.4</title>
</head>
<body class="">
<!-- Header -->
<div id="header">
<div class="readable-content">
<h1><a href="/">Apache Guacamole™</a></h1>
<ul id="navigation" class="menu">
<li>
<a href="/releases/"
class="releases"
>Release Archives</a>
</li>
<li class="dropdown">
<a class="dropdown-toggle "
href="#">Documentation</a>
<ul class="dropdown-menu">
<li>
<a href="/faq/"
>FAQ</a>
</li>
<li>
<a href="/api-documentation/"
>API / Development</a>
</li>
<li>
<a href="/doc/gug/"
>Guacamole Manual</a>
</li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle "
href="#">Community</a>
<ul class="dropdown-menu">
<li>
<a href="/open-source/"
>Contributing to Guacamole</a>
</li>
<li>
<a href="/support/#mailing-lists"
>Mailing Lists</a>
</li>
<li>
<a href="https://issues.apache.org/jira/browse/GUACAMOLE/"
>Bug/Issue Tracker</a>
</li>
<li>
<a href="https://github.com/search?utf8=%E2%9C%93&q=repo%3Aapache%2Fguacamole-client+repo%3Aapache%2Fguacamole-server+repo%3Aapache%2Fguacamole-manual+repo%3Aapache%2Fguacamole-website&type=repositories&ref=searchresults"
>Source Code</a>
</li>
</ul>
</li>
<li>
<a href="/security/"
>Security Reports</a>
</li>
<li class="dropdown">
<a class="dropdown-toggle "
href="#">Support</a>
<ul class="dropdown-menu">
<li>
<a href="/support/#mailing-lists"
>Mailing Lists</a>
</li>
<li>
<a href="https://issues.apache.org/jira/browse/GUACAMOLE/"
>Bug/Issue Tracker</a>
</li>
<li>
<a href="/support/#commercial-support"
>Commercial Support</a>
</li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle apache"
href="#">ASF</a>
<ul class="dropdown-menu">
<li>
<a href="http://www.apache.org/"
>ASF Homepage</a>
</li>
<li>
<a href="http://www.apache.org/licenses/"
>License</a>
</li>
<li>
<a href="http://www.apache.org/foundation/thanks.html"
>Thanks</a>
</li>
<li>
<a href="http://www.apache.org/foundation/sponsorship.html"
>Sponsorship</a>
</li>
<li>
<a href="http://www.apache.org/foundation/policies/conduct.html"
>Code of Conduct</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- Content -->
<div class="fullwidth-content">
<h1 class="title">
Apache Guacamole 1.5.4
<span class="release-type">
(Archived)
</span>
</h1>
<div class="readable-content">
<div class="note">
<p>Apache Guacamole 1.5.4 is an archived release, and was
originally released on 2023-12-07. <strong>The
latest release of Apache Guacamole is <a href="/releases/1.5.5/">1.5.5</a>.</strong></p>
</div>
<div id="links">
<h2>Release documentation</h2>
<ul>
<li><a href="/doc/1.5.4/gug">Manual</a></li>
<li><a href="/doc/1.5.4/guacamole-common">guacamole-common</a></li>
<li><a href="/doc/1.5.4/guacamole-common-js">guacamole-common-js</a></li>
<li><a href="/doc/1.5.4/guacamole-ext">guacamole-ext</a></li>
<li><a href="/doc/1.5.4/libguac">libguac</a></li>
<li><a href="/doc/1.5.4/libguac-terminal">libguac-terminal</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>
<p>You <strong>must</strong> <a href="https://www.apache.org/info/verification.html">
verify the integrity of any downloaded files</a> using the OpenPGP signatures
we provide with each release. The signatures should be verified against the
<a href="https://downloads.apache.org/guacamole/KEYS">KEYS</a>
file, which contains the OpenPGP keys of Apache Guacamole's Release Managers.
Checksums of each released file are also provided.</p>
<!-- Source archives -->
<div class="release-downloads">
<table>
<tr>
<th>Filename</th>
<th>Signatures / Hashes</th>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/source/guacamole-client-1.5.4.tar.gz">guacamole-client-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/source/guacamole-client-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/source/guacamole-client-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/source/guacamole-server-1.5.4.tar.gz">guacamole-server-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/source/guacamole-server-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/source/guacamole-server-1.5.4.tar.gz.sha256">SHA-256</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>
<th>Filename</th>
<th>Signatures / Hashes</th>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-1.5.4.war">guacamole-1.5.4.war</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-1.5.4.war.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-1.5.4.war.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-duo-1.5.4.tar.gz">guacamole-auth-duo-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-duo-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-duo-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-header-1.5.4.tar.gz">guacamole-auth-header-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-header-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-header-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-jdbc-1.5.4.tar.gz">guacamole-auth-jdbc-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-jdbc-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-jdbc-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-json-1.5.4.tar.gz">guacamole-auth-json-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-json-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-json-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-ldap-1.5.4.tar.gz">guacamole-auth-ldap-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-ldap-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-ldap-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-quickconnect-1.5.4.tar.gz">guacamole-auth-quickconnect-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-quickconnect-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-quickconnect-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-sso-1.5.4.tar.gz">guacamole-auth-sso-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-sso-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-sso-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-totp-1.5.4.tar.gz">guacamole-auth-totp-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-totp-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-auth-totp-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-history-recording-storage-1.5.4.tar.gz">guacamole-history-recording-storage-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-history-recording-storage-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-history-recording-storage-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
<tr>
<td class="filename"><a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-vault-1.5.4.tar.gz">guacamole-vault-1.5.4.tar.gz</a></td>
<td class="signatures">
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-vault-1.5.4.tar.gz.asc">PGP</a>
<a href="https://archive.apache.org/dist/guacamole/1.5.4/binary/guacamole-vault-1.5.4.tar.gz.sha256">SHA-256</a>
</td>
</tr>
</table>
</div>
<!-- Release notes -->
<div id="release-notes">
<h1>Release notes</h1>
<p>The 1.5.4 release is a bugfix release that addresses miscellaneous bugs from
1.5.3 and earlier, and updates all dependencies to their latest compatible
versions. For a full list of all changes in this release, please see the
<a href="#changelog">changelog</a> below.</p>
<p><strong>The 1.5.4 release is compatible with older 1.x components.</strong> You should
upgrade older components to 1.5.4 when possible, however things should continue
to work correctly in the interim:</p>
<ul>
<li>Extensions written for older 1.x releases can be used by 1.5.4.</li>
<li>Components written for the version of the Guacamole protocol used by older
1.x releases can be used with components of the 1.5.4 release.</li>
</ul>
<p>Regardless of inter-component compatibility, <strong>there are changes in 1.5.4 which
may affect downstream users of Guacamole’s APIs</strong>. Please see the <a href="#deprecation--compatibility-notes">deprecation
/ compatibility notes</a> section for more
information.</p>
<h1 id="changelog">Changelog</h1>
<h3 id="user-interface--platform">User interface / platform</h3>
<ul>
<li>History Recording Player should show controls when mouse is moved (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1872">GUACAMOLE-1872</a>)</li>
<li class="bug">Control bar doesn’t auto-hide on history recording player (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1873">GUACAMOLE-1873</a>)</li>
</ul>
<h3 id="docker-images">Docker images</h3>
<ul>
<li class="bug">Typo in environment variables for Dockerfile (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1860">GUACAMOLE-1860</a>)</li>
</ul>
<h3 id="authentication-integration-and-storage">Authentication, integration, and storage</h3>
<ul>
<li class="bug">Regression in JSON module causes loading to fail (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1851">GUACAMOLE-1851</a>)</li>
<li class="bug">Permission check for creating user groups is incorrect (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1856">GUACAMOLE-1856</a>)</li>
</ul>
<h3 id="protocol-support--guacd">Protocol support / guacd</h3>
<ul>
<li class="bug">Race condition can cause the first user for a connection to miss updates (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1846">GUACAMOLE-1846</a>)</li>
<li class="bug">Parser reparses same instructions multiple times in some cases (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1849">GUACAMOLE-1849</a>)</li>
<li class="bug">guac_common_cursor_dup() may segfault if cursor is being modified (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1850">GUACAMOLE-1850</a>)</li>
<li>Add libguac convenience functions for memory management (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1867">GUACAMOLE-1867</a>)</li>
</ul>
<h3 id="internationalization">Internationalization</h3>
<ul>
<li>Updates and corrections to Catalan translation (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1880">GUACAMOLE-1880</a>)</li>
</ul>
<h3 id="documentation">Documentation</h3>
<ul>
<li>TOTP Authentication - Add documentation relating to usage with docker (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1878">GUACAMOLE-1878</a>)</li>
</ul>
<h3 id="general-housekeeping-and-cleanup">General housekeeping and cleanup</h3>
<ul>
<li>Update webapp dependencies to latest stable and compatible versions (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1859">GUACAMOLE-1859</a>)</li>
<li>Bump version numbers to 1.5.4 (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1886">GUACAMOLE-1886</a>)</li>
</ul>
<h1 id="deprecation--compatibility-notes">Deprecation / Compatibility notes</h1>
<p>Each 1.x release of Apache Guacamole should be compatible with components of
older 1.x releases. This compatibility is intended at the Guacamole protocol
level and at the extension level, but not necessarily at the API level. This
means:</p>
<ul>
<li>Extensions from older 1.x releases should still work in binary form, but may
need code changes before their source will build against a newer version of
guacamole-ext.</li>
<li>Software which uses the Guacamole protocol of an older 1.x release should
still work.</li>
<li>Software which uses libguac from an older 1.x release should still work by
continuing to use the libguac from that release, as newer versions of
libguac may not be API/ABI compatible. In the case of third-party protocol
support plugins for guacd, this means that the guacd from that release must
also be used. Compatibility with respect to libguac is represented by the
<a href="https://en.wikipedia.org/wiki/Soname">soname</a>.</li>
<li>You should update to newer versions where applicable and when possible.</li>
</ul>
<p>As of 1.5.4, the following changes have been made which affect compatibility
with past releases:</p>
<h2 id="bulk-user-join-support-join_pending_handler">Bulk user join support (<code class="language-plaintext highlighter-rouge">join_pending_handler</code>)</h2>
<p>When a user joins an established connection via Guacamole’s sharing
functionality, that user’s display state must be synchronised with the existing
display state of the connection such that future updates will have the expected
effects. Historically, this synchronization was done individually for each
joining user via a single handler called <code class="language-plaintext highlighter-rouge">join_handler</code>.</p>
<p>As of 1.5.4, <code class="language-plaintext highlighter-rouge">join_pending_handler</code> has been added to allow <em>all</em> joining users
to be synchronized at the same time. If using this new bulk synchronization
support, the <code class="language-plaintext highlighter-rouge">join_handler</code> will be used primarily to parse user-specific
connection parameters, while the <code class="language-plaintext highlighter-rouge">join_pending_handler</code> will be used to
synchronize the display state to all users that are about to join. Using
<code class="language-plaintext highlighter-rouge">join_pending_handler</code> avoids having to re-encode the same display state
multiple times.</p>
<ul>
<li class="bug">Race condition can cause the first user for a connection to miss updates (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1846">GUACAMOLE-1846</a>)</li>
</ul>
<h2 id="memory-management-macros">Memory management macros</h2>
<p>The latest version of libguac provides <a href="/doc/1.5.4/libguac/mem_8h.html">a series of <code class="language-plaintext highlighter-rouge">guac_mem_*()</code> macros</a>
for memory management and memory-related calculations that perform checked
arithmetic. These macros are intended to replace manual usage of <code class="language-plaintext highlighter-rouge">malloc()</code>,
<code class="language-plaintext highlighter-rouge">calloc()</code>, <code class="language-plaintext highlighter-rouge">realloc()</code>, and <code class="language-plaintext highlighter-rouge">free()</code> and should be preferred.</p>
<p>The addition of these macros does not itself affect compatibility, however
established libguac functions that previously required returned memory to be
freed using <code class="language-plaintext highlighter-rouge">free()</code> now document that returned memory should be freed with
<code class="language-plaintext highlighter-rouge">guac_mem_free()</code>. Existing usage of <code class="language-plaintext highlighter-rouge">free()</code> instead of <code class="language-plaintext highlighter-rouge">guac_mem_free()</code> will
continue to work but should be migrated when possible.</p>
<ul>
<li>Add libguac convenience functions for memory management (<a href="https://issues.apache.org/jira/browse/GUACAMOLE-1867">GUACAMOLE-1867</a>)</li>
</ul>
</div>
</div>
</div>
<!-- Footer -->
<div id="footer">
<div class="readable-content">
<!-- Copyrights -->
<p class="copyright">
Copyright &copy; 2024 <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>.
</p>
<!-- Trademarks -->
<p class="trademarks">
Apache Guacamole, Guacamole, Apache, the Apache feather logo, and the
Apache Guacamole project logo are trademarks of The Apache Software
Foundation.
</p>
</div>
</div>
<!-- jQuery -->
<script src="/scripts/jquery.min.js" type="text/javascript"></script>
<!-- Dropdown toggle -->
<script src="/scripts/dropdown.js" type="text/javascript"></script>
</body>
</html>