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 2018/01/05 15:42:05 UTC
[05/17] guacamole-client git commit: GUACAMOLE-394: Automatically
update the end time of user history records upon logout.
GUACAMOLE-394: Automatically update the end time of user history records upon logout.
Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/28e7d215
Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/28e7d215
Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/28e7d215
Branch: refs/heads/master
Commit: 28e7d215aceb2e5c572bdfc00207ef37d33ca8e8
Parents: 3ccb4d4
Author: Michael Jumper <mj...@apache.org>
Authored: Tue Sep 12 18:03:22 2017 -0700
Committer: Michael Jumper <mj...@apache.org>
Committed: Mon Dec 11 23:51:57 2017 -0800
----------------------------------------------------------------------
.../auth/jdbc/base/ActivityRecordModel.java | 26 ++++++++++++++++++++
.../auth/jdbc/user/ModeledUserContext.java | 6 ++++-
.../auth/jdbc/user/UserRecordMapper.java | 11 +++++++++
.../auth/jdbc/user/UserRecordMapper.xml | 16 +++++++++++-
.../auth/jdbc/user/UserRecordMapper.xml | 16 +++++++++++-
.../auth/jdbc/user/UserRecordMapper.xml | 16 +++++++++++-
6 files changed, 87 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/28e7d215/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordModel.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordModel.java
index 86f2204..fbf6209 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordModel.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ActivityRecordModel.java
@@ -28,6 +28,11 @@ import java.util.Date;
public class ActivityRecordModel {
/**
+ * The ID of this object in the database, if any.
+ */
+ private Integer recordID;
+
+ /**
* The database ID of the user associated with this activity record.
*/
private Integer userID;
@@ -54,6 +59,27 @@ public class ActivityRecordModel {
private Date endDate;
/**
+ * Returns the ID of this record in the database, if it exists.
+ *
+ * @return
+ * The ID of this record in the database, or null if this record was
+ * not retrieved from the database.
+ */
+ public Integer getRecordID() {
+ return recordID;
+ }
+
+ /**
+ * Sets the database ID of this record to the given value.
+ *
+ * @param recordID
+ * The ID to assign to this object.
+ */
+ public void setRecordID(Integer recordID) {
+ this.recordID = recordID;
+ }
+
+ /**
* Returns the database ID of the user associated with this activity
* record.
*
http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/28e7d215/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java
index 0b3b121..5bfcda6 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java
@@ -231,7 +231,11 @@ public class ModeledUserContext extends RestrictedObject
@Override
public void invalidate() {
- // Nothing to invalidate
+
+ // Record logout time
+ userRecord.setEndDate(new Date());
+ userRecordMapper.update(userRecord);
+
}
}
http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/28e7d215/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.java
index 68f0c94..b2177bf 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.java
@@ -57,6 +57,17 @@ public interface UserRecordMapper {
int insert(@Param("record") ActivityRecordModel record);
/**
+ * Updates the given user login record.
+ *
+ * @param record
+ * The user login record to update.
+ *
+ * @return
+ * The number of rows updated.
+ */
+ int update(@Param("record") ActivityRecordModel record);
+
+ /**
* Searches for up to <code>limit</code> user login records that contain
* the given terms, sorted by the given predicates, regardless of whether
* the data they are associated with is is readable by any particular user.
http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/28e7d215/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
index 0467452..bbae03b 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
@@ -25,6 +25,7 @@
<!-- Result mapper for system permissions -->
<resultMap id="UserRecordResultMap" type="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
+ <id column="history_id" property="recordID" jdbcType="INTEGER"/>
<result column="remote_host" property="remoteHost" jdbcType="VARCHAR"/>
<result column="user_id" property="userID" jdbcType="INTEGER"/>
<result column="username" property="username" jdbcType="VARCHAR"/>
@@ -52,7 +53,8 @@
</select>
<!-- Insert the given user record -->
- <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
+ <insert id="insert" useGeneratedKeys="true" keyProperty="record.recordID"
+ parameterType="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
INSERT INTO guacamole_user_history (
remote_host,
@@ -72,6 +74,18 @@
</insert>
+ <!-- Update the given user record -->
+ <update id="update" parameterType="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
+ UPDATE guacamole_user_history
+ SET remote_host = #{record.remoteHost,jdbcType=VARCHAR},
+ user_id = (SELECT user_id FROM guacamole_user
+ WHERE username = #{record.username,jdbcType=VARCHAR}),
+ username = #{record.username,jdbcType=VARCHAR},
+ start_date = #{record.startDate,jdbcType=TIMESTAMP},
+ end_date = #{record.endDate,jdbcType=TIMESTAMP}
+ WHERE history_id = #{record.recordID,jdbcType=INTEGER}
+ </update>
+
<!-- Search for specific user records -->
<select id="search" resultMap="UserRecordResultMap">
http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/28e7d215/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
index 0467452..014b38a 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
@@ -25,6 +25,7 @@
<!-- Result mapper for system permissions -->
<resultMap id="UserRecordResultMap" type="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
+ <id column="history_id" property="recordID" jdbcType="INTEGER"/>
<result column="remote_host" property="remoteHost" jdbcType="VARCHAR"/>
<result column="user_id" property="userID" jdbcType="INTEGER"/>
<result column="username" property="username" jdbcType="VARCHAR"/>
@@ -52,7 +53,8 @@
</select>
<!-- Insert the given user record -->
- <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
+ <insert id="insert" useGeneratedKeys="true" keyProperty="record.recordID"
+ parameterType="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
INSERT INTO guacamole_user_history (
remote_host,
@@ -72,6 +74,18 @@
</insert>
+ <!-- Update the given user record -->
+ <update id="update" parameterType="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
+ UPDATE guacamole_user_history
+ SET remote_host = #{record.remoteHost,jdbcType=VARCHAR},
+ user_id = (SELECT user_id FROM guacamole_user
+ WHERE username = #{record.username,jdbcType=VARCHAR}),
+ username = #{record.username,jdbcType=VARCHAR},
+ start_date = #{record.startDate,jdbcType=TIMESTAMP},
+ end_date = #{record.endDate,jdbcType=TIMESTAMP}
+ WHERE history_id = #{record.recordID,jdbcType=INTEGER}::integer
+ </update>
+
<!-- Search for specific user records -->
<select id="search" resultMap="UserRecordResultMap">
http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/28e7d215/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
index fafa863..0143dda 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/resources/org/apache/guacamole/auth/jdbc/user/UserRecordMapper.xml
@@ -25,6 +25,7 @@
<!-- Result mapper for system permissions -->
<resultMap id="UserRecordResultMap" type="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
+ <id column="history_id" property="recordID" jdbcType="INTEGER"/>
<result column="remote_host" property="remoteHost" jdbcType="VARCHAR"/>
<result column="user_id" property="userID" jdbcType="INTEGER"/>
<result column="username" property="username" jdbcType="VARCHAR"/>
@@ -52,7 +53,8 @@
</select>
<!-- Insert the given user record -->
- <insert id="insert" parameterType="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
+ <insert id="insert" useGeneratedKeys="true" keyProperty="record.recordID"
+ parameterType="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
INSERT INTO [guacamole_user_history] (
remote_host,
@@ -72,6 +74,18 @@
</insert>
+ <!-- Update the given user record -->
+ <update id="update" parameterType="org.apache.guacamole.auth.jdbc.base.ActivityRecordModel">
+ UPDATE [guacamole_user_history]
+ SET remote_host = #{record.remoteHost,jdbcType=VARCHAR},
+ user_id = (SELECT user_id FROM [guacamole_user]
+ WHERE username = #{record.username,jdbcType=VARCHAR}),
+ username = #{record.username,jdbcType=VARCHAR},
+ start_date = #{record.startDate,jdbcType=TIMESTAMP},
+ end_date = #{record.endDate,jdbcType=TIMESTAMP}
+ WHERE history_id = #{record.recordID,jdbcType=INTEGER}
+ </update>
+
<!-- Search for specific user records -->
<select id="search" resultMap="UserRecordResultMap">