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 <[email protected]> Authored: Tue Nov 6 17:08:06 2018 -0500 Committer: Sandeep More <[email protected]> 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" ) ); + } }
