You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by vn...@apache.org on 2017/09/25 19:14:38 UTC
[3/4] incubator-guacamole-client git commit: GUACAMOLE-393: Add
AuthenticationProvider shutdown hook.
GUACAMOLE-393: Add AuthenticationProvider shutdown hook.
Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/2c587e5f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/2c587e5f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/2c587e5f
Branch: refs/heads/master
Commit: 2c587e5f9ffe8aa84c460b8f63cd71483bd4bc7f
Parents: 45adf2f
Author: Michael Jumper <mj...@apache.org>
Authored: Mon May 29 21:21:48 2017 -0700
Committer: Michael Jumper <mj...@apache.org>
Committed: Mon Sep 25 11:47:44 2017 -0700
----------------------------------------------------------------------
.../auth/cas/CASAuthenticationProvider.java | 5 ++++
.../auth/duo/DuoAuthenticationProvider.java | 5 ++++
.../HTTPHeaderAuthenticationProvider.java | 5 ++++
.../jdbc/InjectedAuthenticationProvider.java | 5 ++++
.../auth/ldap/LDAPAuthenticationProvider.java | 5 ++++
.../net/auth/AuthenticationProvider.java | 7 ++++++
.../simple/SimpleAuthenticationProvider.java | 5 ++++
.../GuacamoleServletContextListener.java | 25 +++++++++++++++++++-
.../extension/AuthenticationProviderFacade.java | 6 +++++
9 files changed, 67 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java b/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java
index 241f17a..28122f9 100644
--- a/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java
+++ b/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java
@@ -107,4 +107,9 @@ public class CASAuthenticationProvider implements AuthenticationProvider {
}
+ @Override
+ public void shutdown() {
+ // Do nothing
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java b/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java
index f998996..1c84046 100644
--- a/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java
+++ b/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java
@@ -102,4 +102,9 @@ public class DuoAuthenticationProvider implements AuthenticationProvider {
return context;
}
+ @Override
+ public void shutdown() {
+ // Do nothing
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java
index 1721f16..b3385b1 100644
--- a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java
+++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java
@@ -107,4 +107,9 @@ public class HTTPHeaderAuthenticationProvider implements AuthenticationProvider
}
+ @Override
+ public void shutdown() {
+ // Do nothing
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java
index d06d6ed..e73b3df 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java
@@ -104,4 +104,9 @@ public abstract class InjectedAuthenticationProvider implements AuthenticationPr
authenticatedUser, credentials);
}
+ @Override
+ public void shutdown() {
+ // Do nothing
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java
index 1db4ee9..f9c4a7d 100644
--- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java
+++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java
@@ -103,5 +103,10 @@ public class LDAPAuthenticationProvider implements AuthenticationProvider {
return context;
}
+ @Override
+ public void shutdown() {
+ // Do nothing
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java
index 3acc512..448f495 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java
@@ -167,5 +167,12 @@ public interface AuthenticationProvider {
UserContext updateUserContext(UserContext context,
AuthenticatedUser authenticatedUser,
Credentials credentials) throws GuacamoleException;
+
+ /**
+ * Frees all resources associated with this AuthenticationProvider. This
+ * function will be automatically invoked when the Guacamole server is
+ * shutting down.
+ */
+ void shutdown();
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java
index 96766cb..83ac794 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java
@@ -260,4 +260,9 @@ public abstract class SimpleAuthenticationProvider
}
+ @Override
+ public void shutdown() {
+ // Do nothing
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java
----------------------------------------------------------------------
diff --git a/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java b/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java
index 72fe273..e8ad6a8 100644
--- a/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java
+++ b/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java
@@ -21,14 +21,17 @@ package org.apache.guacamole;
import org.apache.guacamole.tunnel.TunnelModule;
import com.google.inject.Guice;
+import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Stage;
import com.google.inject.servlet.GuiceServletContextListener;
+import java.util.List;
import javax.servlet.ServletContextEvent;
import org.apache.guacamole.environment.Environment;
import org.apache.guacamole.environment.LocalEnvironment;
import org.apache.guacamole.extension.ExtensionModule;
import org.apache.guacamole.log.LogModule;
+import org.apache.guacamole.net.auth.AuthenticationProvider;
import org.apache.guacamole.rest.RESTServiceModule;
import org.apache.guacamole.rest.auth.HashTokenSessionMap;
import org.apache.guacamole.rest.auth.TokenSessionMap;
@@ -56,6 +59,12 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener
*/
private TokenSessionMap sessionMap;
+ /**
+ * List of all authentication providers from all loaded extensions.
+ */
+ @Inject
+ private List<AuthenticationProvider> authProviders;
+
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
@@ -75,13 +84,21 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener
@Override
protected Injector getInjector() {
- return Guice.createInjector(Stage.PRODUCTION,
+
+ // Create injector
+ Injector injector = Guice.createInjector(Stage.PRODUCTION,
new EnvironmentModule(environment),
new LogModule(environment),
new ExtensionModule(environment),
new RESTServiceModule(sessionMap),
new TunnelModule()
);
+
+ // Inject any annotated members of this class
+ injector.injectMembers(this);
+
+ return injector;
+
}
@Override
@@ -93,6 +110,12 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener
if (sessionMap != null)
sessionMap.shutdown();
+ // Unload all extensions
+ if (authProviders != null) {
+ for (AuthenticationProvider authProvider : authProviders)
+ authProvider.shutdown();
+ }
+
}
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java
----------------------------------------------------------------------
diff --git a/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java b/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java
index e1ed5ff..c1e2765 100644
--- a/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java
+++ b/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java
@@ -209,4 +209,10 @@ public class AuthenticationProviderFacade implements AuthenticationProvider {
}
+ @Override
+ public void shutdown() {
+ if (authProvider != null)
+ authProvider.shutdown();
+ }
+
}