GUACAMOLE-394: Add getLastActive() function, returning the time that a user/connection was last logged-in / used.
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/3cd7f453 Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/3cd7f453 Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/3cd7f453 Branch: refs/heads/master Commit: 3cd7f453c0a9ba8abd69c76cce8da8a917c0021e Parents: b61f14e Author: Michael Jumper <[email protected]> Authored: Mon Sep 11 18:49:11 2017 -0700 Committer: Michael Jumper <[email protected]> Committed: Mon Sep 25 12:50:52 2017 -0700 ---------------------------------------------------------------------- .../auth/jdbc/connection/ModeledConnection.java | 6 ++++++ .../auth/jdbc/sharing/connection/SharedConnection.java | 6 ++++++ .../guacamole/auth/jdbc/sharing/user/SharedUser.java | 9 +++++++++ .../apache/guacamole/auth/jdbc/user/ModeledUser.java | 5 +++++ .../java/org/apache/guacamole/net/auth/Connection.java | 13 +++++++++++++ .../main/java/org/apache/guacamole/net/auth/User.java | 12 ++++++++++++ .../guacamole/net/auth/simple/SimpleConnection.java | 6 ++++++ .../apache/guacamole/net/auth/simple/SimpleUser.java | 6 ++++++ .../rest/connection/APIConnectionWrapper.java | 6 ++++++ .../org/apache/guacamole/rest/user/APIUserWrapper.java | 6 ++++++ 10 files changed, 75 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java index 365c40d..c596b27 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java @@ -24,6 +24,7 @@ import com.google.inject.Provider; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -233,6 +234,11 @@ public class ModeledConnection extends ModeledChildDirectoryObject<ConnectionMod } @Override + public Date getLastActive() { + return null; + } + + @Override public List<? extends ConnectionRecord> getHistory() throws GuacamoleException { return connectionService.retrieveHistory(getCurrentUser(), this); } http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/connection/SharedConnection.java ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/connection/SharedConnection.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/connection/SharedConnection.java index 1c955db..5483d02 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/connection/SharedConnection.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/connection/SharedConnection.java @@ -21,6 +21,7 @@ package org.apache.guacamole.auth.jdbc.sharing.connection; import com.google.inject.Inject; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; @@ -147,6 +148,11 @@ public class SharedConnection implements Connection { } @Override + public Date getLastActive() { + return null; + } + + @Override public List<? extends ConnectionRecord> getHistory() throws GuacamoleException { return Collections.<ConnectionRecord>emptyList(); http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUser.java ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUser.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUser.java index 07d762a..8e7931d 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUser.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUser.java @@ -20,6 +20,7 @@ package org.apache.guacamole.auth.jdbc.sharing.user; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Map; import org.apache.guacamole.GuacamoleException; @@ -91,6 +92,14 @@ public class SharedUser implements User { } @Override + public Date getLastActive() { + + // History is not recorded for shared users + return null; + + } + + @Override public List<ActivityRecord> getHistory() throws GuacamoleException { // History is not recorded for shared users http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java index 1d40c1f..fc43e36 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java @@ -795,6 +795,11 @@ public class ModeledUser extends ModeledDirectoryObject<UserModel> implements Us } @Override + public Date getLastActive() { + return null; + } + + @Override public List<ActivityRecord> getHistory() throws GuacamoleException { return Collections.<ActivityRecord>emptyList(); } http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Connection.java ---------------------------------------------------------------------- diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Connection.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Connection.java index b0795e2..85fd168 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Connection.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Connection.java @@ -19,6 +19,7 @@ package org.apache.guacamole.net.auth; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; @@ -103,6 +104,18 @@ public interface Connection extends Identifiable, Connectable { void setAttributes(Map<String, String> attributes); /** + * Returns the date and time that this connection was last used. If the + * connection was never used, the time that the connection was last used is + * unknown, or this information is not visible to the current user, this + * may be null. + * + * @return + * The date and time this connection was last used, or null if this + * information is unavailable or inapplicable. + */ + Date getLastActive(); + + /** * Returns a list of ConnectionRecords representing the usage history * of this Connection, including any active users. ConnectionRecords * in this list will be sorted in descending order of end time (active http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/User.java ---------------------------------------------------------------------- diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/User.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/User.java index 43d57c0..f7bd61c 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/User.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/User.java @@ -19,6 +19,7 @@ package org.apache.guacamole.net.auth; +import java.util.Date; import java.util.List; import java.util.Map; import org.apache.guacamole.GuacamoleException; @@ -102,6 +103,17 @@ public interface User extends Identifiable { void setAttributes(Map<String, String> attributes); /** + * Returns the date and time that this user was last active. If the user + * was never active, the time that the user was last active is unknown, or + * this information is not visible to the current user, this may be null. + * + * @return + * The date and time this user was last active, or null if this + * information is unavailable or inapplicable. + */ + Date getLastActive(); + + /** * Returns a list of ActivityRecords representing the login history * of this user, including any active sessions. ActivityRecords * in this list will be sorted in descending order of end time (active http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleConnection.java ---------------------------------------------------------------------- diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleConnection.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleConnection.java index 2251a9e..85783a0 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleConnection.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleConnection.java @@ -20,6 +20,7 @@ package org.apache.guacamole.net.auth.simple; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Map; import org.apache.guacamole.GuacamoleException; @@ -137,6 +138,11 @@ public class SimpleConnection extends AbstractConnection { } @Override + public Date getLastActive() { + return null; + } + + @Override public List<ConnectionRecord> getHistory() throws GuacamoleException { return Collections.<ConnectionRecord>emptyList(); } http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUser.java ---------------------------------------------------------------------- diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUser.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUser.java index cd20f39..19ed357 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUser.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUser.java @@ -21,6 +21,7 @@ package org.apache.guacamole.net.auth.simple; import java.util.Collection; import java.util.Collections; +import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -166,6 +167,11 @@ public class SimpleUser extends AbstractUser { } @Override + public Date getLastActive() { + return null; + } + + @Override public List<ActivityRecord> getHistory() throws GuacamoleException { return Collections.<ActivityRecord>emptyList(); } http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/guacamole/src/main/java/org/apache/guacamole/rest/connection/APIConnectionWrapper.java ---------------------------------------------------------------------- diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/connection/APIConnectionWrapper.java b/guacamole/src/main/java/org/apache/guacamole/rest/connection/APIConnectionWrapper.java index e06e338..3a987e5 100644 --- a/guacamole/src/main/java/org/apache/guacamole/rest/connection/APIConnectionWrapper.java +++ b/guacamole/src/main/java/org/apache/guacamole/rest/connection/APIConnectionWrapper.java @@ -20,6 +20,7 @@ package org.apache.guacamole.rest.connection; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; @@ -132,6 +133,11 @@ public class APIConnectionWrapper implements Connection { } @Override + public Date getLastActive() { + return null; + } + + @Override public List<? extends ConnectionRecord> getHistory() throws GuacamoleException { return Collections.<ConnectionRecord>emptyList(); } http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3cd7f453/guacamole/src/main/java/org/apache/guacamole/rest/user/APIUserWrapper.java ---------------------------------------------------------------------- diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/user/APIUserWrapper.java b/guacamole/src/main/java/org/apache/guacamole/rest/user/APIUserWrapper.java index 7f37be6..c4b85f9 100644 --- a/guacamole/src/main/java/org/apache/guacamole/rest/user/APIUserWrapper.java +++ b/guacamole/src/main/java/org/apache/guacamole/rest/user/APIUserWrapper.java @@ -20,6 +20,7 @@ package org.apache.guacamole.rest.user; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Map; import org.apache.guacamole.GuacamoleException; @@ -116,6 +117,11 @@ public class APIUserWrapper implements User { } @Override + public Date getLastActive() { + return null; + } + + @Override public List<? extends ActivityRecord> getHistory() throws GuacamoleException { return Collections.<ActivityRecord>emptyList(); }
