You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by mo...@apache.org on 2017/03/09 16:57:22 UTC
knox git commit: KNOX-897 - X-Forwarded-Port incorrectly defaults to
the one configured for Knox if standard ports (80 and 443) are used (Attila
Kanto via Sandeep More)
Repository: knox
Updated Branches:
refs/heads/master 6c0000974 -> 3ee68053e
KNOX-897 - X-Forwarded-Port incorrectly defaults to the one configured for Knox if standard ports (80 and 443) are used (Attila Kanto via Sandeep More)
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/3ee68053
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/3ee68053
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/3ee68053
Branch: refs/heads/master
Commit: 3ee68053e7d41d3aa6e8777e5e599596fc7ce6a1
Parents: 6c00009
Author: Sandeep More <mo...@apache.org>
Authored: Thu Mar 9 11:56:45 2017 -0500
Committer: Sandeep More <mo...@apache.org>
Committed: Thu Mar 9 11:56:45 2017 -0500
----------------------------------------------------------------------
.../filter/rewrite/impl/UrlRewriteResponse.java | 14 ++++++++++----
.../filter/XForwardedHeaderRequestWrapper.java | 9 ++++++++-
2 files changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/3ee68053/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java
index 2933cfb..c006d01 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/UrlRewriteResponse.java
@@ -240,7 +240,11 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params
private String getGatewayParam( String name ) {
if( "url".equals( name ) ) {
- return xForwardedScheme + "://" + xForwardedHostname + ":" + xForwardedPort + request.getContextPath();
+ if( xForwardedPort == null ) {
+ return xForwardedScheme + "://" + xForwardedHostname + request.getContextPath();
+ } else {
+ return xForwardedScheme + "://" + xForwardedHostname + ":" + xForwardedPort + request.getContextPath();
+ }
} else if( "scheme".equals( name ) ) {
return xForwardedScheme;
} else if( "host".equals( name ) ) {
@@ -248,7 +252,11 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params
} else if( "port".equals( name ) ) {
return xForwardedPort;
} else if( "addr".equals( name ) || "address".equals( name ) ) {
- return xForwardedHostname + ":" + xForwardedPort;
+ if( xForwardedPort == null ) {
+ return xForwardedHostname;
+ } else {
+ return xForwardedHostname + ":" + xForwardedPort;
+ }
} else if( "path".equals( name ) ) {
return request.getContextPath();
} else {
@@ -315,8 +323,6 @@ public class UrlRewriteResponse extends GatewayResponseWrapper implements Params
}
} else {
xForwardedHostname = getRequestLocalHostName();
- }
- if (xForwardedPort == null) {
xForwardedPort = Integer.toString( request.getLocalPort() );
}
}
http://git-wip-us.apache.org/repos/asf/knox/blob/3ee68053/gateway-server-xforwarded-filter/src/main/java/org/apache/hadoop/gateway/filter/XForwardedHeaderRequestWrapper.java
----------------------------------------------------------------------
diff --git a/gateway-server-xforwarded-filter/src/main/java/org/apache/hadoop/gateway/filter/XForwardedHeaderRequestWrapper.java b/gateway-server-xforwarded-filter/src/main/java/org/apache/hadoop/gateway/filter/XForwardedHeaderRequestWrapper.java
index 787ed52..07dc943 100644
--- a/gateway-server-xforwarded-filter/src/main/java/org/apache/hadoop/gateway/filter/XForwardedHeaderRequestWrapper.java
+++ b/gateway-server-xforwarded-filter/src/main/java/org/apache/hadoop/gateway/filter/XForwardedHeaderRequestWrapper.java
@@ -118,7 +118,14 @@ public class XForwardedHeaderRequestWrapper extends GatewayRequestWrapper {
private static String getForwardedPort( HttpServletRequest request ) {
String value = request.getHeader( X_FORWARDED_PORT );
if( value == null ) {
- value = Integer.toString( request.getLocalPort() );
+ String forwardedHost = getForwardedHost( request );
+ int separator = forwardedHost.indexOf( ":" );
+ if ( separator > 0 ) {
+ value = forwardedHost.substring(separator + 1, forwardedHost.length());
+ } else {
+ // use default ports
+ value = request.isSecure() ? "443" : "80";
+ }
}
return value;
}