kopia lustrzana https://github.com/gaul/s3proxy
Validate methods against supported ones
rodzic
19c4b0a18d
commit
a82eb88f12
|
@ -26,6 +26,7 @@ import java.util.regex.Pattern;
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
|
@ -33,6 +34,9 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
final class CrossOriginResourceSharing {
|
final class CrossOriginResourceSharing {
|
||||||
|
public static final Collection<String> SUPPORTED_METHODS =
|
||||||
|
ImmutableList.of("GET", "PUT", "POST", "HEAD");
|
||||||
|
|
||||||
private static final String HEADER_VALUE_SEPARATOR = ", ";
|
private static final String HEADER_VALUE_SEPARATOR = ", ";
|
||||||
private static final String ALLOW_ANY_HEADER = "*";
|
private static final String ALLOW_ANY_HEADER = "*";
|
||||||
|
|
||||||
|
@ -47,7 +51,7 @@ final class CrossOriginResourceSharing {
|
||||||
|
|
||||||
protected CrossOriginResourceSharing() {
|
protected CrossOriginResourceSharing() {
|
||||||
// CORS Allow all
|
// CORS Allow all
|
||||||
this(Lists.newArrayList(".*"), Lists.newArrayList("GET", "PUT", "POST"),
|
this(Lists.newArrayList(".*"), SUPPORTED_METHODS,
|
||||||
Lists.newArrayList(ALLOW_ANY_HEADER));
|
Lists.newArrayList(ALLOW_ANY_HEADER));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,9 +22,11 @@ import static com.google.common.base.Preconditions.checkArgument;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import com.google.common.base.Joiner;
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
@ -256,6 +258,18 @@ public final class S3Proxy {
|
||||||
Splitter splitter = Splitter.on(" ").trimResults()
|
Splitter splitter = Splitter.on(" ").trimResults()
|
||||||
.omitEmptyStrings();
|
.omitEmptyStrings();
|
||||||
|
|
||||||
|
//Validate configured methods
|
||||||
|
Collection<String> allowedMethods = Lists.newArrayList(
|
||||||
|
splitter.split(corsAllowMethods));
|
||||||
|
allowedMethods.removeAll(
|
||||||
|
CrossOriginResourceSharing.SUPPORTED_METHODS);
|
||||||
|
if (!allowedMethods.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
S3ProxyConstants.PROPERTY_CORS_ALLOW_METHODS +
|
||||||
|
" contains not supported values: " + Joiner.on(" ")
|
||||||
|
.join(allowedMethods));
|
||||||
|
}
|
||||||
|
|
||||||
builder.corsRules(new CrossOriginResourceSharing(
|
builder.corsRules(new CrossOriginResourceSharing(
|
||||||
Lists.newArrayList(splitter.split(corsAllowOrigins)),
|
Lists.newArrayList(splitter.split(corsAllowOrigins)),
|
||||||
Lists.newArrayList(splitter.split(corsAllowMethods)),
|
Lists.newArrayList(splitter.split(corsAllowMethods)),
|
||||||
|
|
Ładowanie…
Reference in New Issue