You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by jm...@apache.org on 2017/01/29 19:50:34 UTC
[2/3] incubator-guacamole-client git commit: GUACAMOLE-47: Store
remote address and hostname within Credentials.
GUACAMOLE-47: Store remote address and hostname within Credentials.
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/b336e26c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/b336e26c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/b336e26c
Branch: refs/heads/master
Commit: b336e26cb2e4cda2f309f5cf0c26875099dcdaa7
Parents: 1ed73e6
Author: Michael Jumper <mj...@apache.org>
Authored: Sat Jan 28 11:23:31 2017 -0800
Committer: Michael Jumper <mj...@apache.org>
Committed: Sat Jan 28 11:23:31 2017 -0800
----------------------------------------------------------------------
.../apache/guacamole/net/auth/Credentials.java | 65 ++++++++++++++++++++
.../apache/guacamole/token/StandardTokens.java | 16 ++---
.../guacamole/rest/auth/TokenRESTService.java | 2 +
.../guacamole/rest/user/UserResource.java | 2 +
4 files changed, 78 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/b336e26c/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Credentials.java
----------------------------------------------------------------------
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Credentials.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Credentials.java
index e6bb846..d9ea2d6 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Credentials.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/Credentials.java
@@ -52,6 +52,19 @@ public class Credentials implements Serializable {
private String password;
/**
+ * The address of the client end of the connection which provided these
+ * credentials, if known.
+ */
+ private String remoteAddress;
+
+ /**
+ * The hostname or, if the hostname cannot be determined, the address of
+ * the client end of the connection which provided these credentials, if
+ * known.
+ */
+ private String remoteHostname;
+
+ /**
* The HttpServletRequest carrying additional credentials, if any.
*/
private transient HttpServletRequest request;
@@ -133,4 +146,56 @@ public class Credentials implements Serializable {
this.session = session;
}
+ /**
+ * Returns the address of the client end of the connection which provided
+ * these credentials, if known.
+ *
+ * @return
+ * The address of the client end of the connection which provided these
+ * credentials, or null if the address is not known.
+ */
+ public String getRemoteAddress() {
+ return remoteAddress;
+ }
+
+ /**
+ * Sets the address of the client end of the connection which provided
+ * these credentials.
+ *
+ * @param remoteAddress
+ * The address of the client end of the connection which provided these
+ * credentials, or null if the address is not known.
+ */
+ public void setRemoteAddress(String remoteAddress) {
+ this.remoteAddress = remoteAddress;
+ }
+
+ /**
+ * Returns the hostname of the client end of the connection which provided
+ * these credentials, if known. If the hostname of the client cannot be
+ * determined, but the address is known, the address may be returned
+ * instead.
+ *
+ * @return
+ * The hostname or address of the client end of the connection which
+ * provided these credentials, or null if the hostname is not known.
+ */
+ public String getRemoteHostname() {
+ return remoteHostname;
+ }
+
+ /**
+ * Sets the hostname of the client end of the connection which provided
+ * these credentials, if known. If the hostname of the client cannot be
+ * determined, but the address is known, the address may be specified
+ * instead.
+ *
+ * @param remoteHostname
+ * The hostname or address of the client end of the connection which
+ * provided these credentials, or null if the hostname is not known.
+ */
+ public void setRemoteHostname(String remoteHostname) {
+ this.remoteHostname = remoteHostname;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/b336e26c/guacamole-ext/src/main/java/org/apache/guacamole/token/StandardTokens.java
----------------------------------------------------------------------
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/token/StandardTokens.java b/guacamole-ext/src/main/java/org/apache/guacamole/token/StandardTokens.java
index 2d0dd34..04058fe 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/token/StandardTokens.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/token/StandardTokens.java
@@ -21,7 +21,6 @@ package org.apache.guacamole.token;
import java.text.SimpleDateFormat;
import java.util.Date;
-import javax.servlet.http.HttpServletRequest;
import org.apache.guacamole.net.auth.Credentials;
/**
@@ -126,12 +125,15 @@ public class StandardTokens {
if (password != null)
filter.setToken(PASSWORD_TOKEN, password);
- // Add client hostname and ip tokens
- HttpServletRequest request = credentials.getRequest();
- if (request != null) {
- filter.setToken(CLIENT_HOSTNAME_TOKEN, request.getRemoteHost());
- filter.setToken(CLIENT_ADDRESS_TOKEN, request.getRemoteAddr());
- }
+ // Add client hostname token
+ String hostname = credentials.getRemoteHostname();
+ if (hostname != null)
+ filter.setToken(CLIENT_HOSTNAME_TOKEN, hostname);
+
+ // Add client address token
+ String address = credentials.getRemoteAddress();
+ if (address != null)
+ filter.setToken(CLIENT_ADDRESS_TOKEN, address);
// Add any tokens which do not require credentials
addStandardTokens(filter);
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/b336e26c/guacamole/src/main/java/org/apache/guacamole/rest/auth/TokenRESTService.java
----------------------------------------------------------------------
diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/auth/TokenRESTService.java b/guacamole/src/main/java/org/apache/guacamole/rest/auth/TokenRESTService.java
index 14adeb5..2ba6459 100644
--- a/guacamole/src/main/java/org/apache/guacamole/rest/auth/TokenRESTService.java
+++ b/guacamole/src/main/java/org/apache/guacamole/rest/auth/TokenRESTService.java
@@ -125,6 +125,8 @@ public class TokenRESTService {
credentials.setPassword(password);
credentials.setRequest(request);
credentials.setSession(request.getSession(true));
+ credentials.setRemoteAddress(request.getRemoteAddr());
+ credentials.setRemoteHostname(request.getRemoteHost());
return credentials;
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/b336e26c/guacamole/src/main/java/org/apache/guacamole/rest/user/UserResource.java
----------------------------------------------------------------------
diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/user/UserResource.java b/guacamole/src/main/java/org/apache/guacamole/rest/user/UserResource.java
index 7329a02..a0ca3ec 100644
--- a/guacamole/src/main/java/org/apache/guacamole/rest/user/UserResource.java
+++ b/guacamole/src/main/java/org/apache/guacamole/rest/user/UserResource.java
@@ -130,6 +130,8 @@ public class UserResource
credentials.setPassword(userPasswordUpdate.getOldPassword());
credentials.setRequest(request);
credentials.setSession(request.getSession(true));
+ credentials.setRemoteAddress(request.getRemoteAddr());
+ credentials.setRemoteHostname(request.getRemoteHost());
// Verify that the old password was correct
try {