Commit Graph
100 Commits
Author SHA1 Message Date
Michael Jumper 88ab68cf6b GUACAMOLE-773: Update commons-collections dependency of guacamole-auth-radius to latest (3.2.2). 2021-09-16 19:51:27 -07:00
Michael Jumper fc9739a4d6 GUACAMOLE-1407: Explicitly fail early if no JDBC driver can be found for MySQL/MariaDB. 2021-08-26 18:37:39 -07:00
Michael Jumper be1ad5dff3 GUACAMOLE-1407: Automatically detect whether MySQL or MariaDB version of "Connector/J" is installed. 2021-08-26 18:37:39 -07:00
Mike Jumper 5cf030a9e3 GUACAMOLE-1397: Merge changes automatically focusing TOTP prompt. 2021-08-23 17:32:48 -07:00
Mike Jumper 43546c830c GUACAMOLE-1261: Merge changes allowing object identifiers to contain slashes within AngularJS URLs. 2021-08-22 18:18:25 -07:00
Mike Jumper 0cc9f46882 GUACAMOLE-1199: Merge corrections to handling of unchanged, database-stored attributes. 2021-08-21 18:01:25 -07:00
Michael Jumper 1d83307b8c GUACAMOLE-1398: Explicitly fit guac-tiled-clients directive to available space.
The CSS rule expanding the guac-tiled-clients directive to fit the
viewport was not properly updated when the elements and classes involved
were changed via c9900434c4. The
"tiled-client-list" class was previously used to represent the root
element of the set of tiled clients, but that element was replaced with
the "guac-tiled-clients" directive.
2021-08-17 02:15:37 -07:00
Michael Jumper 6787d3fa9f GUACAMOLE-1366: Correct sort order of connection history entries.
The sort order of connection history entries should be descending, with
the most recent connection attempt shown first. This has been incorrect
since 1.3.0 due to the migration to the newer, searchable/sortable
history structure.
2021-08-12 23:11:21 -07:00
Michael Jumper 6608ba3e2d GUACAMOLE-1386: Centralize abstraction of KeyboardEvent contents within KeyEvent and its subclasses. 2021-08-12 22:43:16 -07:00
Michael Jumper b629b2137e GUACAMOLE-1386: Do not synchronize modifiers based on key events that were dropped/rejected. 2021-08-12 22:43:16 -07:00
Michael Jumper b347a118fa GUACAMOLE-1386: Defer handling of "Meta" until it is known to be functioning as a modifier.
Some platforms like ChromeOS use the Meta key as an alternative method
for typing individual keys like Home (Meta+Left) and End (Meta+Right).
In these cases, Meta does not function as a modifier and is actually
implicitly released once the keyboard shortcut is identified.

Since we cannot know whether Meta is actually Meta until it's confirmed
to be used by itself or with another key, we need to defer handling of
Meta keydown until either (1) Meta is released without having been used
with another key or (2) Meta is used as a modifier with another key.
2021-08-12 16:33:19 -07:00
Michael Jumper c63eb4477c GUACAMOLE-1387: Update and filter tiled connections only if group is actually changing. 2021-07-28 22:14:08 -07:00
Michael Jumper 5c9483a810 GUACAMOLE-1386: Correct/add "Menu" key definition, which is also not "Super". 2021-07-26 20:26:39 -07:00
Michael Jumper 01a5f6cdb9 GUACAMOLE-1386: Correct keyboard definition of "Windows" key as "Meta", not "Super". 2021-07-26 20:26:04 -07:00
Michael Jumper 8b5cdbb3b5 GUACAMOLE-1386: Define "Meta" key for on-screen keyboard instead of "Super".
The correct key for the "Windows" key (or the Mac "Command" key) is
"Meta". The "Super" key is an entirely different key not used for that
purpose, and it only currently works with Guacamole because the
Guacamole's base RDP keymap specifically maps the "Super" keys to the
"Windows" keys.
2021-07-26 20:11:02 -07:00
Michael Jumper 5e61ec7e84 GUACAMOLE-996: Add LDAP_GROUP_SEARCH_FILTER variable to Docker image. 2021-07-26 02:22:35 -07:00
Michael Jumper 962696199a GUACAMOLE-996: Always apply LDAP group filter, regardless of whether "ldap-config-base-dn" is set. 2021-07-26 02:19:56 -07:00
Michael Jumper 38c03ddfd7 GUACAMOLE-996: Use "(objectClass=*)" as default group filter. 2021-07-26 01:55:46 -07:00
Michael Jumper 9cb42ade67 GUACAMOLE-1383: Use URL-safe client identifiers by default, maintaining backwards compatibility with identifiers using standard base64. 2021-07-20 22:31:12 -07:00
Michael Jumper e79b7b6e4e GUACAMOLE-1383: Do not double-encode client identifiers within URLs. 2021-07-20 21:25:09 -07:00
Michael Jumper 8a57b2037e GUACAMOLE-1384: Ensure all $http error objects are wrapped in Guacamole error objects, even if the relevant request could not be sent. 2021-07-20 20:28:29 -07:00
Michael Jumper de3daf3dc8 GUACAMOLE-275: Request browser to always revalidate cached index.html. 2021-07-20 19:46:00 -07:00
Michael Jumper f94b6c68aa GUACAMOLE-275: Request browser to always revalidate cached dynamic contents. 2021-07-20 18:53:02 -07:00
Michael Jumper e9e1703184 GUACAMOLE-275: Automatically attempt to refresh browser cache if index.html does not match current build. 2021-07-20 18:53:02 -07:00
Michael Jumper 0364d45d9d GUACAMOLE-1378: Correct naming of guacamole-auth-jdbc dist .tar.gz archive.
The distribution .tar.gz of the guacamole-auth-jdbc set of extensions
should be called "guacamole-auth-jdbc-VERSION.tar.gz", not
"guacamole-auth-jdbc-dist-VERSION.tar.gz".
2021-07-17 17:07:53 -07:00
Michael Jumper b9a15285ea GUACAMOLE-724: Remove duplicate injection of $rootScope (already injected via parameter). 2021-07-14 22:24:09 -07:00
Michael Jumper dd86130600 GUACAMOLE-724: Migrate usage of var to const/let in all directly touched code. 2021-07-08 03:31:49 -07:00
Michael Jumper d6c5165f90 GUACAMOLE-724: Update connection parameters in menu after focus changes. 2021-07-08 03:31:49 -07:00
Michael Jumper 95e77c6985 GUACAMOLE-724: Ensure focus is assigned to at least one client after changes are made to a group. 2021-07-08 03:31:49 -07:00
Michael Jumper 69ea8488f3 GUACAMOLE-724: Always emit focus events when focused client changes, even if the change occurs only due to replacing a disconnected client with a connected one. 2021-07-08 03:31:49 -07:00
Michael Jumper 902a111a57 GUACAMOLE-724: Update calls to ManagedFilesystem.getInstance() to provide relevant ManagedClient. 2021-07-08 03:31:49 -07:00
Michael Jumper 6b8b57ef5a GUACAMOLE-724: Ensure connection parameters are updated when likely to be available (not just when group is attached). 2021-07-08 03:31:49 -07:00
Michael Jumper e5a127647b GUACAMOLE-724: Restore sorting client panel by last used timestamp.
Sorting by last used (rather than relying on internal sorting) ensures
that the DOM is only modified as necessary and that CSS animations only
affect client groups that are newly visible in the panel.
2021-07-08 03:31:48 -07:00
Michael Jumper f6909a06e7 GUACAMOLE-724: Prefer to return an existing group rather than create a new one.
This ensures that focus state is maintained when switching from one
group to another. Focus state is otherwise reset when the group is
recreated.
2021-07-08 03:31:48 -07:00
Michael Jumper 74f0e0aec3 GUACAMOLE-724: Preserve current focus states when adding/removing connections from attached group. 2021-07-08 03:31:48 -07:00
Michael Jumper 5968193dfb GUACAMOLE-724: Handle touch gestures while menu is open. 2021-07-08 03:31:48 -07:00
Michael Jumper 7916afd2d3 GUACAMOLE-724: Correct typo preventing menu open gesture from working. 2021-07-08 03:31:48 -07:00
Michael Jumper 2b8eb443d4 GUACAMOLE-724: Ensure tile header sizes match even if empty. 2021-07-08 03:31:48 -07:00
Michael Jumper da62cb1afd GUACAMOLE-724: Allow keyboard interaction with client notifications. 2021-07-08 03:31:48 -07:00
Michael Jumper 025775a040 GUACAMOLE-724: Clean up style of parameter prompts within client notifications. 2021-07-08 03:31:48 -07:00
Michael Jumper 1e69514507 GUACAMOLE-724: Defer connecting until window/display size is known.
Depending on the current state of the browser, the element that will
contain the display may not have an associated size, as the layout has
not yet finished updating. If this occurs, connecting needs to be
deferred until the size becomes known (until a resize event).
2021-07-08 03:31:48 -07:00
Michael Jumper 0e0445f95c GUACAMOLE-724: Add close button for each client tile. 2021-07-08 03:31:48 -07:00
Michael Jumper b294a2fa1e GUACAMOLE-724: Render menu and client tile headers above client-specific modals. 2021-07-08 03:31:48 -07:00
Michael Jumper 5a40429359 GUACAMOLE-724: Do not allow multiple, adjacent modal areas to overlap due to overflow. 2021-07-08 03:31:48 -07:00
Michael Jumper 9f477fd5fe GUACAMOLE-724: Remove unused parameter from clipboardService.setClipboard() calls. 2021-07-08 03:31:48 -07:00
Michael Jumper e58005ae23 GUACAMOLE-724: Leverage DOM rather than CSS to show/hide connection tile headers.
CSS, though clean, results in delays in element size changes. When
switching between a view that has tile headers and a view that does
not, this manifests as visible "popping" as client displays are
initially sized to fit the area without the header followed by the area
with the header. Leveraging AngularJS directly ensures that such
changes occur in lockstep with the connection process.
2021-07-08 03:31:48 -07:00
Michael Jumper 8c0af308da GUACAMOLE-724: Defer connecting until width/height of display area is known. 2021-07-08 03:31:48 -07:00
Michael Jumper c9900434c4 GUACAMOLE-724: Migrate tiled thumbnail rendering to same flex layout as client view. 2021-07-08 03:31:48 -07:00
Michael Jumper 1f2007eb28 GUACAMOLE-724: Replace CSS grid layout with simpler, equialent, and more compatible flex layout. 2021-07-08 03:31:48 -07:00
Michael Jumper 760a96a47d GUACAMOLE-724: Migrate to flex layout for modals for IE10+ compatibility. 2021-07-08 03:31:48 -07:00
Michael Jumper 4a20411eae GUACAMOLE-724: Correct SVG aspect ratio handling in IE10+. 2021-07-08 03:31:48 -07:00
Michael Jumper fe44b55f10 GUACAMOLE-724: Always resolve promise from setClipboard() (as documented).
Returning a value from the callback provided to finally() is not
sufficient to force promise resolution.
2021-07-08 03:31:48 -07:00
Michael Jumper c87bd6bb3e GUACAMOLE-724: Correct "infdig" error due to client group session storage constantly regenerating if logged out. 2021-07-08 03:31:48 -07:00
Michael Jumper c2b252242b GUACAMOLE-724: Correct rendering of tiled clients on IE10+ by migrating to grid layout. 2021-07-08 03:31:48 -07:00
Michael Jumper 09288b79b2 GUACAMOLE-724: Do not show parameter section headers when prompting via modal. 2021-07-08 03:31:48 -07:00
Michael Jumper 8ed27a8b36 GUACAMOLE-724: Properly disconnect if required parameters are not submitted. 2021-07-08 03:31:48 -07:00
Michael Jumper b2b131ef34 GUACAMOLE-724: Increase opacity of client-specific notifications for sake of readability. 2021-07-08 03:31:48 -07:00
Michael Jumper 5903cf902c GUACAMOLE-724: Simplify and correct keyboard handling to NOT send extra key events for Ctrl+Alt+Shift. 2021-07-08 03:31:48 -07:00
Michael Jumper 5e9fe0ea6e GUACAMOLE-724: Scroll entire file transfer manager, not each individual client section. 2021-07-08 03:31:48 -07:00
Michael Jumper 0118489001 GUACAMOLE-724: ManagedClientGroup.forEach() must not attempt to visit non-existent clients. 2021-07-08 03:31:48 -07:00
Michael Jumper b3c410a371 GUACAMOLE-724: Correct unreadable error coloring of new client-specific modals. 2021-07-08 03:31:48 -07:00
Michael Jumper 19aa600b80 GUACAMOLE-724: Migrate file transfer status dialog to multi-client support. 2021-07-08 03:31:48 -07:00
Michael Jumper 6b296374d5 GUACAMOLE-724: Add per-tile visual indication of drag/drop. 2021-07-08 03:31:48 -07:00
Michael Jumper 68e856987e GUACAMOLE-724: Clear out sharing profiles from previous client if focus is changing to a client lacking a UUID. 2021-07-08 03:31:48 -07:00
Michael Jumper 5e2e28365c GUACAMOLE-724: Track client focus changes within tiled client directive, not just in changes to overall attached group. 2021-07-08 03:31:48 -07:00
Michael Jumper 7d5b6c6898 GUACAMOLE-724: Add indicator showing whether a tiled connection is shared. 2021-07-08 03:31:48 -07:00
Michael Jumper 0ea12ca5aa GUACAMOLE-724: Switch to SVG versions of all PNG images. 2021-07-08 03:31:48 -07:00
Michael Jumper 4c1876341d GUACAMOLE-724: Remove .png images that are not actually referenced. 2021-07-08 03:31:48 -07:00
Michael Jumper 6f9e2a8b78 GUACAMOLE-724: Allow multiple tiled clients to be focused using Shift+Click and Ctrl+Click. 2021-07-08 03:31:48 -07:00
Michael Jumper 90f2270dab GUACAMOLE-724: Move handling of drag/pinch gestures to individual client tiles. 2021-07-08 03:31:48 -07:00
Michael Jumper b0febd3402 GUACAMOLE-724: Migrate client zoom editor to own directive. 2021-07-08 03:31:48 -07:00
Michael Jumper 448ebb5019 GUACAMOLE-724: Ensure focus is not retained when transferring a client from an unattached group to an attached group. 2021-07-08 03:31:48 -07:00
Michael Jumper 19a32d3e10 GUACAMOLE-724: Expose checkboxes within Guacamole menu for adding/removing connections from current view. 2021-07-08 03:31:48 -07:00
Michael Jumper a249876bff GUACAMOLE-724: Replace per-client clipboard with shared clipboard. 2021-07-08 03:31:48 -07:00
Michael Jumper 63452b7bc8 GUACAMOLE-724: Automatically focus the first client if no client has yet been focused. 2021-07-08 03:31:48 -07:00
Michael Jumper d0b1fb7d7f GUACAMOLE-724: Control only the currently-focused client with client-specific menu options. 2021-07-08 03:31:48 -07:00
Michael Jumper 3f4c6a4cd1 GUACAMOLE-724: Move mouse emulation setting from client to menu. 2021-07-08 03:31:48 -07:00
Michael Jumper 4b227fe8c6 GUACAMOLE-724: Remove client-side "last used" timestamp (no longer needed).
The last-used timestamp was previously required to sort active clients
within the client panel in a sensible and deterministic order. This now
happens automatically via client groups, which are stored in an array
in order of last use. No code remains referencing the last-used
timestamp.
2021-07-08 03:31:48 -07:00
Michael Jumper 1f2cd94a65 GUACAMOLE-724: Display nifty "pop" animation when a new client appears within the client panel. 2021-07-08 03:31:48 -07:00
Michael Jumper aae80292cb GUACAMOLE-724: Abstract away groups of running clients within their own type. 2021-07-08 03:31:48 -07:00
Michael Jumper eab80688cc GUACAMOLE-641: Ensure MyBatis "expectedConnectionTypeCode" is generated and matches valid database connections. 2021-06-21 14:44:09 -07:00
Michael Jumper 6ef951cd61 GUACAMOLE-641: Log creation of new database connections. 2021-06-21 14:43:19 -07:00
Michael Jumper ca443c8a34 GUACAMOLE-641: Add support for all MyBatis JDBC properties to DynamicallyAuthenticatedDataSource.
Without support for these properties, important database configuration
aspects are ignored, including driver-specific configuration properties
like MySQL Connector/J's "allowMultiQueries".
2021-06-21 14:41:09 -07:00
Michael Jumper bfd3cbc204 GUACAMOLE-724: Do not reload client controller if only updating which client(s) are visible.
Reloading the client controller would reset UI state, including whether
the Guacamole menu is currently shown.
2021-06-17 20:32:53 -07:00
Michael Jumper 2f1d46aa86 GUACAMOLE-724: Provide separate, client-specific notifications for each tiled client. 2021-06-17 20:32:53 -07:00
Michael Jumper fbdb692444 GUACAMOLE-724: Remove unused arbitrary parameters from client route (the webapp tunnel doesn't use these). 2021-06-16 11:28:35 -07:00
Michael Jumper 85d01ba730 GUACAMOLE-724: Implement base support for displaying multiple connections in a tiled grid. 2021-06-16 11:28:35 -07:00
Michael Jumper 2aa6a5b628 GUACAMOLE-1364: Ensure extension resources are included in defined order. 2021-06-15 00:21:56 -07:00
Michael Jumper 45c2cbf6b8 GUACAMOLE-1364: Remove inconsistent "guac-" prefix from standard extension namespaces. 2021-06-15 00:21:56 -07:00
Michael Jumper 6a6cae0e30 GUACAMOLE-1364: Add "extension-priority" property for overriding extension load order. 2021-06-15 00:21:56 -07:00
Michael Jumper 85bc4ac52b GUACAMOLE-680: Correct grammar of authenticationService documentation.
"promise succeeds" should be "promise that succeeds".
2021-06-14 15:48:52 -07:00
Michael Jumper ef590d2b3b GUACAMOLE-680: Display logged-out status as notification. 2021-06-13 22:26:42 -07:00
Michael Jumper b29c0a03ea GUACAMOLE-680: Use common styling for all dialogs/notifications. 2021-06-13 22:26:42 -07:00
Michael Jumper 529e19729b GUACAMOLE-680: Ensure the "guacLogout" event is specific to manual logouts. 2021-06-13 22:26:42 -07:00
Michael Jumper 823970eb7f GUACAMOLE-680: Display status message upon logout (rather than immediately reauthenticating).
The former behavior (immediately reauthenticating) typically results in
the login screen appearing, but will also instantly sign the user back
in if a single sign-on solution is being used. This results in the
logout action appearing to have no effect when SSO is involved.
2021-06-13 22:24:14 -07:00
Michael Jumper 581a7cb47a GUACAMOLE-680: Refactor repeated modal structures to common directive. 2021-06-13 22:24:14 -07:00
Michael Jumper a8aa3bef52 GUACAMOLE-773: Restore missing static template/layout files.
The on-screen keyboard layouts and AngularJS templates were previously
part of the Java webapp build, but are now part of the NPM/Webpack
build. Those files were incorrectly left out of the Webpack config,
causing the on-screen keyboard and automatic display resize to fail.

Display of the on-screen keyboard fails without these files as it relies
on loading the on-screen keyboard layouts dynamically via HTTP. Handling
of automatic display resize fails because this relies on a hidden
<object> element containing a blank HTML document, with that document
served statically over HTTP.
2021-06-04 02:08:54 -07:00
Michael Jumper 6bcef68c9f GUACAMOLE-773: Exclude node_modules directory from source archive. 2021-06-03 03:45:01 -07:00
Michael Jumper b90a083fe1 GUACAMOLE-773: Use caret version notation for JavaScript dependencies where appropriate.
The default caret version notation that is already well-established in
the NPM community should be used except where there is reason not to.
Here, it makes sense to use the caret for all dependencies except:

1. "google-closure-compiler", which does not use semantic versioning
   and does not guarantee a compatible API. We cannot know that a new
   release is expected to be compatible and thus must specify an exact
   version.

2. "blob-polyfill", which does not use semantic versioning BUT must
   provide a compatible API by its own nature (it is a polyfill for an
   API defined by a W3C standard). Any current, stable release should be
   OK for "blob-polyfill", hence ">=".
2021-06-02 20:37:52 -07:00
Michael Jumper 3ec578edce GUACAMOLE-773: Remove angular-touch (no longer applicable).
Previously, the angular-touch library provided by AngularJS was used to
allow click interactions with UI components to work on touch devices
without an uncomfortable ~300ms delay. From AngularJS 1.7.x onward, this
feature of angular-touch is no longer present:

https://docs.angularjs.org/guide/migration#ngtouch

This should be OK - modern browsers will now recognize applications
aimed at touch support via the use of the "viewport" meta tag (which we
use), removing our original need for angular-touch. The same goes for
IE10+.
2021-06-02 20:37:52 -07:00