Removes deprecated properties in XForwardedRequestHeadersFilter.
Fixes gh-3237
This commit is contained in:
@@ -22,9 +22,6 @@ import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
|
||||
import org.springframework.boot.context.properties.PropertyMapper;
|
||||
import org.springframework.cloud.gateway.server.mvc.common.MvcUtils;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
@@ -32,9 +29,6 @@ import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.servlet.function.ServerRequest;
|
||||
|
||||
import static org.springframework.cloud.gateway.server.mvc.filter.XForwardedRequestHeadersFilterProperties.PREFIX;
|
||||
|
||||
@ConfigurationProperties("spring.cloud.gateway.x-forwarded")
|
||||
public class XForwardedRequestHeadersFilter implements HttpHeadersFilter.RequestHttpHeadersFilter, Ordered {
|
||||
|
||||
/** Default http port. */
|
||||
@@ -64,310 +58,15 @@ public class XForwardedRequestHeadersFilter implements HttpHeadersFilter.Request
|
||||
/** X-Forwarded-Prefix Header. */
|
||||
public static final String X_FORWARDED_PREFIX_HEADER = "X-Forwarded-Prefix";
|
||||
|
||||
/** The order of the XForwardedHeadersFilter. */
|
||||
private int order = 0;
|
||||
private final XForwardedRequestHeadersFilterProperties properties;
|
||||
|
||||
/** If the XForwardedHeadersFilter is enabled. */
|
||||
private boolean enabled = true;
|
||||
|
||||
/** If X-Forwarded-For is enabled. */
|
||||
private boolean forEnabled = true;
|
||||
|
||||
/** If X-Forwarded-Host is enabled. */
|
||||
private boolean hostEnabled = true;
|
||||
|
||||
/** If X-Forwarded-Port is enabled. */
|
||||
private boolean portEnabled = true;
|
||||
|
||||
/** If X-Forwarded-Proto is enabled. */
|
||||
private boolean protoEnabled = true;
|
||||
|
||||
/** If X-Forwarded-Prefix is enabled. */
|
||||
private boolean prefixEnabled = true;
|
||||
|
||||
/** If appending X-Forwarded-For as a list is enabled. */
|
||||
private boolean forAppend = true;
|
||||
|
||||
/** If appending X-Forwarded-Host as a list is enabled. */
|
||||
private boolean hostAppend = true;
|
||||
|
||||
/** If appending X-Forwarded-Port as a list is enabled. */
|
||||
private boolean portAppend = true;
|
||||
|
||||
/** If appending X-Forwarded-Proto as a list is enabled. */
|
||||
private boolean protoAppend = true;
|
||||
|
||||
/** If appending X-Forwarded-Prefix as a list is enabled. */
|
||||
private boolean prefixAppend = true;
|
||||
|
||||
@Deprecated
|
||||
public XForwardedRequestHeadersFilter() {
|
||||
this(new XForwardedRequestHeadersFilterProperties());
|
||||
public XForwardedRequestHeadersFilter(XForwardedRequestHeadersFilterProperties properties) {
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
public XForwardedRequestHeadersFilter(XForwardedRequestHeadersFilterProperties props) {
|
||||
// TODO: remove individual properties in 4.2.0
|
||||
// this.properties = properties;
|
||||
PropertyMapper map = PropertyMapper.get();
|
||||
map.from(props::getOrder).to(o -> this.order = o);
|
||||
map.from(props::isEnabled).to(b -> this.enabled = b);
|
||||
map.from(props::isForEnabled).to(b -> this.forEnabled = b);
|
||||
map.from(props::isHostEnabled).to(b -> this.hostEnabled = b);
|
||||
map.from(props::isPortEnabled).to(b -> this.portEnabled = b);
|
||||
map.from(props::isProtoEnabled).to(b -> this.protoEnabled = b);
|
||||
map.from(props::isPrefixEnabled).to(b -> this.prefixEnabled = b);
|
||||
map.from(props::isForAppend).to(b -> this.forAppend = b);
|
||||
map.from(props::isHostAppend).to(b -> this.hostAppend = b);
|
||||
map.from(props::isPortAppend).to(b -> this.portAppend = b);
|
||||
map.from(props::isProtoAppend).to(b -> this.protoAppend = b);
|
||||
map.from(props::isPrefixAppend).to(b -> this.prefixAppend = b);
|
||||
}
|
||||
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".order")
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return this.order;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setOrder(int)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setOrder(int order) {
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isEnabled()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".enabled")
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setEnabled(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isForEnabled()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".for-enabled")
|
||||
public boolean isForEnabled() {
|
||||
return forEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setForEnabled(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setForEnabled(boolean forEnabled) {
|
||||
this.forEnabled = forEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isHostEnabled()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".host-enabled")
|
||||
public boolean isHostEnabled() {
|
||||
return hostEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setHostEnabled(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setHostEnabled(boolean hostEnabled) {
|
||||
this.hostEnabled = hostEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isPortEnabled()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".port-enabled")
|
||||
public boolean isPortEnabled() {
|
||||
return portEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setPortEnabled(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setPortEnabled(boolean portEnabled) {
|
||||
this.portEnabled = portEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isProtoEnabled()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".proto-enabled")
|
||||
public boolean isProtoEnabled() {
|
||||
return protoEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setProtoEnabled(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setProtoEnabled(boolean protoEnabled) {
|
||||
this.protoEnabled = protoEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isPrefixEnabled()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".prefix-enabled")
|
||||
public boolean isPrefixEnabled() {
|
||||
return prefixEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setPrefixEnabled(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setPrefixEnabled(boolean prefixEnabled) {
|
||||
this.prefixEnabled = prefixEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isForAppend()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".for-append")
|
||||
public boolean isForAppend() {
|
||||
return forAppend;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setForAppend(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setForAppend(boolean forAppend) {
|
||||
this.forAppend = forAppend;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isHostAppend()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".host-append")
|
||||
public boolean isHostAppend() {
|
||||
return hostAppend;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setHostAppend(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setHostAppend(boolean hostAppend) {
|
||||
this.hostAppend = hostAppend;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isPortAppend()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".port-append")
|
||||
public boolean isPortAppend() {
|
||||
return portAppend;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setPortAppend(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setPortAppend(boolean portAppend) {
|
||||
this.portAppend = portAppend;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isProtoAppend()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".proto-append")
|
||||
public boolean isProtoAppend() {
|
||||
return protoAppend;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setProtoAppend(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setProtoAppend(boolean protoAppend) {
|
||||
this.protoAppend = protoAppend;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#isPrefixAppend()} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
@DeprecatedConfigurationProperty(replacement = PREFIX + ".prefix-append")
|
||||
public boolean isPrefixAppend() {
|
||||
return prefixAppend;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated since 4.1.2 for removal in 4.2.0 in favor of
|
||||
* {@link XForwardedRequestHeadersFilterProperties#setPrefixAppend(boolean)} )}
|
||||
*/
|
||||
@SuppressWarnings("removal")
|
||||
@Deprecated(since = "4.1.2", forRemoval = true)
|
||||
public void setPrefixAppend(boolean prefixAppend) {
|
||||
this.prefixAppend = prefixAppend;
|
||||
return properties.getOrder();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -380,17 +79,17 @@ public class XForwardedRequestHeadersFilter implements HttpHeadersFilter.Request
|
||||
}
|
||||
|
||||
InetSocketAddress remoteAddress = request.remoteAddress().orElse(null);
|
||||
if (isForEnabled() && remoteAddress != null && remoteAddress.getAddress() != null) {
|
||||
if (properties.isForEnabled() && remoteAddress != null && remoteAddress.getAddress() != null) {
|
||||
String remoteAddr = remoteAddress.getAddress().getHostAddress();
|
||||
write(updated, X_FORWARDED_FOR_HEADER, remoteAddr, isForAppend());
|
||||
write(updated, X_FORWARDED_FOR_HEADER, remoteAddr, properties.isForAppend());
|
||||
}
|
||||
|
||||
String proto = request.uri().getScheme();
|
||||
if (isProtoEnabled()) {
|
||||
write(updated, X_FORWARDED_PROTO_HEADER, proto, isProtoAppend());
|
||||
if (properties.isProtoEnabled()) {
|
||||
write(updated, X_FORWARDED_PROTO_HEADER, proto, properties.isProtoAppend());
|
||||
}
|
||||
|
||||
if (isPrefixEnabled()) {
|
||||
if (properties.isPrefixEnabled()) {
|
||||
// If the path of the url that the gw is routing to is a subset
|
||||
// (and ending part) of the url that it is routing from then the difference
|
||||
// is the prefix e.g. if request original.com/prefix/get/ is routed
|
||||
@@ -419,17 +118,17 @@ public class XForwardedRequestHeadersFilter implements HttpHeadersFilter.Request
|
||||
}
|
||||
}
|
||||
|
||||
if (isPortEnabled()) {
|
||||
if (properties.isPortEnabled()) {
|
||||
String port = String.valueOf(request.uri().getPort());
|
||||
if (request.uri().getPort() < 0) {
|
||||
port = String.valueOf(getDefaultPort(proto));
|
||||
}
|
||||
write(updated, X_FORWARDED_PORT_HEADER, port, isPortAppend());
|
||||
write(updated, X_FORWARDED_PORT_HEADER, port, properties.isPortAppend());
|
||||
}
|
||||
|
||||
if (isHostEnabled()) {
|
||||
if (properties.isHostEnabled()) {
|
||||
String host = toHostHeader(request);
|
||||
write(updated, X_FORWARDED_HOST_HEADER, host, isHostAppend());
|
||||
write(updated, X_FORWARDED_HOST_HEADER, host, properties.isHostAppend());
|
||||
}
|
||||
|
||||
return updated;
|
||||
@@ -440,7 +139,7 @@ public class XForwardedRequestHeadersFilter implements HttpHeadersFilter.Request
|
||||
if (requestUriPath != null && (originalUriPath.endsWith(requestUriPath))) {
|
||||
prefix = substringBeforeLast(originalUriPath, requestUriPath);
|
||||
if (prefix != null && prefix.length() > 0 && prefix.length() <= originalUri.getPath().length()) {
|
||||
write(updated, X_FORWARDED_PREFIX_HEADER, prefix, isPrefixAppend());
|
||||
write(updated, X_FORWARDED_PREFIX_HEADER, prefix, properties.isPrefixAppend());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user