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 2018/11/06 22:09:26 UTC

knox git commit: KNOX-1557 - Add encoding for < and > for PassAllHeadersNoEncodingDispatch dispatch

Repository: knox
Updated Branches:
  refs/heads/master 71e33f02f -> 38e6eb885


KNOX-1557 - Add encoding for < and > for PassAllHeadersNoEncodingDispatch dispatch


Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/38e6eb88
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/38e6eb88
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/38e6eb88

Branch: refs/heads/master
Commit: 38e6eb8850d471c25c94dfddda17aa97c5956898
Parents: 71e33f0
Author: Sandeep More <mo...@apache.org>
Authored: Tue Nov 6 17:08:06 2018 -0500
Committer: Sandeep More <mo...@apache.org>
Committed: Tue Nov 6 17:09:15 2018 -0500

----------------------------------------------------------------------
 .../knox/gateway/dispatch/AbstractGatewayDispatch.java  | 10 ++++++++++
 .../dispatch/PassAllHeadersNoEncodingDispatchTest.java  | 12 ++++++++++++
 2 files changed, 22 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/38e6eb88/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
index 476e8f4..cef53be 100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
@@ -151,6 +151,16 @@ public abstract class AbstractGatewayDispatch implements Dispatch {
       str.replace(dq, dq+1, "%22");
       dq = str.indexOf("\"", dq+1);
     }
+    int lessThan = str.indexOf("<");
+    while (lessThan > -1) {
+      str.replace(lessThan, lessThan+1, "%3C");
+      lessThan = str.indexOf("<", lessThan+1);
+    }
+    int greaterThan = str.indexOf(">");
+    while (greaterThan > -1) {
+      str.replace(greaterThan, greaterThan+1, "%3E");
+      greaterThan = str.indexOf(">", greaterThan+1);
+    }
   }
 
 }

http://git-wip-us.apache.org/repos/asf/knox/blob/38e6eb88/gateway-spi/src/test/java/org/apache/knox/gateway/dispatch/PassAllHeadersNoEncodingDispatchTest.java
----------------------------------------------------------------------
diff --git a/gateway-spi/src/test/java/org/apache/knox/gateway/dispatch/PassAllHeadersNoEncodingDispatchTest.java b/gateway-spi/src/test/java/org/apache/knox/gateway/dispatch/PassAllHeadersNoEncodingDispatchTest.java
index bded8df..186883c 100644
--- a/gateway-spi/src/test/java/org/apache/knox/gateway/dispatch/PassAllHeadersNoEncodingDispatchTest.java
+++ b/gateway-spi/src/test/java/org/apache/knox/gateway/dispatch/PassAllHeadersNoEncodingDispatchTest.java
@@ -87,5 +87,17 @@ public class PassAllHeadersNoEncodingDispatchTest {
     EasyMock.replay( request );
     uri = dispatch.getDispatchUrl( request );
     assertThat( uri.toASCIIString(), is( "https://test-host:42/api/v1/views/TEZ/versions/0.7.0.2.6.2.0-205/instances/TEZ_CLUSTER_INSTANCE/resources/atsproxy/ws/v1/timeline/TEZ_DAG_ID?limit=9007199254740991&primaryFilter=applicationId:%22application_1518808140659_0007%22&_=1519053586839" ) );
+
+    // encode < and > sign
+    path = "http://test-host:8080/api/v1/clusters/mmolnar-knox2/configurations/service_config_versions";
+    query = "group_id%3E0&fields=*&_=1541527314780";
+    request = EasyMock.createNiceMock( HttpServletRequest.class );
+    EasyMock.expect( request.getRequestURI() ).andReturn( path ).anyTimes();
+    EasyMock.expect( request.getRequestURL() ).andReturn( new StringBuffer( path ) ).anyTimes();
+    EasyMock.expect( request.getQueryString() ).andReturn( query ).anyTimes();
+    EasyMock.replay( request );
+    uri = dispatch.getDispatchUrl( request );
+    assertThat( uri.toASCIIString(), is( "http://test-host:8080/api/v1/clusters/mmolnar-knox2/configurations/service_config_versions?group_id%3E0&fields=*&_=1541527314780" ) );
+
   }
 }