From 0f2c1f50db4746dfa403f0a3c3fa2cf14c1abf21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adolfo=20G=C3=B3mez=20Garc=C3=ADa?= Date: Tue, 6 Jun 2023 21:58:27 +0200 Subject: [PATCH] Organizing a bit the code into more repositories --- guacamole-auth-uds/.gitignore | 11 - guacamole-auth-uds/pom.xml | 92 -------- .../guacamole/UDSAuthenticatedUser.java | 103 --------- .../guacamole/UDSAuthenticationProvider.java | 149 ------------- .../java/org/openuds/guacamole/UDSModule.java | 73 ------- .../org/openuds/guacamole/UDSUserContext.java | 110 ---------- .../config/ConfigurationService.java | 80 ------- .../guacamole/config/package-info.java | 32 --- .../connection/ConnectionService.java | 201 ------------------ .../guacamole/connection/UDSConnection.java | 142 ------------- .../guacamole/connection/package-info.java | 33 --- .../org/openuds/guacamole/package-info.java | 32 --- .../src/main/resources/guac-manifest.json | 16 -- .../src/main/resources/translations/en.json | 7 - .../webapp/images/action-icons/guac-back.png | Bin 586 -> 0 bytes .../webapp/images/action-icons/guac-close.png | Bin 512 -> 0 bytes .../images/action-icons/guac-config.png | Bin 1230 -> 0 bytes .../images/action-icons/guac-delete.png | Bin 611 -> 0 bytes .../images/action-icons/guac-first-page.png | Bin 690 -> 0 bytes .../images/action-icons/guac-group-add.png | Bin 525 -> 0 bytes .../images/action-icons/guac-last-page.png | Bin 707 -> 0 bytes .../images/action-icons/guac-logout.png | Bin 1024 -> 0 bytes .../images/action-icons/guac-monitor-add.png | Bin 560 -> 0 bytes .../images/action-icons/guac-next-page.png | Bin 626 -> 0 bytes .../images/action-icons/guac-prev-page.png | Bin 648 -> 0 bytes .../images/action-icons/guac-user-add.png | Bin 810 -> 0 bytes .../main/webapp/images/arrows/arrows-d.png | Bin 3182 -> 0 bytes .../main/webapp/images/arrows/arrows-l.png | Bin 2750 -> 0 bytes .../main/webapp/images/arrows/arrows-r.png | Bin 2784 -> 0 bytes .../main/webapp/images/arrows/arrows-u.png | Bin 3185 -> 0 bytes .../webapp/images/group-icons/guac-closed.png | Bin 843 -> 0 bytes .../webapp/images/group-icons/guac-open.png | Bin 717 -> 0 bytes .../src/main/webapp/images/guac-mono-192.png | Bin 6041 -> 0 bytes .../main/webapp/images/guacamole-logo-144.png | Bin 9167 -> 0 bytes .../main/webapp/images/guacamole-logo-24.png | Bin 1520 -> 0 bytes .../main/webapp/images/guacamole-logo-64.png | Bin 5082 -> 0 bytes .../src/main/webapp/images/mouse/blank.cur | Bin 326 -> 0 bytes .../src/main/webapp/images/mouse/blank.gif | Bin 71 -> 0 bytes .../src/main/webapp/images/mouse/dot.gif | Bin 72 -> 0 bytes .../webapp/images/noguacamole-logo-24.png | Bin 1245 -> 0 bytes .../src/main/webapp/images/progress.png | Bin 473 -> 0 bytes .../images/protocol-icons/guac-monitor.png | Bin 691 -> 0 bytes .../images/protocol-icons/guac-plug.png | Bin 727 -> 0 bytes .../images/protocol-icons/guac-text.png | Bin 792 -> 0 bytes .../webapp/images/settings/tablet-keys.png | Bin 3175 -> 0 bytes .../main/webapp/images/settings/touchpad.png | Bin 38013 -> 0 bytes .../webapp/images/settings/touchscreen.png | Bin 24025 -> 0 bytes .../main/webapp/images/settings/zoom-in.png | Bin 1553 -> 0 bytes .../main/webapp/images/settings/zoom-out.png | Bin 1521 -> 0 bytes .../webapp/images/user-icons/guac-user.png | Bin 1049 -> 0 bytes 50 files changed, 1081 deletions(-) delete mode 100644 guacamole-auth-uds/.gitignore delete mode 100644 guacamole-auth-uds/pom.xml delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSAuthenticatedUser.java delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSAuthenticationProvider.java delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSModule.java delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSUserContext.java delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/ConfigurationService.java delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/package-info.java delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/ConnectionService.java delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/UDSConnection.java delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/package-info.java delete mode 100644 guacamole-auth-uds/src/main/java/org/openuds/guacamole/package-info.java delete mode 100644 guacamole-auth-uds/src/main/resources/guac-manifest.json delete mode 100644 guacamole-auth-uds/src/main/resources/translations/en.json delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-back.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-close.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-config.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-delete.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-first-page.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-group-add.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-last-page.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-logout.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-monitor-add.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-next-page.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-prev-page.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/action-icons/guac-user-add.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/arrows/arrows-d.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/arrows/arrows-l.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/arrows/arrows-r.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/arrows/arrows-u.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/group-icons/guac-closed.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/group-icons/guac-open.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/guac-mono-192.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/guacamole-logo-144.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/guacamole-logo-24.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/guacamole-logo-64.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/mouse/blank.cur delete mode 100644 guacamole-auth-uds/src/main/webapp/images/mouse/blank.gif delete mode 100644 guacamole-auth-uds/src/main/webapp/images/mouse/dot.gif delete mode 100644 guacamole-auth-uds/src/main/webapp/images/noguacamole-logo-24.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/progress.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-monitor.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-plug.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-text.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/settings/tablet-keys.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/settings/touchpad.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/settings/touchscreen.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/settings/zoom-in.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/settings/zoom-out.png delete mode 100644 guacamole-auth-uds/src/main/webapp/images/user-icons/guac-user.png diff --git a/guacamole-auth-uds/.gitignore b/guacamole-auth-uds/.gitignore deleted file mode 100644 index acb95da7e..000000000 --- a/guacamole-auth-uds/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -# Backup files -*~ - -# Generated files -target/ - -# IDE-specific configuration -nb-configuration.xml -.classpath -.project - diff --git a/guacamole-auth-uds/pom.xml b/guacamole-auth-uds/pom.xml deleted file mode 100644 index 66c51e760..000000000 --- a/guacamole-auth-uds/pom.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - 4.0.0 - org.openuds.server - guacamole-auth-uds - jar - 4.0.0 - UDS Integration Extension for Apache Guacamole - https://github.com/VirtualCable/openuds - - - UTF-8 - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 11 - 11 - - -Xlint:all - -Werror - - true - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - unpack-dependencies - prepare-package - - unpack-dependencies - - - runtime - ${project.build.directory}/classes - - - - - - - - - - - - javax.servlet - servlet-api - provided - 2.5 - - - - - javax.ws.rs - jsr311-api - provided - 1.1.1 - - - - - org.apache.guacamole - guacamole-ext - 1.5.1 - provided - - - - - com.google.inject - guice - 5.1.0 - - - - - diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSAuthenticatedUser.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSAuthenticatedUser.java deleted file mode 100644 index ccdb94a32..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSAuthenticatedUser.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2020 Virtual Cable S.L.U. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L.U. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.openuds.guacamole; - -import org.apache.guacamole.net.auth.AbstractAuthenticatedUser; -import org.apache.guacamole.net.auth.AuthenticatedUser; -import org.apache.guacamole.net.auth.AuthenticationProvider; -import org.apache.guacamole.net.auth.Credentials; -import org.openuds.guacamole.connection.UDSConnection; - -/** - * A Guacamole user that was authenticated by an external UDS service. - */ -public class UDSAuthenticatedUser extends AbstractAuthenticatedUser { - - /** - * The AuthenticationProvider that authenticated this user. - */ - private final AuthenticationProvider authProvider; - - /** - * The credentials provided by this user when they authenticated. - */ - private final Credentials credentials; - - /** - * The single connection that this user should be authorized to access. - */ - private final UDSConnection connection; - - /** - * Creates a new UDSAuthenticatedUser representing a Guacamole user that - * was authenticated by an external UDS service. - * - * @param authProvider - * The AuthenticationProvider that authenticated the user. - * - * @param credentials - * The credentials provided by the user when they authenticated. - * - * @param connection - * The single connection that the user should be authorized to access. - */ - public UDSAuthenticatedUser(AuthenticationProvider authProvider, - Credentials credentials, UDSConnection connection) { - this.authProvider = authProvider; - this.credentials = credentials; - this.connection = connection; - } - - @Override - public String getIdentifier() { - return AuthenticatedUser.ANONYMOUS_IDENTIFIER; - } - - @Override - public AuthenticationProvider getAuthenticationProvider() { - return authProvider; - } - - @Override - public Credentials getCredentials() { - return credentials; - } - - /** - * Returns the single connection that this user should be authorized to - * access. - * - * @return - * The single connection that this user should be authorized to access. - */ - public UDSConnection getConnection() { - return connection; - } - -} diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSAuthenticationProvider.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSAuthenticationProvider.java deleted file mode 100644 index a91d31dd1..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSAuthenticationProvider.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 2020 Virtual Cable S.L. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.openuds.guacamole; - -import com.google.inject.Guice; -import com.google.inject.Injector; -import java.util.Collections; -import javax.servlet.http.HttpServletRequest; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.form.Field; -import org.apache.guacamole.net.auth.AbstractAuthenticationProvider; -import org.apache.guacamole.net.auth.AuthenticatedUser; -import org.apache.guacamole.net.auth.Credentials; -import org.apache.guacamole.net.auth.UserContext; -import org.apache.guacamole.net.auth.credentials.CredentialsInfo; -import org.apache.guacamole.net.auth.credentials.GuacamoleInvalidCredentialsException; -import org.openuds.guacamole.connection.ConnectionService; -import org.openuds.guacamole.connection.UDSConnection; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * AuthenticationProvider implementation which authenticates users that are - * confirmed as authorized by an external UDS service. - */ -public class UDSAuthenticationProvider extends AbstractAuthenticationProvider { - - /** - * The name of the query parameter that should contain the data sent to - * the UDS service for authentication. - */ - private static final String DATA_PARAMETER_NAME = "data"; - - /** - * The form of credentials accepted by this extension. - */ - private static final CredentialsInfo UDS_CREDENTIALS = - new CredentialsInfo(Collections.singletonList( - new Field(DATA_PARAMETER_NAME, Field.Type.QUERY_PARAMETER) - )); - - /** - * Logger for this class. - */ - private final Logger logger = LoggerFactory.getLogger(UDSAuthenticationProvider.class); - - /** - * Service for retrieving connection configuration information from the - * UDS service. - */ - private final ConnectionService connectionService; - - /** - * Creates a new UDSAuthenticationProvider which authenticates users - * against an external UDS service. - * - * @throws GuacamoleException - * If an error prevents guacamole.properties from being read. - */ - public UDSAuthenticationProvider() throws GuacamoleException { - - // Create an injector with OpenUDS- and Guacamole-specific services - // properly bound - Injector injector = Guice.createInjector( - new UDSModule() - ); - - // Pull instance of connection service from injector - connectionService = injector.getInstance(ConnectionService.class); - - } - - @Override - public String getIdentifier() { - return "uds"; - } - - @Override - public AuthenticatedUser authenticateUser(Credentials credentials) - throws GuacamoleException { - - HttpServletRequest request = credentials.getRequest(); - - // Pull OpenUDS-specific "data" parameter - String data = request.getParameter(DATA_PARAMETER_NAME); - if (data == null || data.isEmpty()) { - logger.debug("UDS connection data was not provided. No connection retrieval from UDS will be performed."); - throw new GuacamoleInvalidCredentialsException("Connection data was not provided.", UDS_CREDENTIALS); - } - - try { - - // Retrieve connection information using provided data - UDSConnection connection = new UDSConnection(connectionService, data); - - // Report successful authentication as a temporary, anonymous user, - // storing the retrieved connection configuration data for future use - return new UDSAuthenticatedUser(this, credentials, connection); - - } - catch (GuacamoleException e) { - logger.info("Provided connection data could not be validated with UDS: {}", e.getMessage()); - logger.debug("Validation of UDS connection data failed.", e); - throw new GuacamoleInvalidCredentialsException("Connection data was rejected by UDS.", e, UDS_CREDENTIALS); - } - - } - - @Override - public UserContext getUserContext(AuthenticatedUser authenticatedUser) - throws GuacamoleException { - - // Provide data only for users authenticated by this extension - if (!(authenticatedUser instanceof UDSAuthenticatedUser)) - return null; - - // Expose a single connection (derived from the "data" parameter - // provided during authentication) - return new UDSUserContext(this, (UDSAuthenticatedUser) authenticatedUser); - - } - -} diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSModule.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSModule.java deleted file mode 100644 index 68fdd8d87..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSModule.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2015 Virtual Cable S.L. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.openuds.guacamole; - -import com.google.inject.AbstractModule; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.environment.Environment; -import org.apache.guacamole.environment.LocalEnvironment; -import org.openuds.guacamole.config.ConfigurationService; -import org.openuds.guacamole.connection.ConnectionService; - -/** - * Guice module which binds classes required by the OpenUDS integration of - * Apache Guacamole. - */ -public class UDSModule extends AbstractModule { - - /** - * The Guacamole server environment. - */ - private final Environment environment; - - /** - * Creates a new UDSModule which binds classes required by the OpenUDS - * integration of Apache Guacamole, including an implementation of the - * Guacamole server {@link Environment}. - * - * @throws GuacamoleException - * If the guacamole.properties file cannot be read. - */ - public UDSModule() throws GuacamoleException { - this.environment = LocalEnvironment.getInstance(); - } - - @Override - protected void configure() { - - // Bind instance of Guacamole server environment - bind(Environment.class).toInstance(environment); - - // Bind UDS-specific services - bind(ConfigurationService.class); - bind(ConnectionService.class); - - } - -} diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSUserContext.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSUserContext.java deleted file mode 100644 index bfbe2c0f8..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSUserContext.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2020 Virtual Cable S.L. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.openuds.guacamole; - -import java.util.Collections; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.net.auth.AbstractUserContext; -import org.apache.guacamole.net.auth.AuthenticationProvider; -import org.apache.guacamole.net.auth.Connection; -import org.apache.guacamole.net.auth.Directory; -import org.apache.guacamole.net.auth.User; -import org.apache.guacamole.net.auth.permission.ObjectPermissionSet; -import org.apache.guacamole.net.auth.simple.SimpleDirectory; -import org.apache.guacamole.net.auth.simple.SimpleObjectPermissionSet; -import org.apache.guacamole.net.auth.simple.SimpleUser; -import org.openuds.guacamole.connection.UDSConnection; - -/** - * UserContext implementation which exposes access only to a single - * UDSConnection. The details of the connection exposed are determined by the - * UDS-specific data associated with the user. - */ -public class UDSUserContext extends AbstractUserContext { - - /** - * The unique identifier of the root connection group. - */ - public static final String ROOT_CONNECTION_GROUP = DEFAULT_ROOT_CONNECTION_GROUP; - - /** - * The AuthenticationProvider that produced this UserContext. - */ - private final AuthenticationProvider authProvider; - - /** - * The AuthenticatedUser for whom this UserContext was created. - */ - private final UDSAuthenticatedUser authenticatedUser; - - /** - * Creates a new UDSUserContext that is associated with the given - * AuthenticationProvider and uses the UDS-specific data of the given - * UDSAuthenticatedUser to determine the connection that user can access. - * - * @param authProvider - * The AuthenticationProvider that is producing the UserContext. - * - * @param authenticatedUser - * The AuthenticatedUser for whom this UserContext is being created. - */ - public UDSUserContext(AuthenticationProvider authProvider, - UDSAuthenticatedUser authenticatedUser) { - this.authProvider = authProvider; - this.authenticatedUser = authenticatedUser; - } - - @Override - public User self() { - return new SimpleUser() { - - @Override - public ObjectPermissionSet getConnectionGroupPermissions() throws GuacamoleException { - return new SimpleObjectPermissionSet(Collections.singleton(DEFAULT_ROOT_CONNECTION_GROUP)); - } - - @Override - public ObjectPermissionSet getConnectionPermissions() throws GuacamoleException { - return new SimpleObjectPermissionSet(Collections.singleton(UDSConnection.IDENTIFIER)); - } - - }; - } - - @Override - public AuthenticationProvider getAuthenticationProvider() { - return authProvider; - } - - @Override - public Directory getConnectionDirectory() throws GuacamoleException { - return new SimpleDirectory<>(authenticatedUser.getConnection()); - } - -} diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/ConfigurationService.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/ConfigurationService.java deleted file mode 100644 index e3e8e252e..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/ConfigurationService.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2015 Virtual Cable S.L. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.openuds.guacamole.config; - -import com.google.inject.Inject; -import com.google.inject.Singleton; -import java.net.URI; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.environment.Environment; -import org.apache.guacamole.properties.URIGuacamoleProperty; - -/** - * Service that provides access to OpenUDS-specific configuration information - * stored within guacamole.properties. - */ -@Singleton -public class ConfigurationService { - - /** - * The name of the property within guacamole.properties which defines the - * base URL of the service providing connection configuration information. - */ - private static final URIGuacamoleProperty UDS_BASE_URL_PROPERTY = new URIGuacamoleProperty() { - - @Override - public String getName() { - return "uds-base-url"; - } - - }; - - /** - * The Guacamole server environment. - */ - @Inject - private Environment environment; - - /** - * Returns the base URI of the OpenUDS service. All services providing data - * to this Guacamole integration are hosted beneath this base URI. - * - * @return - * The base URI of the OpenUDS service. - * - * @throws GuacamoleException - * If the base URI of the OpenUDS service is not defined because the - * tunnel.properties file could not be parsed when the web application - * started. - */ - public URI getUDSBaseURI() throws GuacamoleException { - return environment.getRequiredProperty(UDS_BASE_URL_PROPERTY); - } - -} diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/package-info.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/package-info.java deleted file mode 100644 index 89f7aa079..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/package-info.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2015 Virtual Cable S.L. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Classes used to retrieve OpenUDS-specific configuration information. - */ -package org.openuds.guacamole.config; diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/ConnectionService.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/ConnectionService.java deleted file mode 100644 index e22146496..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/ConnectionService.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (c) 2015 Virtual Cable S.L. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.openuds.guacamole.connection; - -import com.google.inject.Inject; -import com.google.inject.Singleton; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URI; -import java.net.URLConnection; -import java.util.HashMap; -import java.util.Map; -import javax.ws.rs.core.UriBuilder; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.GuacamoleServerException; -import org.apache.guacamole.protocol.GuacamoleConfiguration; -import org.openuds.guacamole.config.ConfigurationService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Service which communicates with the remote OpenUDS connection service, - * providing access to the underlying connection configuration. - */ -@Singleton -public class ConnectionService { - - /** - * Logger for this class. - */ - private final Logger logger = LoggerFactory.getLogger(ConnectionService.class); - - /** - * The name of the parameter returned by the OpenUDS connection - * configuration service which will contain the protocol that Guacamole - * should use to initiate the remote desktop connection. - */ - private static final String PROTOCOL_PARAMETER = "protocol"; - - /** - * Service for retrieving configuration information. - */ - @Inject - private ConfigurationService configService; - - /** - * Makes an HTTP GET request to the OpenUDS service running at the given - * URI, parsing the response into connection configuration data. The - * response MUST be simple text, one line per connection parameter, with the - * name of the connection parameter separated from the corresponding value - * by a tab character. If the OpenUDS service encounters an error, it is - * expected to return the single word "ERROR" on one line. Lines which do - * not match these expectations will be skipped. - * - * @param uri - * The URI of the OpenUDS service to which the HTTP GET request should - * be made. - * - * @return - * A map of all parameter name/value pairs returned by the OpenUDS - * service. - * - * @throws GuacamoleException - * If the OpenUDS service returns an error, or the response from the - * service cannot be read. - */ - private Map readConnectionConfiguration(URI uri) - throws GuacamoleException { - - BufferedReader response; - - // Connect to OpenUDS - try { - URLConnection connection = uri.toURL().openConnection(); - response = new BufferedReader(new InputStreamReader(connection.getInputStream())); - } - catch (IOException e) { - throw new GuacamoleServerException("Unable to open connection to OpenUDS service.", e); - } - - Map parameters = new HashMap(); - - // Read and parse each line of the response - try { - - String inputLine; - while ((inputLine = response.readLine()) != null) { - - // Abort upon error - if (inputLine.equals("ERROR")) - throw new GuacamoleServerException("OpenUDS service returned an error."); - - // Determine separation between each line's key and value - int tab = inputLine.indexOf('\t'); - if (tab == -1) - continue; - - // Add key/value pair from either side of the tab - parameters.put( - inputLine.substring(0, tab), - inputLine.substring(tab + 1) - ); - - } - - } - - // Rethrow any error which occurs during reading - catch (IOException e) { - throw new GuacamoleServerException("Failed to read response from OpenUDS service.", e); - } - - // Always close the stream - finally { - - try { - response.close(); - } - catch (IOException e) { - logger.warn("Closure of connection to OpenUDS failed. Resource may leak.", e); - } - - } - - // Parameters have been successfully parsed - return parameters; - - } - - /** - * Queries OpenUDS for the connection configuration for the connection - * associated with the given data. This data is an opaque value provided - * via the "data" parameter to the Guacamole tunnel. - * - * @param data - * The OpenUDS-specific data which defines the connection whose - * configuration should be retrieved. - * - * @return - * The configuration of the connection associated with the provided - * OpenUDS-specific data. - * - * @throws GuacamoleException - * If the connection configuration could not be retrieved from OpenUDS, - * of the response from OpenUDS was missing required information. - */ - public GuacamoleConfiguration getConnectionConfiguration(String data) - throws GuacamoleException { - - logger.debug("Retrieving/validating connection configuration using data from \"{}\"...", data); - - // Build URI of remote service from the base URI and given data - URI serviceURI = UriBuilder.fromUri(configService.getUDSBaseURI()) - .path(data) - .build(); - - // Pull connection configuration from remote service - Map params = readConnectionConfiguration(serviceURI); - - // Pull the protocol from the parameters - String protocol = params.remove(PROTOCOL_PARAMETER); - if (protocol == null) - throw new GuacamoleServerException("Protocol missing from OpenUDS response."); - - // Create our configuration - GuacamoleConfiguration config = new GuacamoleConfiguration(); - config.setProtocol(protocol); - config.setParameters(params); - - return config; - - } - -} diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/UDSConnection.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/UDSConnection.java deleted file mode 100644 index cb563356b..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/UDSConnection.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2020 Virtual Cable S.L. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.openuds.guacamole.connection; - -import java.util.Map; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.net.GuacamoleTunnel; -import org.apache.guacamole.net.auth.simple.SimpleConnection; -import org.apache.guacamole.protocol.GuacamoleClientInformation; -import org.openuds.guacamole.UDSUserContext; - -/** - * Connection implementation which uses provided data to communicate with a - * remote UDS service to dynamically authorize access to a remote desktop. The - * provided data is validated when the UDSConnection is created and upon each - * connection attempt. - */ -public class UDSConnection extends SimpleConnection { - - /** - * The name of the single connection that should be exposed to any user - * that authenticates via UDS. - */ - public static final String NAME = "UDS"; - - /** - * The unique identifier of the single connection that should be exposed to - * any user that authenticates via UDS. - */ - public static final String IDENTIFIER = NAME; - - /** - * Service for retrieving configuration information. - */ - private final ConnectionService connectionService; - - /** - * The UDS-specific data that should be provided to the remote UDS service - * to re-authenticate the user and determine the details of the connection - * they are authorized to access. - */ - private final String data; - - /** - * Creates a new UDSConnection which exposes access to a remote desktop - * that is dynamically authorized by exchanging arbitrary UDS-specific data - * with a remote service. If the data is accepted by the UDS service, the - * data will also be re-validated upon each connection attempt. - * - * @param connectionService - * The service that should be used to validate the provided UDS data - * and retrieve corresponding connection configuration information. - * - * @param data - * The UDS-specific data that should be provided to the remote UDS - * service. - * - * @throws GuacamoleException - * If the provided data is no longer valid or the UDS service does not - * respond successfully. - */ - public UDSConnection(ConnectionService connectionService, String data) - throws GuacamoleException { - - // Validate provided data - super.setConfiguration(connectionService.getConnectionConfiguration(data)); - - this.connectionService = connectionService; - this.data = data; - - } - - @Override - public String getParentIdentifier() { - return UDSUserContext.ROOT_CONNECTION_GROUP; - } - - @Override - public void setParentIdentifier(String parentIdentifier) { - throw new UnsupportedOperationException("UDSConnection is read-only."); - } - - @Override - public String getName() { - return NAME; - } - - @Override - public void setName(String name) { - throw new UnsupportedOperationException("UDSConnection is read-only."); - } - - @Override - public String getIdentifier() { - return IDENTIFIER; - } - - @Override - public void setIdentifier(String identifier) { - throw new UnsupportedOperationException("UDSConnection is read-only."); - } - - @Override - public GuacamoleTunnel connect(GuacamoleClientInformation info, - Map tokens) throws GuacamoleException { - - // Re-validate provided data (do not allow connections if data is no - // longer valid) - super.setConfiguration(connectionService.getConnectionConfiguration(data)); - - // Connect with configuration produced from data - return super.connect(info, tokens); - - } - -} diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/package-info.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/package-info.java deleted file mode 100644 index 6996f3e73..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/connection/package-info.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2015 Virtual Cable S.L. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Classes used to communicate with OpenUDS' connection configuration web - * service. - */ -package org.openuds.guacamole.connection; diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/package-info.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/package-info.java deleted file mode 100644 index 80e6395af..000000000 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/package-info.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2015 Virtual Cable S.L. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Virtual Cable S.L. nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Classes associated with the OpenUDS integration of Apache Guacamole. - */ -package org.openuds.guacamole; diff --git a/guacamole-auth-uds/src/main/resources/guac-manifest.json b/guacamole-auth-uds/src/main/resources/guac-manifest.json deleted file mode 100644 index 2edf2db18..000000000 --- a/guacamole-auth-uds/src/main/resources/guac-manifest.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - - "guacamoleVersion" : "1.2.0", - - "name" : "UDS Integration Extension for Apache Guacamole", - "namespace" : "uds", - - "authProviders" : [ - "org.openuds.guacamole.UDSAuthenticationProvider" - ], - - "translations" : [ - "translations/en.json" - ] - -} diff --git a/guacamole-auth-uds/src/main/resources/translations/en.json b/guacamole-auth-uds/src/main/resources/translations/en.json deleted file mode 100644 index 2f77a9ca4..000000000 --- a/guacamole-auth-uds/src/main/resources/translations/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - - "DATA_SOURCE_UDS" : { - "NAME" : "UDS" - } - -} diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-back.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-back.png deleted file mode 100644 index 6435f4a7329dd7b19538fc571fbee90b695dc4b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmV-Q0=4~#P)&G`ggbBv!mp#@Q>LNdd^Gd{gv2M@g$s~~B2p+=ODGaSo1L*| zVviI>DV*$k@s8K_xLPikzTm>}1q3I@ysZKTYv5HR)W+Z^|GxaVEM zO9)s1a~wxs0dwFAc-|oSiY{-b%mJFoNO-j>A;y}ZX$i4bg=bbJ#M~D!DIxaGkU0q{Hb;YmHwzL{?GDd? z3kwob)(4o7kh(%7xdbakQoH;VNu73V*Sko{N}1dYI0vR3+H6IU)TR=)qDX38PMF4k zw(0N((X$QT(Nz|z*>0G^>SPKb9V zgn!~a3gN7H3WOc;AqW}bFNN?%d^dzF@s~h2D836qrud-{I>jG`kS%@)grN9C5Jrek zg>X{*TL^oTt|uo$sSzJVgi3NP6zkgihGZ4}Abd0s;S*M{mg zp@?97nDSz9`>>^&=@glhZ>W^TXr8@v1Xkp}$$0000h%jm+`gqV>W7jpu`aNpb?@7?5OX1;J2^WM4Vo^#&4 z_x!kbdPIayMu84T*8rVvfG-YV%n_g`;hg}h?QDQD@W?`Q8F<{TOW;;UG?}620Nr3e z@EZ8aLiYhU0c^F~47lc?JW6w|9hbmlB-%qWKnWNJiWdGAU=bMe;60{&Di#@wDnlt) z3lRxvB@tPZI{p`t1reDPks*CQC?ZoL@>0^{rSck7-a|Upf{raJODRN`kWH`zECJsp z`0;1JH^7$}&(FmvMu@S2|flmpL69Kjc`83 z5-0-iG@wa?x4?5?LmR+J4Svo7$5Zm(0tSJPS?2;Dfrr44flAK-ziFJm*J4JNb&Q*V z#(3zee25#I^mJj{A~GW)0|72-K>KccjydTwj;~NdBC_Ww$P*Dc6&PnUwo}T>1$zy# zh*R^81piY%Z^OK%wXZC6$F#M=E9EusFzz#zFfdaa^`^>3GYs8=z0mb2n_4< z7r+x>MML1f6Z+o=u3LhouXVGIvIk5#O#41Vzg`iU7Ll66G_EOauYpgW!*ZC4wFeX| zvHf?h6K(&C)*YQ(0FnS?7U^Mo~WO|VQ^ zMDB^mrsG!{ZR&s8al>;(O?ftsG3wZNQ*|l3E`bqG;i`sB=eA^z+lEcK>d9loWeN0n zPSNLv*#1(4EU%g89`KiM6+A{!bi?rMVgv)2c)rduKBZZ&o;41gv!S;NHhL<|G?*2&Kp_^d=Qz=}ckv%be5E(TcD{QGC> z2bDG)*D_Wk7J*M0D*s7&HlplUGW(#qT*h?wz!EF>i^znCEL#GMSwr9H41=I)1OHh| zpJkQ3znctYR1&*uSq68Sp6yb<>`+TF^=rywx9RyE%k;k+qaxJt1(CKaiFJ#j0d@MP z4qx$p!c1sx$F$k#`jn>)Pkr_29*lVI%2z$=1s8xdUi_@% diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-delete.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-delete.png deleted file mode 100644 index 925e958319ca538f8466ed012f93fc42957c3b23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611 zcmV-p0-XJcP)&i(c77RiG&1 z#-cv;CCdbK3PkZeCxJ~%$;>cwJgEy%$0G^iB_RTyDxnhop@gkP*UAMc5=ihrV=WQDT-YU{RSoh2)N6NB zh-%Hgu7*N*FJDOo{B8l!1*+hS1Vk08gfA8lAmK9)3A{@{fCL%5TR>+L>h3nZ6FZSm z{k%~nKrDgtuvMEtB!Tw0O%c#o0=L(|O4LXKz1u_;5G*04)y7WvO9JZ#$8xTaX6y9t z2G5_sAn^VF2{wQakuVxOUBZa)R0*TP(e6<8M{8%k9GW=Lg(a1uT66Ek| z30=S|C3FL?TCq(j2-w#pVrIPPZY9TJYeUH%^l^BkDCBVqU>Gbtx3j(kw*)f_iD x%*Y3~p3UsVHQy`XC^7xJ!Bc>`0Ch|+;0yH|yZa)&SRw!b002ovPDHLkV1oYC{7wJ> diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-first-page.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-first-page.png deleted file mode 100644 index 86c7a97cc721070ce77696df0f7948b778ec545f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 690 zcmV;j0!{siP)9vxQ1whgj zunYW79Gd(`M{2Tt22=>235JmMTR_q!!4R^a2Sh_~ITLIk%o2w#9Kr2cphDQi8Nu~x zFv5}G{(FF=3mg&L0l*g_1OWIUgaH5_girwRh_FW{gm3@=lFrG55E20LA%q2hCkTHM zhrXUgQez{82LO6CVa z@)t?xi=aHM;Lv;Y7A07*qoM6N<$f(yJK00000 diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-group-add.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-group-add.png deleted file mode 100644 index be9b63014f651c3f582633dd2204eac9e3e70f8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjR^4?CmUMD5Ol3=E93JY5_^DsH{KxzUT+Q0Dl@_nlp3 z8=72YuX+j`JbN@yMrO+cZVRt?hdDAaHH>$UUR|iStCRnNW4OAytkuf`U0Iv5*RAOM{Sa2)VX3@TL%%<)+410P%E%$WE+`#+B zI_dm@wq*?rEDAs+3hzvQOc9P|des-fUvYBf?$^KkHn0VRq)%%M_hn?{aA06E*eAR1 zY-cW0ci#>64>N+zua-pw1BC^E1_+c&nOHI{Ys_Bo{$VBitc|@5$q()%*V{F=%1_X6 zJFxBfzcUQhsc%@r8krLw&HuWc>&0cSj0WWgLLNP9yo(o#ADp&ux;|^d-H5bRFP%LY z9&T<}y~Kfi|MRb31Nrrxn3wS6C+}k2a+^tSjenz`qdtFu{9&npCwiLQj1G}dCxH9_ zWUf$iSbU&NI*j4dIp%8(#t-;@e7f;WrywbH`HYlrdhF{PoYyikaj;)7zqULsqhXt2 z!|V%@4@71#ee;?p6x&ulg@57Z1MlCToW#gB@ABLEr_9gj#B?*A|BwTWI0jEwKbLh* G2~7Z>!p}JX diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-last-page.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-last-page.png deleted file mode 100644 index b03932c82d59c02391ba205a9eb9e7faac32201e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707 zcmV;!0zCbRP)LaHoqODK58-CZ@)Q|okL#6XeP$}W32MJ4m z25XlPbs|)=gy>UY0|`5c>jp{E-{Bf1B=-Xp65caH30V!1nj~a*gbXC?=03M&R4p;3 zgdby&pzaBJmtfKq^(?`xE9_N*XCdYfJZDB<^qf`=Xi7{LFvuBj`g0=&V4p#TN^BZc6> zNPrT4uM|8O2=MyKho}S?!2i)azeTbI)Bq2e0&0PW3;{L4L!tmB{K44ZAwhrv{O`nd zgG4hV6_ZiJgMLV=D^H9Z9&CoB7R3cT*bPa&PJq8q)HPTvhorz6JlGCNxq}D0At{&e zU^6831RQ#V2mO##fIqh`Y^Z34q};U zK~#9!?VDMsO<@$rf9tx&2Qr0R59EPlDqdu&OBpg0%9G?tcrcW?lxqqvlov&!3=bY| zS6oAea49c_gp@+aEF#nO_prYswtcwHw9nq3f1Pgaz3=+Y`JZpC^3l{|Sh= z_QrPt1_777CBV$?10#SffV_+WX7<(0mI4!j7v2UzGdl(h1kQPz1+y&p19;a2I}?D% zNh4qtuP& zD&YJ21k7~7t^5d(G}1-pj0;T$4ixykeFGLyW59rjYhwr+riI3Of==|G(%>cF zSrcr1C=>zN%HE+x`l5CN&w)cg>xlbnbL~as8Us!OpR?5F#X_CiWv^n70cQ5pu^vW4 zkz-Z^!9dr;a!7+4fVsdu;EEG0*GrJOZn>i9W;$1W$4}!V78gP{1+YIgh~eQfTIzQz6bVF4#QVY5X{aZR31tio`(>+ zorlmV$tx2C_W)BPe6k8SD`};qinIp73~F6He<`BETMyJr>XP;}_y8CQZ07ed*|ES? zN!6*=0R)p@%Lon;o`>#r1x`q+k<=`$1Y}U}T;g2B|EvbiNUBOR0T3J`WgC+n;ap;3 znhD4h8*5w)2#?8j1nMMhmDD_~1Y~g9xx|UEm;#m%99#EH8UdC=6Ucz&&Mm_IgwOnX z0C@-Kla?LuL+}9`fzkZloNSS17YO5`bBVe?Jo7fq1VGTEpA0M}dQA3c8e>2<40Yx0 u&%+7>fE&IL0MLeDimMyYmf#oSWsUEe0 zf|81fcxOz^@@rZeUlv{Ic%jPG+vl}DP_xhJr06N_2^l8KEzi0-7F8FuhQ_SB!<$}K zruKV(*5v6oXZ|g__xt%-9|2dv%58QL*pH|K-cGl-?kH`_X1FAEhUvp9sG5R3GW)zftYx@t zxQ~Cqqzh&tmTSN=4J@J&EM|?3Jja9B^%|DtGFTsw6tMW<+}FtTA#bxx9a9(I*;BO- zuB7p4Scy$jojuo+bqUi+F{aQn@2>PPp0;D)c=_hAY0!)E^J$A-o3gCZthG6?mETg~ ztdZd-#)c3F1{P$bFrPs!=uP>h_P-6P4>)!(?&JMt$tSaeNulG8wX7}swyDf42jm*` zj~~0TiFd&pi3ac6S_K?DjISlzU7F8HK3$tD`ofMsjb}k_MBaZMh3VgBM<+!eShw(M zw5-KO+2{XfGH!O@-F*G!tOGnBULLku(C~A2i}Hav`rHext;#?6M6p(UQ)SsTA&mD~ fL$!>R)Ne*6v)GuP)a|0cxMlEk^>bP0l+XkK6Ij({ diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-next-page.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-next-page.png deleted file mode 100644 index d4022a452849b563cdac824157b623e6fa6b10d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4u?*!==k7JrvHL(6rt9@{5HH#^u_k-Cok3*X}Qp^(=YM3@H>TR6oHa}{u z+8%FC&FAL>yk2rtu$5igQ^GW->qPeJb5kd6W$QS>UBFngwlZ_G+LxkV;hs-T6E^x9 z)X99|Vx77mT4w>v-=?>!Hc=iL!6p-0idvgJG@@<%4>?va3aVV0nFf@aIxWDpA)WIo zOU2ZH&<1zTtE?516OO?htG3oBm1iL zjQkcezU`lVYT1g87{=#+?1kM9%$#j)-+yb}2QE(DKeNN?qXO@W#VaND1Xn1$4^POv zIDhiv;56=e-W3`u3~BSvFa)3f5D?%n1?c!`bNw3Nv9phH(PXRhnSC|!!1Tf3>FVdQ I&MBb@01Q|4MF0Q* diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-prev-page.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-prev-page.png deleted file mode 100644 index 6f6819dee966231443fcfde4c9127610446290d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmV;30(bq1P)3hz{mVFF{qq9Ka%Q3FtS+Gq7tirZ@C2;7uh+gfBxPvPiSweb)A0M z;SYhe2`?Q1`+eX6-$#I^?XUQG+y9+4AOgIbfGF@T0$TX%2=LVfM1!v?AR>G<0l-p3 z_$mS-!xtCO!rw%NFDf7dd@%u8;EM>z1aB@N8@#E27XCI9yqSQk@FoI)<*e|%1!TVS zuSefsg-5_+&lo zsd<`BQkxTA+Iy2!h>en}`T%SL7ZY5Tf0NXh$KjlcYe0w&cum_0JAB;phH0yJ2>i4OX(nWD!2-c z4kGH(r4XTocB!?L7D=TsS|Pze25Bh-L`^i-@EwP|p#;8<^!whI_g=qy;7;e=chCKE z?z!jOd%Ge+Crh^umjoaINB}xpwpGa19q6f}yNBD&{Ish=+u#)5sH6K4ucRfA03-kj zKmw2eRC^noX`maz<8^fZV7@`$iF$cL*#NZ5n4MTmOCSMA01|)%pycK7Hw|>-c&d)> z4_t20_wQ5=rzNnpOJE427{E=;V)bDMFo9#)#QQhs)^H0KaT+V-$vq=lZQCQ_^VqyB zM8tt6#+hpH&zWZJZ#4$&!_Rp40s1_XMeI+|RpmUOA7?SxOcjdbc(2Ok@EN?-;`l2V z!9vwM;7AUWhhBV9d9phD60wZ`NXFJBK1Yoocc2o+$ zU>odsx~R&u82~@E!H!?Dbh#1$erSUo(^Xmmb6D&4W!v1e^)tb1N+j*N7Z|{v49YBi!@o)>t>)j)S--3p z#S?ha`h&*)4e@0azu(v9vjBPlcdOxkI3l|gW`AD)PaKVxfTDIzAyvgWhPQkpKVy07*qoM6N<$g3YUL2mk;8 diff --git a/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-d.png b/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-d.png deleted file mode 100644 index 15b1a77b3f88cedecdd3f83555401b03f01013af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3182 zcmXw+c{o&UAII-Alifr;D9Khs_Ci8r--aw1TZ9o|OtRAxa+FYd7$Zv$QCT1Rp0$~x z5F!d$vW+FgG)V}(r{{g&b6xkj&;7^!y?(!QU)Sez&Rr`DV+`jJP5=M~XJTND%<%8Q z&WhaIwA{LpXqULys$yZK*H@C)?HT-7`R0M|0kK-cDa)|W?7{x%q|WPZK}h_6TM?!)=83EzqxshfM}0#~lADWBLOm zuD_9nd*}FQ^MRzBd&9tkn5|owhH}Ua0_pRIqT8SyVc2Ye_ivm1Vi=m?BmKp_16KP8 zt@DDxpNZbFJd4_BpyLYSpx~i%ChT=QG+$5~=cfk&f);#dDf;Vd$82Zv@xNblWHXt} zQ$h3Rzw^4im@M=CTl(C!|jPe~FYyEz=1@}#(^ylV_v@QD-dTzmerJSK{q zHwJUJ{cb~6#WtyQr+7rQ zvb1t61*R^bmF_K~xUqlY%p<4rfvK69ppej*_~x_m zK(1C7Dh7vDAA{@8vanA%5q)3mY5()FM#BdFGWN`D)7a$okxIKl(5vQ}Z|m&bOQ+LA zUx=y)=EYc2axo6McvxUOWyo$tvdporxR>GX?!NWWD~DraoJiZwLe;)ZDtRBFB^tM1 zc(eee`Taefk4f2yg-Ai1{hZB2->z!|+2_I?F;x2s7tN?W%{w=JX-&ws7e8>fcr+P0 zC7g`y<%(|0-CJ}FYiXCXj!>&@{&glD7rHv$Xt;Tsjc5P*YIe@yN`XS~g(2qXRGV4r zKmAgGi?R1}4Zk>98;V_aNx;LQ+Y+gs=H?hS?!&yidodh;9M+jsCSWX}vs2e<>wQ#- zv#@vOvZ$?4)0MzQg>*I z*50POk)h!M@bmj}N5Y|#){89Y`A|+?gGt;IX?y`M7_M+VDZ0(mRnFS8!Y9`G>9KWr zQ4!(VH3jsdF>B8erOd#xDXSuFSRc$(9A(^SjlX;Mg7&;9h<$Oxm%#P;`K1V{5ESj; zcNpdYNo__9D5zXOL?$FQgt+}25^>_0deNVl>l%6%K_LeI*n9NX#dt48y--;IS|CD_ z+6D^7AMt#r(7emu@KhXV#eB#3qiDTAf%wQIW#u|6fOo;osI9dcH~c0X*#|&B7fl8n z58-)=4^;r59Wa(e^a@v8z*u*A1$5Lo4G%KA{|{|WLXbL3Wn&g<DWaMOJZ+FbTJ8j{g`tYGNkMKS+$Hc4QR{4to$8gl;sRm_CN~*;`Ox@hPsH!SiKbHI5{>tNt$T1=Ukl2y`7u-*AduHZKw|TVs_g5Xy z){c4}<7&KIw%k;6rW&D|^TUz$yMNT(zMAxN|jqHCmP*HFvBeM29~1{rctEqyhpG4|Fvq0onG=Cs0L2Wo42| z4XrGz>Ykf17LCMCuN6jz@egY0a9N0b4ht*52%Yhc8#|)S>^zRR;FFt9ftxMD=FMWh zwFZ5SskHGrl6|&%kWu1pEOasU3UmppZId!ijfxulaPIti!pY}S)5GKyum2*w<*%7} ztCSO#L;KH?{aU^n4So2~g_1iZ)>f&2uu|82edS}#%1~Km=+uDU^R0rIs9PQ_(AJ$u zXq&v=Z26NSVOEQ_k6dg0VY-Rk(nnV(#3OAe`&5U7gd9EXO%7#%#n9%9*4D?SfAzvW z$BMxt6A}AAJ~f4ugl+=0$n9VbYBK#9rc>@IVxC!#0d;kC$LSLi5>>^;ritG*(AD=k zk-%`D0X80yysLR$x<5Q1GfZquG)l_f|

dQ3Bwt(~16@=H-=&-=f5#NGK? zfCY3t^kHH!n4Zo~c8;Bf2DP-*t%)2tmQxSGrptm3sC1DolVu#qO@Tg zGV!q8wl2=UJ^n!1t(=UE&NpvNw?30F4k>u}%!pxNg(-s;jV`-k|E~H1a(cI_nH>B6^L!GZk>el zkF$s+23v94yQnCnEoeIFh{`?a^jla(jb-t1j@{j%;bCQY`CguzSFg&MnVCtiXG1j_ zEbO;tO+;+Fu8r0AR)8AM-ltZ_yUwFM!#H`du62K@s;Z`gjI6Alr6r#&2I;@l-WcnQ zTI?5p-QMm$_a>EZn=&*MH1Q2_Wi=HyuvVstoM3eQpS`CEL*$XX1j9H}S#X{-{k5%f z)s2v#ac{H=;D9NFJ@f6l0vx8Nn&|Q{kP2HZaRF_=`6}Pa0}-@rFFt^WYj7TzNO diff --git a/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-l.png b/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-l.png deleted file mode 100644 index 91f8150d3eec5dbce03232af5056867cd09d2431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2750 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 XZ)Xd<)&p61*91f}8`J9FFJAvYpPc5l diff --git a/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-r.png b/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-r.png deleted file mode 100644 index 3ab9d5b2b463f323136c66ce1854d1df05b46406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2784 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 diff --git a/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-u.png b/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-u.png deleted file mode 100644 index 057cccf95314bead5d62541f8ce45bdbf6192f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3185 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 z diff --git a/guacamole-auth-uds/src/main/webapp/images/group-icons/guac-closed.png b/guacamole-auth-uds/src/main/webapp/images/group-icons/guac-closed.png deleted file mode 100644 index bfa036be87c80d87bffb75ce8d79f642acc2f018..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4u{Xvq=_r8M-E{|I$ z8~Xa%giLtQc=*eL+c}!`X)~v8-}PB#vOwCix%Yo3x81!dyL7AC$(jjb3cbb-Q4J>N z7%~|zSuihQ^_X12Y%+!t_{Y`JE?Mk#acbgcu51#tpObac=0e-ZXr(sY-3j(zLDIlYi`Ozzo4P@|}!x=FcxKDM`7q?fUDpYj*G1lail*Uc+y1 z-0|Az+?OEt$oH)y*-b4+MQp2JfO>%4l%6LTw&U32d$|}(@#roefzbl z$8GV-QfX=F6eG#UhL07*m}~Cy%em?K`gS6)6nZL?&%O0v*?mN|@ zd2mlSCaIw7AeG*bxZ8gA``fo~hfhj6-(t3yoo!ip)7%HnyYKcXyo}Gg#b!Pk zug_$Ot9@L5ym#6G?*-WnA1i#eMs22?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4nJ>sXJITnD{l6Fl5eQc*$^yC+@)W zZLCv*;u|dunD=e*OF1TagPA|-wftJG%(eMh2V^HOo^KG#IzOGK-2D6Fw!Z$x>Vtmq z+20S`*k*s~S)_xeDVtnF{?+Pv&jnc+14Rty`t@dSRXkt3?Y3^@w7_Ype;2DKtlRo8 zFXqgrH~-6?J+`>!8knKkwdg{j%>R$R1~0v@<{bZXy77|9+pU}bEBRht#_~A3skdQG z-Lv~rz4=bdcJE<}S++}gfzA2H1r`r}@B3)*y7}?P6DdY3*KtaH*m_VTvr5^7UBp3v zC4b##hJEjaSscFxeboM3ZzyW8+H8@=Chu#?y*Zn+e_u5e{ZQ0?{d!0_cW;hc`O@Zk zu>z(g%pQ+fJlH23!FY*rNg+t{<&!!FQoRv6Vi36!B?TVmYp+YimsX{Ja6SMsv{zUG5$F%= zo@Xha{~X?RX`b7*&s+b#n!$A=T>AFgYf3@;O*Xw<|2F*iU)#K(KS3`97wC9TQpueB zHPmC$l6`S6E-v}p5UphV!!;;x=A7QO-D~)_23(4A@IBHVp_OgQ^6yx6yw2UI1J%cE gxnbTxve}-I$t7=TtHqHQz@*3E>FVdQ&MBb@0NsExrvLx| diff --git a/guacamole-auth-uds/src/main/webapp/images/guac-mono-192.png b/guacamole-auth-uds/src/main/webapp/images/guac-mono-192.png deleted file mode 100644 index 428396041273fc733b16fa87b1912b13c72b524c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6041 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 TUTKO|00000NkvXXu0mjf&YTfe diff --git a/guacamole-auth-uds/src/main/webapp/images/guacamole-logo-144.png b/guacamole-auth-uds/src/main/webapp/images/guacamole-logo-144.png deleted file mode 100644 index e2cb830e93ff0c7bd7dc9a1cd10402456af34c76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9167 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 Wa+i#07o_+GN=8CKyjs*S=zjomwz@h1 diff --git a/guacamole-auth-uds/src/main/webapp/images/guacamole-logo-24.png b/guacamole-auth-uds/src/main/webapp/images/guacamole-logo-24.png deleted file mode 100644 index 3652598c59bbea5fcbe6334ae356ab2b13c60715..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1520 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 diff --git a/guacamole-auth-uds/src/main/webapp/images/mouse/blank.cur b/guacamole-auth-uds/src/main/webapp/images/mouse/blank.cur deleted file mode 100644 index 60b635ababf3ed7814e21376530f6ac7b64fb329..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 ycmZQzU}9ioP*7lE009F=1_m)8tpUUeK5{)-0I$ZZ_jW3 VwnrY*o^>vJb!yu??%Avi)&Ppi9P9u9 diff --git a/guacamole-auth-uds/src/main/webapp/images/mouse/dot.gif b/guacamole-auth-uds/src/main/webapp/images/mouse/dot.gif deleted file mode 100644 index 9ac8a00b920c77ff759bf7bc2b693191c4c6ead0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmZ?wbhEHbRA5kGXkcUjg8%>jEB<6*ij|0P}PjHUIzs diff --git a/guacamole-auth-uds/src/main/webapp/images/noguacamole-logo-24.png b/guacamole-auth-uds/src/main/webapp/images/noguacamole-logo-24.png deleted file mode 100644 index 2245bfdf1ee7ccf0f74787f8889e01038751a307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1245 zcmV<31S0#1P)UVdY~hP-098rGzgzpiSKL zKmti`go6T+fQe~OCYmP3gYjf~QDYNB%o>BlSP$rl_QaQs;6@T?(@Ix&7mya%rPF11 z+1bv#^LSupv%AH5Fm;kA&m89c|NhVW%=^5Ii10ig{#@1n4}kn{A27yB0C*c38eTee z>QsvmBDJ}>d2erTZyUfa5oMmazOV<3vC{VT_Ti?cri(;$uDG~ZsjI6i^>{o*E|&|s zt|O61;Najui^XDEI-NdbjI9QP!P&L7weN^1aUwublo$H?`mVWLuGgBIn`;{y8ko=L zgWK(fX_`2}2sr16$K#lro5R-D7J|XxZZsNQx_R^Fx_Kx~|z7Oi_>tF8e z?Zw%%XCZ`u5CW!YJ`=z>ha^ehoFfzpVPRnb`}_NU+_-V$i>0Nd&sbYq+u+r!SN)+- zNEsg=2NA(AjI6kwZ2%F0G4>Qdk|fBo49+)s>!@m>7|}y1Fj4w6rLirol8# z7>1Dr?S zRTKhj_qGX5)1W8{yk2jO9FNCUx7*#ANF)%AMxiK59^|Ax*nmR!L}dSAsIIO?I-Pzb zhr{7J0NRI#hcP`p4MkDV)6)Z8*Pp5)7r;4(5F*e0%E}57Ag>AlS#epG(b?IFj*gC}PVn{X*VUn+p*9c^ z-g*Dy+YeQZgfPi8|9c!|47&8*N2^41Jd2{+!TS$Xt#v=1L6zb_r6R*2v6F|(GoFlL z;!)B-G@)ZFbpIY;4ZBG2?pMFB{``7#$E%eOR1FUw14S}Nv4f-7!BFBnez&2*BbyY}hlr>|6aUUWQ82^?h%92Lw-i33D{`44xL zEHV6fClH_iY3j<(&Q1u(8Fq{@*5BX%qu=kpSW;4o)Dsh$ZX#n4GCCn+m=MPX!7MSE zA7`h`P+lw{6_1%?V`E<~E-qdsOPE=+g#jo6P%|(v@b%c(*egDtPbqXLOaj0l6AW}y_uPr`Q_#1cL6*Gpb?R217rZz07?MxnwpyKo}Qk!2L}f`FI>1#?sPg&+>%r( zg@uKM!>OsMUvJ&I^+`IN-U46($N<U`SbbptP*qiR&g=E|xm+%f+wCr| zsHmuLI2=w@RUgG-v4dDF_Sg3I_Ixs#ylXKDfB=vJa6m*Nw+9jcr&UD}0Lcn&19P%1 zMwVk?g%02dz!M@e@|tWn+7e;N7nO1XmZ)Kg+5$F^C`a^fq|4YveA>Nn00000NkvXX Hu0mjf3AZ|= diff --git a/guacamole-auth-uds/src/main/webapp/images/progress.png b/guacamole-auth-uds/src/main/webapp/images/progress.png deleted file mode 100644 index 72e0495bbac0d6d4b97a5dc65914cf3c7c620b8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)o20Os(N&-JOrVftiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI0FNtqo<2wNX4zEw|Da%HsEo+n7#CyRGh+Z{YR#g7=u{YdJg!h zxXVxK-`iEpSayZwj^=#PiiGsEgq@!ZG#{^L;b_(872t~(Qc$rocZjI*Yq;&2mV(yx zvIk`Mr7=wZ5yg1tQ8r6K?|<`#>Oc03P7l_zaWwB2QV`i^;$TtZ*)ZY99frh@mW)o1 z>sdMa|BE>=)r&c>)r&ZA{g-s$+t07id7tUTqldMsYTfM5mh`YsThens%t7qFa>GyV zD@%IvB@di^TNrd~JI8}}uWU3QXR{UjzOMkJSqlDNR?&RS7*~0@e)~ diff --git a/guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-monitor.png b/guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-monitor.png deleted file mode 100644 index 6608c293598845e3e757fce3f4776745293b1f63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4E^09>yiE(HUQk;6fuBS7&d!{-`Wefs|2Nkka_v~#T(FS) zVCw7@3-n3~CyLDazGcR0&%8O3_V=@m`Okdfd0)Bz{hWNev}1Q<8H}Zw=P~jB*#DE| z&CcKY3~X#V%(e%(C2bRK-Zgw+`9Ut@>5VGxm(1MC2iQJD=(sg98ne|fTO}E4?Q&bu znWVY)oqiy10Czwzh`8+6^P4M&QT_S~)pqLx-U(K!7G;t<`L^7hn<&-NzEf_t{~N0Z z95YJ49~N0Y``DRxjPn~iS06j_t)V&5S1w_}TLracKhz@N#(~Wwn%Kj*(c0Ob)7p7& z+n1EYwC_OH_mxU@#YX4#Wpy&O8=(gAlOf-D-9cNk z|HzZ~LbEz|&5oDJHqSh8N z>1u diff --git a/guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-plug.png b/guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-plug.png deleted file mode 100644 index d54ee53d4752eb663e5a5972d921341ec74221d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4-$0ahv=5ehYlS(=e8kK;1VmV;sm8{ zV&BpeC#>%Ay&!QW@kI7U=>UD{^tAtfIL!HdOs(JBd``}vanrawecH@m?iD8)SFm1r z!f=HttB4_s(bSS*Yr`y=hA0PLJ_p?eYU~Td0wyyDK$V@TVQ`gpJ(I(5hhg3PfZ|8* z)-%7p%Xscei9CaRyKQmNvHTc(yWT zm;PHCi@s?rdZ)Kx&aS>Cwg=ASF=Zd9IrU@OO!jM9%QJ$^52hb5D9jP((VV+z9%J@PbEC-KLqxBn4WVZ&)GM5zV~n3z5n&aC-K`Y^LOvg%9pysI%~^Y%Y?1HBL14I zTX)|#-n_kKKFfJ#e_=K2j~a6V-dnt5wr)H>&3^Zh)gRbCu8$7C{&4ZOi?>T9DmdP# z_PuSg^;(`WiK*Z_{}l1rf2VxZ-ORrx#P6cYeC9i~lRrKB$YtTP_Hx7FtanFGsdm12 z&v;zS(AxWF;1{j0>D}+&?URdmZ&t8w*>8p)E<2b1=_#E%YjrP!pRsYh$T`wta6e=8 XUw?(DAg{^5M9ARj>gTe~DWM4fTdzIi diff --git a/guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-text.png b/guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-text.png deleted file mode 100644 index 8d5eff62a323dda0cc593dd21fddd634454f2f0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmV+z1LypSP))f2 z;r|E1AZ#}U!u*5b5UyGW3S|NJF5p^F!4P=uQCFLs00f5L0agyu_y-37 z6@(wD>I;wBdKGEvh~mhs`{>~e}2j9@`KA{@O;i2+I|BUAX^%X9zF-K zZWMmn-T*u?3V+f#yaK-fzIlcZ+9*Lb=B)u}0({3!t=k}R-=Tl2!cS$gNeVb!;+*xj z+)VUsa=;;A(-^?|tfA-|C4q;=0PYqIrNAoiGw(147V8L~pYJH}2-u1od=t0_9Nu$X zKtu+>3C*_8)GiS@LUvDx^(Z`6)os9iVWe&9*9EK%SgQwMZNOSR0BZx*>H%0Au-0F@ W{$6AhTJBQ-0000@5@9T8M3k^4fus;2CNYJOKnTnY?HSviPG|mrdFQ;7bMMW!+~4>6 zmY4UDzt>iMGkpkxwt62!2SSieBzR3X>4Kfo7XMA)XJd+o_lZs5$=VbRgZ1X5V<9OJ z^p_s(tFt``;{i5zrh1-C4I;#*5+jmhAR>{t|4d?BN>oHr%zi>LzC!9|20>eX^hSSp zBE3?=WyehrNqusq()G5N<-RK?J~4wan@VazisQUHAGBXS;=S3|cidN&yK2|5Z{dj) zciBTfQ-037*reU|P+LTt&$s@9uUOvj_6H7T-t(G;%h+-&v(e$_Vx^Zuk=_oIxP>Q| z6fY|ud>MP)wua?~8FEC(t6^0SVP&bRgAaXxW*tXoSs<7&Oeqaq6}E0UxI6dGneqtq z%0A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 diff --git a/guacamole-auth-uds/src/main/webapp/images/settings/touchpad.png b/guacamole-auth-uds/src/main/webapp/images/settings/touchpad.png deleted file mode 100644 index 3facb5d3822a60361d89a8a6791921f6f1f549b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38013 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%0D+T$#)8#g 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 diff --git a/guacamole-auth-uds/src/main/webapp/images/settings/touchscreen.png b/guacamole-auth-uds/src/main/webapp/images/settings/touchscreen.png deleted file mode 100644 index 11ad40d9e0290e9ca49e674226891c10a91d6c09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24025 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 H_euE=jm-W( diff --git a/guacamole-auth-uds/src/main/webapp/images/settings/zoom-in.png b/guacamole-auth-uds/src/main/webapp/images/settings/zoom-in.png deleted file mode 100644 index ef36301b48ee14dfe7376a949244e4a4fba54d28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1553 zcmeAS@N?(olHy`uVBq!ia0y~yU~B+k4mP03lH*(V11XkbC(jTLAgJL;=>YOM3p^r= z85l$kgD|6Lfv*!#P_o1|q9iy!t)x7$D3zhSyj(9cFS|H7u^?41zbJk7I~yqm2G%}L z7srr_Id88Y%v5m@U^)2O`QPrCO$lEwCJRU=Iv(UvslEM=@xtf-Ul|zg2{1HhFfw!q zjZzc_!LKS?hPtBi>b(!mx7~fs`=OJYLBWfGVG+wnqh4*>dv8Knxm?4V-0xM+GlxPj zfSk-AfA{YEe+zEE`^xs?2rGktDg#3x(@3LAZ^z{`JYW=OaG1it;KDgdQ62YOM3p^r= z85l$kgD|6Lfv*!#P_o1|q9iy!t)x7$D3zhSyj(9cFS|H7u^?41zbJk7I~yqm2G%@J z7srr_Id89T6*1Hku#YyqllF_Wf4|hCB`ihbasUE}Wy(Xb_N{ z3Tm%2ze-D6Z+>9v-MO!MQ{{$0V!HC?-B&gSz6u70KqdwO)lq6R2q;Pg_KS^qen*O> RUj!D<44$rjF6*2UngIQH~s~KzZ7LYgU2IMUuZ>+0iVD^1^{iq zv}5v1F%7hN>y;?l1tPK^7y-7pk^YX)K)b3=dJ(!!gCf!h43S;(MDC&3mJ2-B0fRun zkuM2_*p?5Rp8GERpZR}9S5=GwBC-aU0FIi7O2-r6xT-E%NIV{aZYrNVvCVEPiH89f z95`}o+w=&Ch!EECJFG&=#5=+Qsq7@IJ>UTOB~NVofQ7(nz%FBb512Gq4cKX{?*Wqr zs{zf%`W`T8up02mSlqg(=04~Pxl zw{RG7-;zA|EQRknaOBpu$J^j$Ub#Z6WlJmy=^>2DS>rp<c#?g^^uW1x?)U6mCS=!uI$ZoyQWG!$8=m1Uw?f4y(E&!9j zc#MatI_^R2@iKG*xCC6Ja+{=!ghBEya8p&M%4RZ*?!CZ0!T?t3gVE*j1GoVktjIJ7 z9KmOP_l_^XHDGHd1`ysGt^i-FAlbB-1dh2HK)6phSOv+gG~NImE(Q>;yWOgSq)Lrh z;FN~}*Q+3za^r!?0K$OxtqKycM6bnw+f|T&H73$>Ok4m&GG0lKHufBL=ds0D~0mTQ0+C*Y5X$F`sAXXU? zb6NHOGgR*ZDV6GDKn6ncLcIqh71RwVr&0}~Za`8&+S}ks!ruP>fDu)FRIK0^?->wD TbN@Ht00000NkvXXu0mjf^)beV