From https://infra.apache.org/licensing-howto.html#bundle-asf-product:
>
> Modifications to NOTICE
> -----------------------
>
> The NOTICE file is reserved for a certain subset of legally required
> notifications which are not satisfied by either the text of LICENSE or
> the presence of licensing information embedded within the bundled
> dependency. Aside from Apache-licensed dependencies which supply NOTICE
> files of their own, it is uncommon for a dependency to require additions
> to NOTICE.
>
> Copyright notifications which have been relocated, rather than
> removed, from source files must be preserved in NOTICE. However,
> elements such as the copyright notifications embedded within BSD and MIT
> licenses do not need to be duplicated in NOTICE. You can leave those
> notices in their original locations.
>
> It is important to keep NOTICE as brief and simple as possible, as each
> addition places a burden on downstream consumers.
>
> *Do not* add anything to NOTICE which is not legally required.
>
Children of the parent project will inherit the parent's build plugins,
which breaks everything when each child project attempts to build its
own source archive.
Without OPENSSL_CONF explicitly set, the guacamole-common-js portion of
the build fails, as PhantomJS (used for the new unit tests) cannot find
libssl_conf.so:
139677016997504:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
139677016997504:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
139677016997504:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
139677016997504:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf
Feb 12, 2021 5:09:33 AM org.openqa.selenium.os.UnixProcess checkForError
SEVERE: org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
The getGuacamoleConfiguration() function *used* to perform token
substitution. Since the deprecation of the StandardTokens class, this
is no longer the case.
The protocol associated with a tunnel should be correctly set
regardless of whether the tunnel results from a Connection,
ConnectionGroup, or ActiveConnection.
If the protocol name and parameters are retrieved from Connection-
specific endpoints, then the protocol-specific context needed for
Guacamole instructions like "argv" and "required" will only be
available for Connections (not ConnectionGroups or ActiveConnections).
Previous versions of the SQL Server queries relied on permission for
each object being granted from exactly one location, thus allowing
queries to be narrowed by permission using a simple JOIN. This is no
longer the case, as permissions may be inherited from multiple
locations (groups).
Previous versions of the MySQL queries relied on permission for each
object being granted from exactly one location, thus allowing queries
to be narrowed by permission using a simple JOIN. This is no longer
the case, as permissions may be inherited from multiple locations
(groups).
Previous versions of the PostgreSQL queries relied on permission for
each object being granted from exactly one location, thus allowing
queries to be narrowed by permission using a simple JOIN. This is no
longer the case, as permissions may be inherited from multiple
locations (groups).
The proper database IDs must be populated in the current user's
ModeledUser for other parts of the database extension to work
correctly, including saving of user attributes.
As activeTunnels is a live map which may change while
getActiveConnections() is running, it is possible for an initial call
to activeTunnels.isEmpty() to pass yet for the set of connection
identifiers produced to be empty.
If expected fields are deleted rather than reset to empty, those fields
will not be resubmitted in future requests, resulting in the content of
those requests not accurately representing true client-side login state.
For example, if a user receives an insufficient credentials error due to
their password expiring, failing to provide any new password should
result in at least the following fields:
1. Their original username (part of the initial login attempt)
2. Their original password (part of the initial login attempt)
3. Their new password (empty)
If fields are incorrectly reset to null, those fields will not be
submitted, resulting instead in a request containing only:
1. Their original username (part of the initial login attempt)
2. Their original password (part of the initial login attempt)
which is indistinguishable from a normal login attempt.