HDDS-573. Make VirtualHostStyleFilter port agnostic. Contributed by Danilo Perez.

This commit is contained in:
Márton Elek 2018-10-29 14:45:01 +01:00
parent 78ea897b67
commit bfb720ebc8
2 changed files with 12 additions and 1 deletions

View File

@ -74,6 +74,7 @@ public void filter(ContainerRequestContext requestContext) throws
} }
//Get the value of the host //Get the value of the host
String host = requestContext.getHeaderString(HttpHeaders.HOST); String host = requestContext.getHeaderString(HttpHeaders.HOST);
host = checkHostWithoutPort(host);
String domain = getDomainName(host); String domain = getDomainName(host);
if (domain == null) { if (domain == null) {
@ -148,6 +149,14 @@ private String getDomainName(String host) {
return match; return match;
} }
private String checkHostWithoutPort(String host) {
if (host.contains(":")){
return host.substring(0, host.lastIndexOf(":"));
} else {
return host;
}
}
@VisibleForTesting @VisibleForTesting
public void setAuthenticationHeaderParser(AuthenticationHeaderParser parser) { public void setAuthenticationHeaderParser(AuthenticationHeaderParser parser) {
this.authenticationHeaderParser = parser; this.authenticationHeaderParser = parser;

View File

@ -49,6 +49,7 @@ public void setup() {
conf = new OzoneConfiguration(); conf = new OzoneConfiguration();
s3HttpAddr = "localhost:9878"; s3HttpAddr = "localhost:9878";
conf.set(S3GatewayConfigKeys.OZONE_S3G_HTTP_ADDRESS_KEY, s3HttpAddr); conf.set(S3GatewayConfigKeys.OZONE_S3G_HTTP_ADDRESS_KEY, s3HttpAddr);
s3HttpAddr = s3HttpAddr.substring(0, s3HttpAddr.lastIndexOf(":"));
conf.set(S3GatewayConfigKeys.OZONE_S3G_DOMAIN_NAME, s3HttpAddr); conf.set(S3GatewayConfigKeys.OZONE_S3G_DOMAIN_NAME, s3HttpAddr);
authenticationHeaderParser = new AuthenticationHeaderParser(); authenticationHeaderParser = new AuthenticationHeaderParser();
authenticationHeaderParser.setAuthHeader("AWS ozone:scret"); authenticationHeaderParser.setAuthHeader("AWS ozone:scret");
@ -185,9 +186,10 @@ public void testVirtualHostStyleWithNoMatchingDomain() throws Exception {
authenticationHeaderParser); authenticationHeaderParser);
ContainerRequest containerRequest = createContainerRequest("mybucket" + ContainerRequest containerRequest = createContainerRequest("mybucket" +
".localhost:9999", null, null, true); ".myhost:9999", null, null, true);
try { try {
virtualHostStyleFilter.filter(containerRequest); virtualHostStyleFilter.filter(containerRequest);
fail("testVirtualHostStyleWithNoMatchingDomain");
} catch (InvalidRequestException ex) { } catch (InvalidRequestException ex) {
GenericTestUtils.assertExceptionContains("No matching domain", ex); GenericTestUtils.assertExceptionContains("No matching domain", ex);
} }