Update draft release notes for 1.0.0-RC1
Project: http://git-wip-us.apache.org/repos/asf/guacamole-website/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-website/commit/b06f4f88 Tree: http://git-wip-us.apache.org/repos/asf/guacamole-website/tree/b06f4f88 Diff: http://git-wip-us.apache.org/repos/asf/guacamole-website/diff/b06f4f88 Branch: refs/heads/master Commit: b06f4f88ca18525a7d86057d1cf147f0a2d020f5 Parents: 04444fc Author: Nick Couchman <nick_couch...@cotyinc.com> Authored: Tue Jan 1 14:32:33 2019 -0500 Committer: Michael Jumper <mjum...@apache.org> Committed: Tue Jan 1 17:37:47 2019 -0800 ---------------------------------------------------------------------- _releases/1.0.0.md | 215 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 203 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/guacamole-website/blob/b06f4f88/_releases/1.0.0.md ---------------------------------------------------------------------- diff --git a/_releases/1.0.0.md b/_releases/1.0.0.md index f76da78..b7c90f6 100644 --- a/_releases/1.0.0.md +++ b/_releases/1.0.0.md @@ -119,6 +119,9 @@ providing this ability is equivalent to granting your users those privileges. ### Improved keyboard handling / Support for dead keys +Multiple improvements have been made to handling keyboards, including bug fixes +for various clients and support for dead keys. + * [GUACAMOLE-161](https://issues.apache.org/jira/browse/GUACAMOLE-161) - Handle CapsLock events properly on Mac OS * [GUACAMOLE-232](https://issues.apache.org/jira/browse/GUACAMOLE-232) - Stuck keys iPad/Bluetooth keyboard (Return/Backspace/Space) * [GUACAMOLE-352](https://issues.apache.org/jira/browse/GUACAMOLE-352) - Add support for dead keys @@ -126,9 +129,19 @@ providing this ability is equivalent to granting your users those privileges. ### Automatic connection behavior +Guacamole has a feature that, if a user has access to only a single connection, +they will be automatically connected to it and skip the home screen. This feature +has been tweaked slightly so that users with elevated access to the Guacamole +Client (Administrative, ability to create connections) will be taken to the +home screen and not automatically taken to the connection. + * [GUACAMOLE-508](https://issues.apache.org/jira/browse/GUACAMOLE-508) - Automatically connect only if user lacks access to settings -### Support for renaming RDP drive and printer +### Support for renaming RDP drive and printer + +A handful of changes allow for changing how the RDP protocol handles naming +of the RDP client and redirected filesystem and printers passed through +via Guacmaole. * [GUACAMOLE-445](https://issues.apache.org/jira/browse/GUACAMOLE-445) - Allow RDP printer name to be configured * [GUACAMOLE-446](https://issues.apache.org/jira/browse/GUACAMOLE-446) - Allow RDP drive name to be configured @@ -136,14 +149,33 @@ providing this ability is equivalent to granting your users those privileges. ### Configurable terminal color schemes +The Guacamole terminal now allows for finer control of terminal color +schemes by allowing for the individual colors of a scheme to be customized. + * [GUACAMOLE-470](https://issues.apache.org/jira/browse/GUACAMOLE-470) - Make individual terminal colors configurable through "color-scheme" parameter ### Optional recording of input events +Guacamole has supported recording sessions for quite some time, but input +events were not recorded (mouse movement, mouse clicks, keyboard input, etc.). +Options are now present for capturing the input events during session +recording. These events are disabled by default, for security and privacy +reasons, but can be enabled if desired. + * [GUACAMOLE-313](https://issues.apache.org/jira/browse/GUACAMOLE-313) - Allow input events within session recording ### SSH host key verification +SSH host key verification is now implemented and can be enabled and configured +within Guacamole. In the past, Guacamole has not done any host key checking, +and version 1.0.0 introduces that capability. It is important to note that +this functionality is still disabled by default - if known host keys are not +provided, Guacamole will continue to behave as it has in the past and will not +perform host key checking. If host keys are provided, however, either in a +known_hosts file within the GUACAMOLE_HOME directory on the server running +guacd, or by passing in a parameter to the connection with the key of the +specific server. + * [GUACAMOLE-527](https://issues.apache.org/jira/browse/GUACAMOLE-527) - Add parameter for specifying known SSH/SFTP server host key ### Automatic detection of network issues @@ -152,10 +184,22 @@ providing this ability is equivalent to granting your users those privileges. ### Support for configuring Guacamole with environment variables +Support has been added for specifying any of the properties supported in the +GUACAMOLE_HOME/guacamole.properties file by setting environment variables that +resemble the names of the parameters. The variables are all caps and replace +dashes with underscores. + * [GUACAMOLE-464](https://issues.apache.org/jira/browse/GUACAMOLE-464) - Extension configuration properties from the OS environment ### Improvements to `guacamole/guacd` and `guacamole/guacamole` Docker images +Many improvments have been made to the Docker support files for building +and running Guacamole within Docker containers. Most notable among these is +that the default image for Guacamole Server has been changed from CentOS7 +to the latest Debian stable. This allows for more recent, but still stable, +versions of libraries to be used to support the various protocols and features +of guacd. + * [GUACAMOLE-42](https://issues.apache.org/jira/browse/GUACAMOLE-42) - Support setting guacd log level on Docker container * [GUACAMOLE-407](https://issues.apache.org/jira/browse/GUACAMOLE-407) - Update guacd Docker image to build against more recent dependencies * [GUACAMOLE-450](https://issues.apache.org/jira/browse/GUACAMOLE-450) - Change Tomcat Version in Dockerfile to major release @@ -163,6 +207,14 @@ providing this ability is equivalent to granting your users those privileges. ### General usability improvements +A few changes address the usability of both the client and the server by +adding functionality that addresses issues reported by users. Guacamoel now +supports Ctrl-Alt-End as a hotkey for sending Ctrl-Alt-Delete to remote systems, +which is a widely-used hotkey among remote desktop clients. The zoom level +of the client can be specified more granularly, connections are easier +to click on in the web interface, and guacd now provides a flag for +outputting the build version. + * [GUACAMOLE-113](https://issues.apache.org/jira/browse/GUACAMOLE-113) - Add Ctrl+Alt+Del hotkey * [GUACAMOLE-152](https://issues.apache.org/jira/browse/GUACAMOLE-152) - Difficult to reach specific zoom levels * [GUACAMOLE-304](https://issues.apache.org/jira/browse/GUACAMOLE-304) - Clicking area to open connection @@ -170,16 +222,33 @@ providing this ability is equivalent to granting your users those privileges. ### General improvements to terminal behavior +A few updates address improving compatibility of the terminal across +different connections, particularly when dealing with non-Linux operating +systems. Parameters have been added for configuring the terminal type +reported to the remote system, and for adjusting what code the backspace +key sends. The terminal has also been adjusted to hide escape sequences +and control codes that were previously outputted to the screen. + * [GUACAMOLE-269](https://issues.apache.org/jira/browse/GUACAMOLE-269) - Add support for alternative backspace/delete control codes * [GUACAMOLE-564](https://issues.apache.org/jira/browse/GUACAMOLE-564) - Hide APC escape sequence for terminal * [GUACAMOLE-565](https://issues.apache.org/jira/browse/GUACAMOLE-565) - Add terminal type parameter ### Support for systemd +A template systemd init script has been provided and can be built with +Guacamole Server to allow for xyxtem startup on distributions that +have moved from init scripts to systemd. + * [GUACAMOLE-30](https://issues.apache.org/jira/browse/GUACAMOLE-30) - Add Systemd init script for guacd-server ### Control of RDP bitmap and glyph caching +Parameters have been added to RDP connections that allow for controlling +how the RDP protocol behaves for caching bitmaps, glyphs, and off-screen +data. The default behavior remains un-changed, with caching of all of these +items enabled, but, for certain scenarios where it may be desirable to +change this behavior the parameters are present. + * [GUACAMOLE-448](https://issues.apache.org/jira/browse/GUACAMOLE-448) - Add parameters for controlling RDP bitmap/glyph/off-screen caching Internationalization @@ -187,6 +256,9 @@ Internationalization ### Additional RDP keymaps +Several keymaps have been added or updated for better support for keyboard +input on both the Guacamole Client side and on remote systems. + * [GUACAMOLE-233](https://issues.apache.org/jira/browse/GUACAMOLE-233) - Add Spanish keymap for RDP * [GUACAMOLE-273](https://issues.apache.org/jira/browse/GUACAMOLE-273) - Add Portuguese Brazilian keymap for RDP * [GUACAMOLE-434](https://issues.apache.org/jira/browse/GUACAMOLE-434) - Add UK English keymap for RDP @@ -195,6 +267,10 @@ Internationalization ### Spanish translation of web interface +The entire web interface has been translated into Spanish, including section +and field headers on the web interface, on-screen keyboard, and remote system +support. + * [GUACAMOLE-463](https://issues.apache.org/jira/browse/GUACAMOLE-463) - Spanish translation for Guacamole client * [GUACAMOLE-530](https://issues.apache.org/jira/browse/GUACAMOLE-530) - Add Spanish on screen keyboard @@ -203,10 +279,19 @@ Bug fixes ### Hostname / desktop name regression +An issue was corrected where the hostname or desktop name replaced the +connection name on the tab or window title in the browser. The behavior +has been reverted to the desired behavior, where the connection name is +displayed. + * [GUACAMOLE-502](https://issues.apache.org/jira/browse/GUACAMOLE-502) - Hostname / desktop name replaces connection name ### General connection stability +Several fixes address issues with the stability of connections opened +with Guacamole, either between Guacamole Client and Server, or between +Server and remote systems. + * [GUACAMOLE-324](https://issues.apache.org/jira/browse/GUACAMOLE-324) - Incorrect buffer used in socket write * [GUACAMOLE-384](https://issues.apache.org/jira/browse/GUACAMOLE-384) - Terminal writes during disconnect may segfault * [GUACAMOLE-424](https://issues.apache.org/jira/browse/GUACAMOLE-424) - VNC client segfaults if provided password is incorrect @@ -226,35 +311,58 @@ Bug fixes ### CAS authorization URI derived incorrectly +To ensure comptability across CAS various implementations of the CAS +protocol, the "/login" portion of the URI has been added to the code +that performs the CAS login. + * [GUACAMOLE-457](https://issues.apache.org/jira/browse/GUACAMOLE-457) - CAS authentication provider omits login URI ### Build issues for guacamole-server +A couple of fixes were introduced for build issues for Guacamole +server components for various libraries and compilers. + * [GUACAMOLE-485](https://issues.apache.org/jira/browse/GUACAMOLE-485) - pango is required with pango support disabled * [GUACAMOLE-500](https://issues.apache.org/jira/browse/GUACAMOLE-500) - Terminal build fails against GCC 7 ### Fixes for guacenc behavior and protocol implementation +A few bugs were squashed in the guacenc program that caused error +messages and erratic behavior under certain conditions. + * [GUACAMOLE-307](https://issues.apache.org/jira/browse/GUACAMOLE-307) - guacenc reports "Layer index out of bounds: -1" * [GUACAMOLE-482](https://issues.apache.org/jira/browse/GUACAMOLE-482) - Return value of guacenc_video_flush_frame() not handled * [GUACAMOLE-490](https://issues.apache.org/jira/browse/GUACAMOLE-490) - guacenc does not take channel mask into account for image streams ### Issues specific to Internet Explorer +Changes were introduced that fix IE-specific issues that either +caused problems or had the potential to impact compatibility with +various versions of IE. + * [GUACAMOLE-316](https://issues.apache.org/jira/browse/GUACAMOLE-316) - IE Compatibility mode doesn't work * [GUACAMOLE-347](https://issues.apache.org/jira/browse/GUACAMOLE-347) - IE may lack window.location.origin * [GUACAMOLE-348](https://issues.apache.org/jira/browse/GUACAMOLE-348) - Stream download iframe may not exist in DOM at time of removal ### Use of deprecated `navigator.getUserMedia()` +The navigator.getuserMedia() method has been deprecated, so the +Guacamole Client code has been adjusted to remove reliance upon +that method. + * [GUACAMOLE-237](https://issues.apache.org/jira/browse/GUACAMOLE-237) - navigator.getUserMedia() deprecated ### Incorrect documentation for RDP `load-balance-info` parameter +Documentation was corrected for the load-balance-info parameter. + * [GUACAMOLE-427](https://issues.apache.org/jira/browse/GUACAMOLE-427) - RDP "load-balance-info" parameter incorrectly documented ### Erroneous inclusion of "guaclog" binary in source tree +The guaclog binary was accidentally included in one of the source +code releases and in the git repository. It has been removed. + * [GUACAMOLE-492](https://issues.apache.org/jira/browse/GUACAMOLE-492) - guaclog binary erroneously included in source tree Platform / API changes @@ -262,21 +370,48 @@ Platform / API changes ### **Java 8 or later is now required** +As noted in the compatibility section below, the Guacamole Client +code has been updated such that Java 1.8 is required for both +build and runtime. + * [GUACAMOLE-497](https://issues.apache.org/jira/browse/GUACAMOLE-497) - Ensure guacamole-client source is compatible with Java 9 * [GUACAMOLE-635](https://issues.apache.org/jira/browse/GUACAMOLE-635) - Build against and require Java 1.8 ### Guacamole no longer uses cookies +The Guacamole Client has been updated such that cookies are no longer +used to store the authentication information, and it is, instead, stored +in the localStorage of the local browser. + * [GUACAMOLE-549](https://issues.apache.org/jira/browse/GUACAMOLE-549) - Store auth token within localStorage ### Removal of NoAuth and other deprecated components +Several components that were previously marked as deprecated have been +removed entirely from the code base. This includes the NoAuth extension +and several old properties and API endpoints. + * [GUACAMOLE-493](https://issues.apache.org/jira/browse/GUACAMOLE-493) - Remove the NoAuth extension entirely * [GUACAMOLE-494](https://issues.apache.org/jira/browse/GUACAMOLE-494) - Remove support for old, deprecated properties * [GUACAMOLE-495](https://issues.apache.org/jira/browse/GUACAMOLE-495) - Remove support for old, deprecated portions of API ### Improvements to extension API +The extension API has been updated with several changes designed to +streamline functionality and make development and maintenance of +extensions easier and more consistent. The error codes sent by +the REST API are now derived from the GuacamoleStatus data structure +rather than being separately calculated. Dependency precendence has +been updated so that the dependencies bundled with the WebApp are +preferred over the ones bundled with the extensions. Base implementations +of UserContext and AuthenticationProvider modules have been provided +and current extensions updated to make use of those, reducing the overall +amount of code to maintain and making implementation of future modules +more straight-forward. Finally, the RESTExceptionMapper class was replaced +by the RESTExceptionWrapper class, which also makes it possible for +extensions to generate their own exceptions that can be handled by the +web applicatlon. + * [GUACAMOLE-499](https://issues.apache.org/jira/browse/GUACAMOLE-499) - REST API Error Codes should come from GuacamoleStatus * [GUACAMOLE-541](https://issues.apache.org/jira/browse/GUACAMOLE-541) - Webapp dependencies take precedence over bundled extension dependencies * [GUACAMOLE-542](https://issues.apache.org/jira/browse/GUACAMOLE-542) - Provide base implementations of UserContext and AuthenticationProvider @@ -284,10 +419,21 @@ Platform / API changes ### Web application updated to AngularJS 1.6.9 +The AngularJS code was updated from the 1.3.x code to the latest +available 1.x code, which was 1.6.9 at the time of the update. Several +portion of the code were reworked for compatibility with this, including +significant portions of the HTTP request code and how exceptions are +handled within those requests. + * [GUACAMOLE-526](https://issues.apache.org/jira/browse/GUACAMOLE-526) - Update Guacamole-Client Webapp to Angular 1.6.9 ### Improvements to Java / JavaScript tunnel API +Changes were introduced to improve how the tunnel is handled between the +Java and JavaScript portions of the code, including allowing custom +headers to be configured for the tunnels and insuring that the tunnels +are not closed more than once. + * [GUACAMOLE-431](https://issues.apache.org/jira/browse/GUACAMOLE-431) - Tunnel implementations handles close only once * [GUACAMOLE-437](https://issues.apache.org/jira/browse/GUACAMOLE-437) - Allow to configure custom headers for Guacamole tunnels @@ -301,15 +447,29 @@ with past releases: **Java 8 or later is now required** ----------------------------------- -TODO +Most of the Java components of the Guacamole Client have been updated to +require Java 1.8 for both compile and runtime. The decision was made +based on the fact that many support libraries are moving toward +requiring later versions of Java, that Java 1.8 has been out and stable +for many years, and that Java 1.6 and 1.7 have not been updated in +several years. The only exception to this is the base API, the +guacamole-common code, which continues to maintain compatibility with +Java 1.6. Database schema changes ----------------------- -The MySQL, PostgreSQL, and SQL Server schemas have changed, ... +Significant changes have been made to the schemas for all of the JDBC +authentication modules (MySQL, PostgreSQL, and SQL Server). Among those +changes are the addition of support for user groups and the changes +required to support those within the database modules (including the +"entity" as an overall type for both users and groups). -Users of the database authentication will need to run the -`upgrade-pre-1.0.0.sql` script specific to their chosen database. +Users of any of the database authentication modules will need to run the +`upgrade-pre-1.0.0.sql` script specific to their chosen database as part +of the move from earlier versions of Guacamole to 1.0.0. More thorough +instructions for this process can be found in the [`JDBC Authentcation`] +(http://guacamole.apache.org/doc/gug/jdbc-auth.html) documentation. Hostname logging within database -------------------------------- @@ -334,29 +494,50 @@ address. Removal of deprecated NoAuth extension -------------------------------------- -TODO +The NoAuth extension has been deprecated for a couple of major releases of +Guacamole, and has been entirely removed from the code base in this release, +both source and binary releases. If you are currently using this extension +you will need to move to a different authentication extension during the +upgrade process, as the NoAuth extension will no longer work. Removal of deprecated properties -------------------------------- +The following properties have been deprecated for quite some time, and +are completely removed in the 1.0.0 release. Prior to the 1.0.0 release +a warning would be logged regarding the deprecation of these properties; +as of this release they will be completely ignored if present in the +guacamole.properties file. + * `basic-user-mapping` * `mysql-disallow-simultaneous-connections` * `mysql-disallow-duplicate-connections` * `postgresql-disallow-simultaneous-connections` * `postgresql-disallow-duplicate-connections` -TODO - Extension API changes --------------------- ### Support for user groups -TODO +As noted above, one of the major changes in this version of the Guacamole +Client is the addition of support for user groups across all authentication +modules. This includes changes in the core Extension API (guacamole-ext) +that supports the user groups and allows for those groups to be processed +across various stacked modules and implemented in newer modules. The +AbstractUserGroup, DelegatingUserGroup, SimpleUserGroup, and UserGroup +classes have been added to the Extension API to be implemented within +various extension modules. ### The new decoration API -TODO +The 1.0.0 version of the Guacamole Client introduces several classes +that allow extension modules to decorate other modules, providing the +ability to modules to build on top of other modules and store data in +other modules. This was key in allowing the TOTP module to function by +allowing it to store arbitrary data in the databases provided by the +JDBC module, and paves the way for future expansion on how modules +leverage data and functionality from other modules. ### Removal of deprecated `GuacamoleHome` and `GuacamoleProperties` classes @@ -364,7 +545,11 @@ TODO ### Deprecation of `SimpleUserDirectory`, `SimpleConnectionDirectory`, and `SimpleConnectionGroupDirectory` classes -TODO (Replaced by `SimpleDirectory`) +The SimpleUserDirectory, SimpleConnectionDirectory, and +SimpleConnectionGroupDirectory classes have been deprecated in favor +of the SimpleDirectory<T> class. These classes can still be used, +but will result in deprecation warnings, and will be removed in +a future release. ### Deprecation of `SimpleUser` convenience constructors @@ -401,7 +586,13 @@ TODO ### Addition of `Guacamole.Tunnel.State.UNSTABLE` state -TODO (Implementations of `onstatechange` may need to take this into account if unknown statuses are not simply ignored) +In order to support changes to detecting and handling network +problems within the Guacamole connections, another tunnel state, +UNSTABLE, has been added. Custom code that leverages the +Guacamole.Tunnel.State type may need to be refactored to take +this additional state into account if it does not currently +ignore unknown states, or the code needs to handle unstable +connections. ### Internal WebSocket tunnel implementation changes