You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@guacamole.apache.org by Mike Jumper <mi...@guac-dev.org> on 2016/08/23 21:09:43 UTC

Testing needed for 0.9.10-incubating

Hello all,

It looks like the planned scope of 0.9.10-incubating has been satisfied, and
there are no further open issues related to 0.9.10-incubating changes.

Included in this email is a list of all changes that have gone into the Apache
Guacamole (incubating) repositories since the pre-Incubator 0.9.9 release.
Links to the relevant issues in JIRA are included for context, as well as some
brief background info where appropriate.

To all those able, *please test as much as possible*. Once it has been
reasonably-verified that there are no blocking issues, the next logical step
will be to move forward with a release VOTE.

For now, we need:

1) To verify that previously-working things are not suddenly broken
   (regressions).

2) To verify that features/fixes intended for 0.9.10-incubating do indeed work
   as intended.

3) To verify that changes for 0.9.10-incubating are accurately reflected in
   the documentation.

The main repositories to test against are incubator-guacamole-client and
incubator-guacamole-server, both of which must be installed for any
Guacamole deployment (see the docs):

    https://github.com/apache/incubator-guacamole-client
    https://github.com/apache/incubator-guacamole-server

The Guacamole documentation itself is in the form of a manual that is kept
up-to-date with each release (or at least should be - that's part of what needs
to be tested here):

    https://github.com/apache/incubator-guacamole-manual

If anyone has any questions, please ask and we will do our best to assist.

Thanks!

- Mike

==========

Table of Contents:

    A. Screen sharing
    B. Screen recording
    C. Streamlined file transfers
    D. RDP audio input
    E. Keyboard improvements
    F. Local clipboard integration
    G. Theming extensions
    H. Docker improvements
    I. User management
    J. Partially-reverted clipboard changes
    K. Concurrency options
    L. Translations
    M. Exposing terminal output to JavaScript
    N. Miscellaneous bugs


----------------------------------------
 A. Screen sharing
----------------------------------------

Explicitly supported by the database authentication backend. Can also be used
by extensions or Guacamole-driven applications in general (when written to use
the appropriate parts of the APIs).

When granted permission, users can generate temporary share links for their
active connections. Those links are invalidated when they disconnect.

 * GUACAMOLE-5: Allow creation of per-connection share links
   (https://issues.apache.org/jira/browse/GUACAMOLE-5)

 * GUACAMOLE-13: Finally stabilize and merge GUAC-844 to master
   (https://issues.apache.org/jira/browse/GUACAMOLE-13)

 * GUACAMOLE-52: Do not delete history records
   (https://issues.apache.org/jira/browse/GUACAMOLE-52)


----------------------------------------
 B. Screen recording
----------------------------------------

All supported protocols (VNC, RDP, SSH, and telnet) can be configured to record
sessions to disk for later playback. This configuration is specified on a
per-connection basis. Session recordings are Guacamole protocol dumps of the
server -> client side of the conversation, and can be converted to a normal
video stream using the "guacenc" utility, which is part of the guacamole-server
build.

Additionally, text-based protocols (SSH and telnet) can record sessions as
text, using the same format used by the "script" and "scriptreplay" commands.

 * GUACAMOLE-4: Implement session recording
   (https://issues.apache.org/jira/browse/GUACAMOLE-4)

 * GUACAMOLE-16: Implement text-based screen recording for SSH/telnet
   (https://issues.apache.org/jira/browse/GUACAMOLE-16)


----------------------------------------
 C. Streamlined file transfers
----------------------------------------

The web application will now handle file transfer via HTTP. This speeds things
up, removes limitations on file size imposed by JavaScript, and removes the
need for initiating the actual download by clicking a link.

File transfer is still handled via the Guacamole protocol. The streams are
dynamically intercepted, stripped, and exposed via HTTP by the web application
in response to specific REST API requests. This is strictly a frontend change
and does not affect the core Guacamole stack and protocol, which continues to
handle file transfer as it always has.

 * GUACAMOLE-44: Upload/download of files that are more than 1 GB fail
   (https://issues.apache.org/jira/browse/GUACAMOLE-44)


----------------------------------------
 D. RDP audio input
----------------------------------------

Support for RDP's "AUDIO_INPUT" channel. Configuring this is tricky, and
Microsoft's documentation is somewhat misleading. It should work out-of-the-box
for Windows 7, while versions of Windows Server will need group policy changes
AND the "Remote Desktop Session Host" feature installed.

 * GUACAMOLE-25: Add support for audio input
   (https://issues.apache.org/jira/browse/GUACAMOLE-25)


----------------------------------------
 E. Keyboard improvements
----------------------------------------

There are new keymaps which need verification, as well as some fixes. In
particular, use of the keypad was broken for RDP in 0.9.9. This should be
fixed now.

 * GUACAMOLE-6: Netherlands keyboard layout created
   (https://issues.apache.org/jira/browse/GUACAMOLE-6)

 * GUACAMOLE-7: Wrong French keyboard layout
   (https://issues.apache.org/jira/browse/GUACAMOLE-7)

 * GUACAMOLE-15: Japanese keymap support on RDP
   (https://issues.apache.org/jira/browse/GUACAMOLE-15)

 * GUACAMOLE-19: "@" characters don't work with French keyboard under IE11
   (https://issues.apache.org/jira/browse/GUACAMOLE-19)

 * GUACAMOLE-51: Keypad not properly mapped in RDP, SSH, and telnet
   (https://issues.apache.org/jira/browse/GUACAMOLE-51)


----------------------------------------
 F. Local clipboard integration
----------------------------------------

Guacamole will now use the standard-but-clunky Clipboard API
(document.execCommand()) to attempt to read the local clipboard. If this fails,
things continue to work as they have in past releases (clipboard access via the
Guacamole menu/sidebar).

IE11 will prompt the user to allow clipboard access, which is actually pretty
nice. For Chrome, there is a third-party extension which allows the user to
grant access on a per-domain basis:

    https://chrome.google.com/webstore/detail/clipboard-permission-mana/ipbhneeanpgkaleihlknhjiaamobkceh

 * GUACAMOLE-24: Directly integrate local clipboard
   (https://issues.apache.org/jira/browse/GUACAMOLE-24)


----------------------------------------
 G. Theming extensions
----------------------------------------

 * GUACAMOLE-9: Allow modification of HTML via extensions
   (https://issues.apache.org/jira/browse/GUACAMOLE-9)


----------------------------------------
 H. Docker improvements
----------------------------------------

Beware that the Docker images now live in the incubator-guacamole-client and
incubator-guacamole-server repositories (see GUACMOLE-27).

 * GUACAMOLE-8: Allow concurrency properties to be configured within Docker
   (https://issues.apache.org/jira/browse/GUACAMOLE-8)

 * GUACAMOLE-21: Support LDAP within Docker image
   (https://issues.apache.org/jira/browse/GUACAMOLE-21)

 * GUACAMOLE-27: Bring Docker images into new git repositories
   (https://issues.apache.org/jira/browse/GUACAMOLE-27)

 * GUACAMOLE-50: Update Docker containers to use Java 8
   (https://issues.apache.org/jira/browse/GUACAMOLE-50)


----------------------------------------
 I. User management
----------------------------------------

Support for role-based access control within LDAP. Also a convenient "Clone"
button for users if the database authentication backend is being used.

 * GUACAMOLE-12: Allow LDAP role-based access control for guacConfigGroups
   (https://issues.apache.org/jira/browse/GUACAMOLE-12)

 * GUACAMOLE-14: Add support for cloning existing users
   (https://issues.apache.org/jira/browse/GUACAMOLE-14)


----------------------------------------
 J. Partially-reverted clipboard changes
----------------------------------------

GUACAMOLE-55 was intended to add support for arbitrary clipboard data,
specifically copy/paste of images for RDP. The Guacamole protocol has supported
this for some time, but the web application only handled text for simplicity's
sake.

After the task grew in complexity, the RDP portion of those changes was
removed from scope and GUACAMOLE-55 was narrowed to just client-side changes.
Once THAT grew in complexity (mainly due to browser quirks surrounding
content-editable divs), I partially reverted those changes for the sake of a
stable 0.9.10-incubating.

The "non-risky" parts of GUACAMOLE-55 still remain, namely a better internal
representation of clipboard data and a convenient abstraction of the clipboard
input field, thus the clipboard functionality needs regression testing, even
though the original task was pulled from the release.

 * GUACAMOLE-82: Clipboard behavior regressions since GUACAMOLE-55
   (https://issues.apache.org/jira/browse/GUACAMOLE-82)


----------------------------------------
 K. Concurrency options
----------------------------------------

Administrators can now restrict the total number of connections used by a
server.

For the cases where balancing groups may route users to any one of several
desktops, administrators can now enable "session affinity" on those balancing
groups, ensuring that users are directed to the same underlying connection
consistently (until they logout from Guacamole).

 * GUACAMOLE-26: Add support for overall concurrency limits
   (https://issues.apache.org/jira/browse/GUACAMOLE-26)

 * GUACAMOLE-53: Add support for session affinity within balancing groups
   (https://issues.apache.org/jira/browse/GUACAMOLE-53)


----------------------------------------
 L. Translations
----------------------------------------

 * GUACAMOLE-18: Fix typo in French translation
   (https://issues.apache.org/jira/browse/GUACAMOLE-18)

 * GUACAMOLE-22: Update missing french translations
   (https://issues.apache.org/jira/browse/GUACAMOLE-22)


----------------------------------------
 M. Exposing terminal output to JavaScript
----------------------------------------

Not the most easily testable feature, this is mainly useful to those that
have written applications using the Guacamole API. The protocols which leverage
the terminal emulator built into guacd (SSH and telnet) now expose their output
via the Guacamole protocol's "pipe streams" (essentially named pipes). This
output can be grabbed and handled by client-side JavaScript for whatever
purpose can be imagined.

 * GUACAMOLE-17: Allow terminal output to be redirected to pipe streams
   (https://issues.apache.org/jira/browse/GUACAMOLE-17)


----------------------------------------
 N. Miscellaneous bugs
----------------------------------------

 * GUACAMOLE-10: Keyboard focus is permanently lost after clicking the URL bar
   in IE11 (https://issues.apache.org/jira/browse/GUACAMOLE-10)

 * GUACAMOLE-11: No error screen during an invalid SSH login in 0.9.8
   (https://issues.apache.org/jira/browse/GUACAMOLE-11)

 * GUACAMOLE-23: __guac_socket_fd_select_handler() must always init fd_set
   (https://issues.apache.org/jira/browse/GUACAMOLE-23)

 * GUACAMOLE-66: Remove usage of Apache Commons Codec Library
   (https://issues.apache.org/jira/browse/GUACAMOLE-66)

 * GUACAMOLE-67: I/O error in WebSocket can cause connection tracking to fail
   (https://issues.apache.org/jira/browse/GUACAMOLE-67)

Re: Testing needed for 0.9.10-incubating

Posted by Mike Jumper <mi...@guac-dev.org>.
On Aug 26, 2016 5:31 AM, "Laurens van Ruiten" <l....@gmail.com>
wrote:
>
> Looking through the scripts, it seems that the mysql script also has this
> NOT NULL constraint however the pre-0.9.10 upgrade scripts don't, so I
> assume that that is why you don't have this problem on the production
> server?  I removed the constraints from both the mysql and the postgresql
> scripts. Would you like me to make a pull request for this?
>

Yes, please.

Many thanks for investigating the issue all the way to the solution.

- Mike

Re: Testing needed for 0.9.10-incubating

Posted by Laurens van Ruiten <l....@gmail.com>.
Looking through the scripts, it seems that the mysql script also has this
NOT NULL constraint however the pre-0.9.10 upgrade scripts don't, so I
assume that that is why you don't have this problem on the production
server?  I removed the constraints from both the mysql and the postgresql
scripts. Would you like me to make a pull request for this?

Kind regards,
L.J.

2016-08-26 14:12 GMT+02:00 Laurens van Ruiten <l....@gmail.com>:

> Mike,
>
> The usage entries do not appear in the database either. I did a simple
> select * and again just the shared session showed up. I am using postgresql
> and I used the scripts from the repository to create the database. Dropped
> the old database, so I did not run any of the database update scripts. Just
> opened and closed a connection again and then opened catalina.out which
> shows an exception. The exception mentions a NOT_NULL violation on
> sharing_profile_name while I just opened a session the normal way and not
> through a sharing link.
>
> You can take a look at the exception details here:
> https://gist.github.com/anonymous/08915cf6ee9a35d25a0cf8d62c718d31
>
> So I guess that  explains what happens. When the session is not shared
> session_profile_name will always be null and the  session cannot be saved
> to the database. When the it is however a shared session there is a
> session_profile_name and the session can be saved to the database.
>
> I modified the 001-create-schema.sql for postgresql and removed the
> NOT_NULL constraint where it creates the guacamole_connection_history
> table. Dropped the database and executed that script again and the history
> now works as expected. So the problem comes from the sql scripts. Not sure
> if just removing the constraints doesnt have some unwanted side effect, but
> it does solve the problem.
>
> Kind regards,
> Lars van Ruiten
>
>
> 2016-08-24 23:41 GMT+02:00 Mike Jumper <mi...@guac-dev.org>:
>
>> On Aug 24, 2016 6:30 AM, "Laurens van Ruiten" <l....@gmail.com>
>> wrote:
>> >
>> > Hi all,
>> >
>> > I have spend about 2 hours now with the new version that I build this
>> > morning from the repositories and I have a few questions/remarks:
>> >
>> > The first thing I noticed is that usage history of a connection does not
>> > seem to work like it should.
>> > What I did is setup a VNC connection to do a simple test and regular
>> > sessions do not seem to appear in the history of that connection. (I did
>> > press disconnect and reopened a session several times)
>>
>> They definitely should appear. Can you confirm whether the entries appear
>> in the guacamole_connection_history table?
>>
>> Which database are you using?
>>
>> > However I also tried the new screen sharing, and when I used the sharing
>> > link on another PC that session did show up in the usage history. So
>> > although I used that connection several times, only the shared session
>> > showed up in the history. Is this new behaviour or a potential bug?
>> >
>>
>> If this is reproducible, it is a potential bug. I've not encountered this
>> on our production server, however. Need to figure out why things aren't
>> working in your case.
>>
>> > The new screen recording feature is really nice and will defeninitely be
>> > used here once it is released, I was just wondering if there was a way
>> to
>> > configure guacamole to manage the log files. I just recorded a few
>> sessions
>> > and have not tried to convert them yet, but they showed up on the server
>> as
>> > connectionname.1, connectionname.2 etc. Will this keep piling up and
>> > eventualy use enormous amounts of disk space or is there a way to
>> configure
>> > guacamole to automatically delete them after say a month?
>> >
>>
>> If you wish the recordings to be cleaned up automatically, I'd recommend
>> just setting up a cron job to delete files older than a particular
>> threshold. I believe the find command has options for exactly that.
>>
>> For the moment, automatic cleanup seems like it would be out of scope for
>> guacd.
>>
>> Thanks,
>>
>> - Mike
>>
>
>

Re: Testing needed for 0.9.10-incubating

Posted by Laurens van Ruiten <l....@gmail.com>.
Mike,

The usage entries do not appear in the database either. I did a simple
select * and again just the shared session showed up. I am using postgresql
and I used the scripts from the repository to create the database. Dropped
the old database, so I did not run any of the database update scripts. Just
opened and closed a connection again and then opened catalina.out which
shows an exception. The exception mentions a NOT_NULL violation on
sharing_profile_name while I just opened a session the normal way and not
through a sharing link.

You can take a look at the exception details here:
https://gist.github.com/anonymous/08915cf6ee9a35d25a0cf8d62c718d31

So I guess that  explains what happens. When the session is not shared
session_profile_name will always be null and the  session cannot be saved
to the database. When the it is however a shared session there is a
session_profile_name and the session can be saved to the database.

I modified the 001-create-schema.sql for postgresql and removed the
NOT_NULL constraint where it creates the guacamole_connection_history
table. Dropped the database and executed that script again and the history
now works as expected. So the problem comes from the sql scripts. Not sure
if just removing the constraints doesnt have some unwanted side effect, but
it does solve the problem.

Kind regards,
Lars van Ruiten


2016-08-24 23:41 GMT+02:00 Mike Jumper <mi...@guac-dev.org>:

> On Aug 24, 2016 6:30 AM, "Laurens van Ruiten" <l....@gmail.com>
> wrote:
> >
> > Hi all,
> >
> > I have spend about 2 hours now with the new version that I build this
> > morning from the repositories and I have a few questions/remarks:
> >
> > The first thing I noticed is that usage history of a connection does not
> > seem to work like it should.
> > What I did is setup a VNC connection to do a simple test and regular
> > sessions do not seem to appear in the history of that connection. (I did
> > press disconnect and reopened a session several times)
>
> They definitely should appear. Can you confirm whether the entries appear
> in the guacamole_connection_history table?
>
> Which database are you using?
>
> > However I also tried the new screen sharing, and when I used the sharing
> > link on another PC that session did show up in the usage history. So
> > although I used that connection several times, only the shared session
> > showed up in the history. Is this new behaviour or a potential bug?
> >
>
> If this is reproducible, it is a potential bug. I've not encountered this
> on our production server, however. Need to figure out why things aren't
> working in your case.
>
> > The new screen recording feature is really nice and will defeninitely be
> > used here once it is released, I was just wondering if there was a way to
> > configure guacamole to manage the log files. I just recorded a few
> sessions
> > and have not tried to convert them yet, but they showed up on the server
> as
> > connectionname.1, connectionname.2 etc. Will this keep piling up and
> > eventualy use enormous amounts of disk space or is there a way to
> configure
> > guacamole to automatically delete them after say a month?
> >
>
> If you wish the recordings to be cleaned up automatically, I'd recommend
> just setting up a cron job to delete files older than a particular
> threshold. I believe the find command has options for exactly that.
>
> For the moment, automatic cleanup seems like it would be out of scope for
> guacd.
>
> Thanks,
>
> - Mike
>

Re: Testing needed for 0.9.10-incubating

Posted by Mike Jumper <mi...@guac-dev.org>.
On Aug 24, 2016 6:30 AM, "Laurens van Ruiten" <l....@gmail.com>
wrote:
>
> Hi all,
>
> I have spend about 2 hours now with the new version that I build this
> morning from the repositories and I have a few questions/remarks:
>
> The first thing I noticed is that usage history of a connection does not
> seem to work like it should.
> What I did is setup a VNC connection to do a simple test and regular
> sessions do not seem to appear in the history of that connection. (I did
> press disconnect and reopened a session several times)

They definitely should appear. Can you confirm whether the entries appear
in the guacamole_connection_history table?

Which database are you using?

> However I also tried the new screen sharing, and when I used the sharing
> link on another PC that session did show up in the usage history. So
> although I used that connection several times, only the shared session
> showed up in the history. Is this new behaviour or a potential bug?
>

If this is reproducible, it is a potential bug. I've not encountered this
on our production server, however. Need to figure out why things aren't
working in your case.

> The new screen recording feature is really nice and will defeninitely be
> used here once it is released, I was just wondering if there was a way to
> configure guacamole to manage the log files. I just recorded a few
sessions
> and have not tried to convert them yet, but they showed up on the server
as
> connectionname.1, connectionname.2 etc. Will this keep piling up and
> eventualy use enormous amounts of disk space or is there a way to
configure
> guacamole to automatically delete them after say a month?
>

If you wish the recordings to be cleaned up automatically, I'd recommend
just setting up a cron job to delete files older than a particular
threshold. I believe the find command has options for exactly that.

For the moment, automatic cleanup seems like it would be out of scope for
guacd.

Thanks,

- Mike

Re: Testing needed for 0.9.10-incubating

Posted by Laurens van Ruiten <l....@gmail.com>.
Hi all,

I have spend about 2 hours now with the new version that I build this
morning from the repositories and I have a few questions/remarks:

The first thing I noticed is that usage history of a connection does not
seem to work like it should.
What I did is setup a VNC connection to do a simple test and regular
sessions do not seem to appear in the history of that connection. (I did
press disconnect and reopened a session several times)
However I also tried the new screen sharing, and when I used the sharing
link on another PC that session did show up in the usage history. So
although I used that connection several times, only the shared session
showed up in the history. Is this new behaviour or a potential bug?

The new screen recording feature is really nice and will defeninitely be
used here once it is released, I was just wondering if there was a way to
configure guacamole to manage the log files. I just recorded a few sessions
and have not tried to convert them yet, but they showed up on the server as
connectionname.1, connectionname.2 etc. Will this keep piling up and
eventualy use enormous amounts of disk space or is there a way to configure
guacamole to automatically delete them after say a month?

Kind regards,
L.J.




2016-08-23 23:09 GMT+02:00 Mike Jumper <mi...@guac-dev.org>:

> Hello all,
>
> It looks like the planned scope of 0.9.10-incubating has been satisfied,
> and
> there are no further open issues related to 0.9.10-incubating changes.
>
> Included in this email is a list of all changes that have gone into the
> Apache
> Guacamole (incubating) repositories since the pre-Incubator 0.9.9 release.
> Links to the relevant issues in JIRA are included for context, as well as
> some
> brief background info where appropriate.
>
> To all those able, *please test as much as possible*. Once it has been
> reasonably-verified that there are no blocking issues, the next logical
> step
> will be to move forward with a release VOTE.
>
> For now, we need:
>
> 1) To verify that previously-working things are not suddenly broken
>    (regressions).
>
> 2) To verify that features/fixes intended for 0.9.10-incubating do indeed
> work
>    as intended.
>
> 3) To verify that changes for 0.9.10-incubating are accurately reflected in
>    the documentation.
>
> The main repositories to test against are incubator-guacamole-client and
> incubator-guacamole-server, both of which must be installed for any
> Guacamole deployment (see the docs):
>
>     https://github.com/apache/incubator-guacamole-client
>     https://github.com/apache/incubator-guacamole-server
>
> The Guacamole documentation itself is in the form of a manual that is kept
> up-to-date with each release (or at least should be - that's part of what
> needs
> to be tested here):
>
>     https://github.com/apache/incubator-guacamole-manual
>
> If anyone has any questions, please ask and we will do our best to assist.
>
> Thanks!
>
> - Mike
>
> ==========
>
> Table of Contents:
>
>     A. Screen sharing
>     B. Screen recording
>     C. Streamlined file transfers
>     D. RDP audio input
>     E. Keyboard improvements
>     F. Local clipboard integration
>     G. Theming extensions
>     H. Docker improvements
>     I. User management
>     J. Partially-reverted clipboard changes
>     K. Concurrency options
>     L. Translations
>     M. Exposing terminal output to JavaScript
>     N. Miscellaneous bugs
>
>
> ----------------------------------------
>  A. Screen sharing
> ----------------------------------------
>
> Explicitly supported by the database authentication backend. Can also be
> used
> by extensions or Guacamole-driven applications in general (when written to
> use
> the appropriate parts of the APIs).
>
> When granted permission, users can generate temporary share links for their
> active connections. Those links are invalidated when they disconnect.
>
>  * GUACAMOLE-5: Allow creation of per-connection share links
>    (https://issues.apache.org/jira/browse/GUACAMOLE-5)
>
>  * GUACAMOLE-13: Finally stabilize and merge GUAC-844 to master
>    (https://issues.apache.org/jira/browse/GUACAMOLE-13)
>
>  * GUACAMOLE-52: Do not delete history records
>    (https://issues.apache.org/jira/browse/GUACAMOLE-52)
>
>
> ----------------------------------------
>  B. Screen recording
> ----------------------------------------
>
> All supported protocols (VNC, RDP, SSH, and telnet) can be configured to
> record
> sessions to disk for later playback. This configuration is specified on a
> per-connection basis. Session recordings are Guacamole protocol dumps of
> the
> server -> client side of the conversation, and can be converted to a normal
> video stream using the "guacenc" utility, which is part of the
> guacamole-server
> build.
>
> Additionally, text-based protocols (SSH and telnet) can record sessions as
> text, using the same format used by the "script" and "scriptreplay"
> commands.
>
>  * GUACAMOLE-4: Implement session recording
>    (https://issues.apache.org/jira/browse/GUACAMOLE-4)
>
>  * GUACAMOLE-16: Implement text-based screen recording for SSH/telnet
>    (https://issues.apache.org/jira/browse/GUACAMOLE-16)
>
>
> ----------------------------------------
>  C. Streamlined file transfers
> ----------------------------------------
>
> The web application will now handle file transfer via HTTP. This speeds
> things
> up, removes limitations on file size imposed by JavaScript, and removes the
> need for initiating the actual download by clicking a link.
>
> File transfer is still handled via the Guacamole protocol. The streams are
> dynamically intercepted, stripped, and exposed via HTTP by the web
> application
> in response to specific REST API requests. This is strictly a frontend
> change
> and does not affect the core Guacamole stack and protocol, which continues
> to
> handle file transfer as it always has.
>
>  * GUACAMOLE-44: Upload/download of files that are more than 1 GB fail
>    (https://issues.apache.org/jira/browse/GUACAMOLE-44)
>
>
> ----------------------------------------
>  D. RDP audio input
> ----------------------------------------
>
> Support for RDP's "AUDIO_INPUT" channel. Configuring this is tricky, and
> Microsoft's documentation is somewhat misleading. It should work
> out-of-the-box
> for Windows 7, while versions of Windows Server will need group policy
> changes
> AND the "Remote Desktop Session Host" feature installed.
>
>  * GUACAMOLE-25: Add support for audio input
>    (https://issues.apache.org/jira/browse/GUACAMOLE-25)
>
>
> ----------------------------------------
>  E. Keyboard improvements
> ----------------------------------------
>
> There are new keymaps which need verification, as well as some fixes. In
> particular, use of the keypad was broken for RDP in 0.9.9. This should be
> fixed now.
>
>  * GUACAMOLE-6: Netherlands keyboard layout created
>    (https://issues.apache.org/jira/browse/GUACAMOLE-6)
>
>  * GUACAMOLE-7: Wrong French keyboard layout
>    (https://issues.apache.org/jira/browse/GUACAMOLE-7)
>
>  * GUACAMOLE-15: Japanese keymap support on RDP
>    (https://issues.apache.org/jira/browse/GUACAMOLE-15)
>
>  * GUACAMOLE-19: "@" characters don't work with French keyboard under IE11
>    (https://issues.apache.org/jira/browse/GUACAMOLE-19)
>
>  * GUACAMOLE-51: Keypad not properly mapped in RDP, SSH, and telnet
>    (https://issues.apache.org/jira/browse/GUACAMOLE-51)
>
>
> ----------------------------------------
>  F. Local clipboard integration
> ----------------------------------------
>
> Guacamole will now use the standard-but-clunky Clipboard API
> (document.execCommand()) to attempt to read the local clipboard. If this
> fails,
> things continue to work as they have in past releases (clipboard access
> via the
> Guacamole menu/sidebar).
>
> IE11 will prompt the user to allow clipboard access, which is actually
> pretty
> nice. For Chrome, there is a third-party extension which allows the user to
> grant access on a per-domain basis:
>
>     https://chrome.google.com/webstore/detail/clipboard-permission-mana/
> ipbhneeanpgkaleihlknhjiaamobkceh
>
>  * GUACAMOLE-24: Directly integrate local clipboard
>    (https://issues.apache.org/jira/browse/GUACAMOLE-24)
>
>
> ----------------------------------------
>  G. Theming extensions
> ----------------------------------------
>
>  * GUACAMOLE-9: Allow modification of HTML via extensions
>    (https://issues.apache.org/jira/browse/GUACAMOLE-9)
>
>
> ----------------------------------------
>  H. Docker improvements
> ----------------------------------------
>
> Beware that the Docker images now live in the incubator-guacamole-client
> and
> incubator-guacamole-server repositories (see GUACMOLE-27).
>
>  * GUACAMOLE-8: Allow concurrency properties to be configured within Docker
>    (https://issues.apache.org/jira/browse/GUACAMOLE-8)
>
>  * GUACAMOLE-21: Support LDAP within Docker image
>    (https://issues.apache.org/jira/browse/GUACAMOLE-21)
>
>  * GUACAMOLE-27: Bring Docker images into new git repositories
>    (https://issues.apache.org/jira/browse/GUACAMOLE-27)
>
>  * GUACAMOLE-50: Update Docker containers to use Java 8
>    (https://issues.apache.org/jira/browse/GUACAMOLE-50)
>
>
> ----------------------------------------
>  I. User management
> ----------------------------------------
>
> Support for role-based access control within LDAP. Also a convenient
> "Clone"
> button for users if the database authentication backend is being used.
>
>  * GUACAMOLE-12: Allow LDAP role-based access control for guacConfigGroups
>    (https://issues.apache.org/jira/browse/GUACAMOLE-12)
>
>  * GUACAMOLE-14: Add support for cloning existing users
>    (https://issues.apache.org/jira/browse/GUACAMOLE-14)
>
>
> ----------------------------------------
>  J. Partially-reverted clipboard changes
> ----------------------------------------
>
> GUACAMOLE-55 was intended to add support for arbitrary clipboard data,
> specifically copy/paste of images for RDP. The Guacamole protocol has
> supported
> this for some time, but the web application only handled text for
> simplicity's
> sake.
>
> After the task grew in complexity, the RDP portion of those changes was
> removed from scope and GUACAMOLE-55 was narrowed to just client-side
> changes.
> Once THAT grew in complexity (mainly due to browser quirks surrounding
> content-editable divs), I partially reverted those changes for the sake of
> a
> stable 0.9.10-incubating.
>
> The "non-risky" parts of GUACAMOLE-55 still remain, namely a better
> internal
> representation of clipboard data and a convenient abstraction of the
> clipboard
> input field, thus the clipboard functionality needs regression testing,
> even
> though the original task was pulled from the release.
>
>  * GUACAMOLE-82: Clipboard behavior regressions since GUACAMOLE-55
>    (https://issues.apache.org/jira/browse/GUACAMOLE-82)
>
>
> ----------------------------------------
>  K. Concurrency options
> ----------------------------------------
>
> Administrators can now restrict the total number of connections used by a
> server.
>
> For the cases where balancing groups may route users to any one of several
> desktops, administrators can now enable "session affinity" on those
> balancing
> groups, ensuring that users are directed to the same underlying connection
> consistently (until they logout from Guacamole).
>
>  * GUACAMOLE-26: Add support for overall concurrency limits
>    (https://issues.apache.org/jira/browse/GUACAMOLE-26)
>
>  * GUACAMOLE-53: Add support for session affinity within balancing groups
>    (https://issues.apache.org/jira/browse/GUACAMOLE-53)
>
>
> ----------------------------------------
>  L. Translations
> ----------------------------------------
>
>  * GUACAMOLE-18: Fix typo in French translation
>    (https://issues.apache.org/jira/browse/GUACAMOLE-18)
>
>  * GUACAMOLE-22: Update missing french translations
>    (https://issues.apache.org/jira/browse/GUACAMOLE-22)
>
>
> ----------------------------------------
>  M. Exposing terminal output to JavaScript
> ----------------------------------------
>
> Not the most easily testable feature, this is mainly useful to those that
> have written applications using the Guacamole API. The protocols which
> leverage
> the terminal emulator built into guacd (SSH and telnet) now expose their
> output
> via the Guacamole protocol's "pipe streams" (essentially named pipes). This
> output can be grabbed and handled by client-side JavaScript for whatever
> purpose can be imagined.
>
>  * GUACAMOLE-17: Allow terminal output to be redirected to pipe streams
>    (https://issues.apache.org/jira/browse/GUACAMOLE-17)
>
>
> ----------------------------------------
>  N. Miscellaneous bugs
> ----------------------------------------
>
>  * GUACAMOLE-10: Keyboard focus is permanently lost after clicking the URL
> bar
>    in IE11 (https://issues.apache.org/jira/browse/GUACAMOLE-10)
>
>  * GUACAMOLE-11: No error screen during an invalid SSH login in 0.9.8
>    (https://issues.apache.org/jira/browse/GUACAMOLE-11)
>
>  * GUACAMOLE-23: __guac_socket_fd_select_handler() must always init fd_set
>    (https://issues.apache.org/jira/browse/GUACAMOLE-23)
>
>  * GUACAMOLE-66: Remove usage of Apache Commons Codec Library
>    (https://issues.apache.org/jira/browse/GUACAMOLE-66)
>
>  * GUACAMOLE-67: I/O error in WebSocket can cause connection tracking to
> fail
>    (https://issues.apache.org/jira/browse/GUACAMOLE-67)
>