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
-
- -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 6435f4a73..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-back.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-close.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-close.png
deleted file mode 100644
index 5ac7edb2d..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-close.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-config.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-config.png
deleted file mode 100644
index 5c4700b04..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-config.png and /dev/null differ
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 925e95831..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-delete.png and /dev/null differ
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 86c7a97cc..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-first-page.png and /dev/null differ
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 be9b63014..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-group-add.png and /dev/null differ
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 b03932c82..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-last-page.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-logout.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-logout.png
deleted file mode 100644
index 579301441..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-logout.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-monitor-add.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-monitor-add.png
deleted file mode 100644
index 2ed062acd..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-monitor-add.png and /dev/null differ
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 d4022a452..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-next-page.png and /dev/null differ
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 6f6819dee..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-prev-page.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-user-add.png b/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-user-add.png
deleted file mode 100644
index 8a9f22fa5..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/action-icons/guac-user-add.png and /dev/null differ
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 15b1a77b3..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-d.png and /dev/null differ
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 91f8150d3..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-l.png and /dev/null differ
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 3ab9d5b2b..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-r.png and /dev/null differ
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 057cccf95..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/arrows/arrows-u.png and /dev/null differ
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 bfa036be8..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/group-icons/guac-closed.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/group-icons/guac-open.png b/guacamole-auth-uds/src/main/webapp/images/group-icons/guac-open.png
deleted file mode 100644
index c6396eda8..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/group-icons/guac-open.png and /dev/null differ
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 428396041..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/guac-mono-192.png and /dev/null differ
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 e2cb830e9..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/guacamole-logo-144.png and /dev/null differ
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 3652598c5..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/guacamole-logo-24.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/guacamole-logo-64.png b/guacamole-auth-uds/src/main/webapp/images/guacamole-logo-64.png
deleted file mode 100644
index 99aaf3ea9..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/guacamole-logo-64.png and /dev/null differ
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 60b635aba..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/mouse/blank.cur and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/mouse/blank.gif b/guacamole-auth-uds/src/main/webapp/images/mouse/blank.gif
deleted file mode 100644
index ec5c17c0a..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/mouse/blank.gif and /dev/null differ
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 9ac8a00b9..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/mouse/dot.gif and /dev/null differ
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 2245bfdf1..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/noguacamole-logo-24.png and /dev/null differ
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 72e0495bb..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/progress.png and /dev/null differ
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 6608c2935..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-monitor.png and /dev/null differ
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 d54ee53d4..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-plug.png and /dev/null differ
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 8d5eff62a..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/protocol-icons/guac-text.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/settings/tablet-keys.png b/guacamole-auth-uds/src/main/webapp/images/settings/tablet-keys.png
deleted file mode 100644
index 14eb5777e..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/settings/tablet-keys.png and /dev/null differ
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 3facb5d38..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/settings/touchpad.png and /dev/null differ
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 11ad40d9e..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/settings/touchscreen.png and /dev/null differ
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 ef36301b4..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/settings/zoom-in.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/settings/zoom-out.png b/guacamole-auth-uds/src/main/webapp/images/settings/zoom-out.png
deleted file mode 100644
index 358632cf8..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/settings/zoom-out.png and /dev/null differ
diff --git a/guacamole-auth-uds/src/main/webapp/images/user-icons/guac-user.png b/guacamole-auth-uds/src/main/webapp/images/user-icons/guac-user.png
deleted file mode 100644
index 527004040..000000000
Binary files a/guacamole-auth-uds/src/main/webapp/images/user-icons/guac-user.png and /dev/null differ