GUACAMOLE-394: Expose "last active" time for connections and users via REST API.

This commit is contained in:
Michael Jumper
2017-09-11 19:03:27 -07:00
parent b8ce9c96e7
commit 67fc77a1c7
4 changed files with 81 additions and 1 deletions

View File

@@ -20,6 +20,7 @@
package org.apache.guacamole.rest.connection;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -75,7 +76,13 @@ public class APIConnection {
* The count of currently active connections using this connection.
*/
private int activeConnections;
/**
* The date and time that this connection was last used, or null if this
* connection has never been used or this information is unavailable.
*/
private Date lastActive;
/**
* Create an empty APIConnection.
*/
@@ -97,6 +104,7 @@ public class APIConnection {
this.identifier = connection.getIdentifier();
this.parentIdentifier = connection.getParentIdentifier();
this.activeConnections = connection.getActiveConnections();
this.lastActive = connection.getLastActive();
// Set protocol from configuration
GuacamoleConfiguration configuration = connection.getConfiguration();
@@ -257,4 +265,27 @@ public class APIConnection {
this.sharingProfiles = sharingProfiles;
}
/**
* Returns the date and time that this connection was last used, or null if
* this connection has never been used or this information is unavailable.
*
* @return
* The date and time that this connection was last used, or null if this
* connection has never been used or this information is unavailable.
*/
public Date getLastActive() {
return lastActive;
}
/**
* Sets the date and time that this connection was last used.
*
* @param lastActive
* The date and time that this connection was last used, or null if this
* connection has never been used or this information is unavailable.
*/
public void setLastActive(Date lastActive) {
this.lastActive = lastActive;
}
}

View File

@@ -19,6 +19,7 @@
package org.apache.guacamole.rest.user;
import java.util.Date;
import java.util.Map;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -46,6 +47,12 @@ public class APIUser {
*/
private Map<String, String> attributes;
/**
* The date and time that this user was last logged in, or null if this user
* has never logged in or this information is unavailable.
*/
private Date lastActive;
/**
* Construct a new empty APIUser.
*/
@@ -60,6 +67,7 @@ public class APIUser {
// Set user information
this.username = user.getIdentifier();
this.password = user.getPassword();
this.lastActive = user.getLastActive();
// Associate any attributes
this.attributes = user.getAttributes();
@@ -122,4 +130,27 @@ public class APIUser {
this.attributes = attributes;
}
/**
* Returns the date and time that this user was last logged in, or null if
* this user has never logged in or this information is unavailable.
*
* @return
* The date and time that this user was last logged in, or null if this
* user has never logged in or this information is unavailable.
*/
public Date getLastActive() {
return lastActive;
}
/**
* Sets the date and time that this user was last logged in.
*
* @param lastActive
* The date and time that this user was last logged in, or null if this
* user has never logged in or this information is unavailable.
*/
public void setLastActive(Date lastActive) {
this.lastActive = lastActive;
}
}

View File

@@ -104,6 +104,15 @@ angular.module('rest').factory('Connection', [function defineConnection() {
*/
this.sharingProfiles = template.sharingProfiles;
/**
* The time that this connection was last used, in seconds since
* 1970-01-01 00:00:00 UTC. If this information is unknown or
* unavailable, this will be null.
*
* @type Number
*/
this.lastActive = template.lastActive;
};
return Connection;

View File

@@ -53,6 +53,15 @@ angular.module('rest').factory('User', [function defineUser() {
*/
this.password = template.password;
/**
* The time that this user was last logged in, in seconds since
* 1970-01-01 00:00:00 UTC. If this information is unknown or
* unavailable, this will be null.
*
* @type Number
*/
this.lastActive = template.lastActive;
/**
* Arbitrary name/value pairs which further describe this user. The
* semantics and validity of these attributes are dictated by the