Add configuration to ignore unknown headers

Fixes #130.
pull/124/merge
Andrew Gaul 2016-03-12 23:15:00 -07:00
rodzic d878642b5d
commit 2296b8228b
4 zmienionych plików z 23 dodań i 3 usunięć

Wyświetl plik

@ -124,6 +124,8 @@ public final class Main {
S3ProxyConstants.PROPERTY_VIRTUAL_HOST);
String v4MaxNonChunkedRequestSize = properties.getProperty(
S3ProxyConstants.PROPERTY_V4_MAX_NON_CHUNKED_REQUEST_SIZE);
String ignoreUnknownHeaders = properties.getProperty(
S3ProxyConstants.PROPERTY_IGNORE_UNKNOWN_HEADERS);
BlobStore blobStore = createBlobStore(properties);
@ -178,7 +180,11 @@ public final class Main {
}
if (v4MaxNonChunkedRequestSize != null) {
s3ProxyBuilder.v4MaxNonChunkedRequestSize(Long.parseLong(
v4MaxNonChunkedRequestSize));
v4MaxNonChunkedRequestSize));
}
if (ignoreUnknownHeaders != null) {
s3ProxyBuilder.ignoreUnknownHeaders(Boolean.parseBoolean(
ignoreUnknownHeaders));
}
s3Proxy = s3ProxyBuilder.build();
} catch (IllegalArgumentException | IllegalStateException e) {

Wyświetl plik

@ -103,7 +103,8 @@ public final class S3Proxy {
}
handler = new S3ProxyHandler(builder.blobStore, builder.identity,
builder.credential, Optional.fromNullable(builder.virtualHost),
builder.v4MaxNonChunkedRequestSize);
builder.v4MaxNonChunkedRequestSize,
builder.ignoreUnknownHeaders);
server.setHandler(handler);
}
@ -117,6 +118,7 @@ public final class S3Proxy {
private String keyStorePassword;
private String virtualHost;
private long v4MaxNonChunkedRequestSize = 32 * 1024 * 1024;
private boolean ignoreUnknownHeaders;
Builder() {
}
@ -167,6 +169,11 @@ public final class S3Proxy {
this.v4MaxNonChunkedRequestSize = v4MaxNonChunkedRequestSize;
return this;
}
public Builder ignoreUnknownHeaders(boolean ignoreUnknownHeaders) {
this.ignoreUnknownHeaders = ignoreUnknownHeaders;
return this;
}
}
public static Builder builder() {

Wyświetl plik

@ -27,6 +27,8 @@ public final class S3ProxyConstants {
"s3proxy.identity";
public static final String PROPERTY_CREDENTIAL =
"s3proxy.credential";
public static final String PROPERTY_IGNORE_UNKNOWN_HEADERS =
"s3proxy.ignore-unknown-headers";
public static final String PROPERTY_KEYSTORE_PATH =
"s3proxy.keystore-path";
public static final String PROPERTY_KEYSTORE_PASSWORD =

Wyświetl plik

@ -187,6 +187,7 @@ final class S3ProxyHandler extends AbstractHandler {
private final boolean anonymousIdentity;
private final Optional<String> virtualHost;
private final long v4MaxNonChunkedRequestSize;
private final boolean ignoreUnknownHeaders;
private final XMLOutputFactory xmlOutputFactory =
XMLOutputFactory.newInstance();
private BlobStoreLocator blobStoreLocator;
@ -206,7 +207,7 @@ final class S3ProxyHandler extends AbstractHandler {
S3ProxyHandler(final BlobStore blobStore, final String identity,
final String credential, Optional<String> virtualHost,
long v4MaxNonChunkedRequestSize) {
long v4MaxNonChunkedRequestSize, boolean ignoreUnknownHeaders) {
if (identity != null) {
anonymousIdentity = false;
blobStoreLocator = new BlobStoreLocator() {
@ -233,6 +234,7 @@ final class S3ProxyHandler extends AbstractHandler {
}
this.virtualHost = requireNonNull(virtualHost);
this.v4MaxNonChunkedRequestSize = v4MaxNonChunkedRequestSize;
this.ignoreUnknownHeaders = ignoreUnknownHeaders;
this.defaultBlobStore = blobStore;
xmlOutputFactory.setProperty("javax.xml.stream.isRepairingNamespaces",
Boolean.FALSE);
@ -457,6 +459,9 @@ final class S3ProxyHandler extends AbstractHandler {
// emit NotImplemented for unknown x-amz- headers
for (String headerName : Collections.list(request.getHeaderNames())) {
if (ignoreUnknownHeaders) {
continue;
}
if (!headerName.startsWith("x-amz-")) {
continue;
}