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();
+    }
+
 }