kopia lustrzana https://github.com/gaul/s3proxy
rodzic
fcbc14780b
commit
01f956052e
|
@ -126,6 +126,8 @@ public final class Main {
|
|||
S3ProxyConstants.PROPERTY_V4_MAX_NON_CHUNKED_REQUEST_SIZE);
|
||||
String ignoreUnknownHeaders = properties.getProperty(
|
||||
S3ProxyConstants.PROPERTY_IGNORE_UNKNOWN_HEADERS);
|
||||
String corsAllowAll = properties.getProperty(
|
||||
S3ProxyConstants.PROPERTY_CORS_ALLOW_ALL);
|
||||
|
||||
BlobStore blobStore = createBlobStore(properties);
|
||||
|
||||
|
@ -186,6 +188,10 @@ public final class Main {
|
|||
s3ProxyBuilder.ignoreUnknownHeaders(Boolean.parseBoolean(
|
||||
ignoreUnknownHeaders));
|
||||
}
|
||||
if (corsAllowAll != null) {
|
||||
s3ProxyBuilder.corsAllowAll(Boolean.parseBoolean(
|
||||
corsAllowAll));
|
||||
}
|
||||
s3Proxy = s3ProxyBuilder.build();
|
||||
} catch (IllegalArgumentException | IllegalStateException e) {
|
||||
System.err.println(e.getMessage());
|
||||
|
|
|
@ -104,7 +104,7 @@ public final class S3Proxy {
|
|||
handler = new S3ProxyHandler(builder.blobStore, builder.identity,
|
||||
builder.credential, Optional.fromNullable(builder.virtualHost),
|
||||
builder.v4MaxNonChunkedRequestSize,
|
||||
builder.ignoreUnknownHeaders);
|
||||
builder.ignoreUnknownHeaders, builder.corsAllowAll);
|
||||
server.setHandler(handler);
|
||||
}
|
||||
|
||||
|
@ -119,6 +119,7 @@ public final class S3Proxy {
|
|||
private String virtualHost;
|
||||
private long v4MaxNonChunkedRequestSize = 32 * 1024 * 1024;
|
||||
private boolean ignoreUnknownHeaders;
|
||||
private boolean corsAllowAll;
|
||||
|
||||
Builder() {
|
||||
}
|
||||
|
@ -174,6 +175,11 @@ public final class S3Proxy {
|
|||
this.ignoreUnknownHeaders = ignoreUnknownHeaders;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder corsAllowAll(boolean corsAllowAll) {
|
||||
this.corsAllowAll = corsAllowAll;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
|
|
|
@ -25,6 +25,9 @@ public final class S3ProxyConstants {
|
|||
"s3proxy.authorization";
|
||||
public static final String PROPERTY_IDENTITY =
|
||||
"s3proxy.identity";
|
||||
/** When true, include "Access-Control-Allow-Origin: *" in all responses. */
|
||||
public static final String PROPERTY_CORS_ALLOW_ALL =
|
||||
"s3proxy.cors-allow-all";
|
||||
public static final String PROPERTY_CREDENTIAL =
|
||||
"s3proxy.credential";
|
||||
public static final String PROPERTY_IGNORE_UNKNOWN_HEADERS =
|
||||
|
|
|
@ -197,6 +197,7 @@ final class S3ProxyHandler extends AbstractHandler {
|
|||
private final Optional<String> virtualHost;
|
||||
private final long v4MaxNonChunkedRequestSize;
|
||||
private final boolean ignoreUnknownHeaders;
|
||||
private final boolean corsAllowAll;
|
||||
private final XMLOutputFactory xmlOutputFactory =
|
||||
XMLOutputFactory.newInstance();
|
||||
private BlobStoreLocator blobStoreLocator;
|
||||
|
@ -216,7 +217,8 @@ final class S3ProxyHandler extends AbstractHandler {
|
|||
|
||||
S3ProxyHandler(final BlobStore blobStore, final String identity,
|
||||
final String credential, Optional<String> virtualHost,
|
||||
long v4MaxNonChunkedRequestSize, boolean ignoreUnknownHeaders) {
|
||||
long v4MaxNonChunkedRequestSize, boolean ignoreUnknownHeaders,
|
||||
boolean corsAllowAll) {
|
||||
if (identity != null) {
|
||||
anonymousIdentity = false;
|
||||
blobStoreLocator = new BlobStoreLocator() {
|
||||
|
@ -244,6 +246,7 @@ final class S3ProxyHandler extends AbstractHandler {
|
|||
this.virtualHost = requireNonNull(virtualHost);
|
||||
this.v4MaxNonChunkedRequestSize = v4MaxNonChunkedRequestSize;
|
||||
this.ignoreUnknownHeaders = ignoreUnknownHeaders;
|
||||
this.corsAllowAll = corsAllowAll;
|
||||
this.defaultBlobStore = blobStore;
|
||||
xmlOutputFactory.setProperty("javax.xml.stream.isRepairingNamespaces",
|
||||
Boolean.FALSE);
|
||||
|
@ -1448,6 +1451,10 @@ final class S3ProxyHandler extends AbstractHandler {
|
|||
|
||||
response.setStatus(status);
|
||||
|
||||
if (corsAllowAll) {
|
||||
response.addHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");
|
||||
}
|
||||
|
||||
addMetadataToResponse(request, response, blob.getMetadata());
|
||||
// TODO: handles only a single range due to jclouds limitations
|
||||
Collection<String> contentRanges =
|
||||
|
|
Ładowanie…
Reference in New Issue