/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace WAFV2 { namespace Model { /** *

The configuration for inspecting IP addresses in an HTTP header that you * specify, instead of using the IP address that's reported by the web request * origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify * any header name.

If the specified header isn't present in the * request, WAF doesn't apply the rule to the web request at all.

*

This configuration is used only for IPSetReferenceStatement. For * GeoMatchStatement and RateBasedStatement, use * ForwardedIPConfig instead.

See Also:

AWS * API Reference

*/ class IPSetForwardedIPConfig { public: AWS_WAFV2_API IPSetForwardedIPConfig(); AWS_WAFV2_API IPSetForwardedIPConfig(Aws::Utils::Json::JsonView jsonValue); AWS_WAFV2_API IPSetForwardedIPConfig& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_WAFV2_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The name of the HTTP header to use for the IP address. For example, to use * the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.

*

If the specified header isn't present in the request, WAF doesn't * apply the rule to the web request at all.

*/ inline const Aws::String& GetHeaderName() const{ return m_headerName; } /** *

The name of the HTTP header to use for the IP address. For example, to use * the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.

*

If the specified header isn't present in the request, WAF doesn't * apply the rule to the web request at all.

*/ inline bool HeaderNameHasBeenSet() const { return m_headerNameHasBeenSet; } /** *

The name of the HTTP header to use for the IP address. For example, to use * the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.

*

If the specified header isn't present in the request, WAF doesn't * apply the rule to the web request at all.

*/ inline void SetHeaderName(const Aws::String& value) { m_headerNameHasBeenSet = true; m_headerName = value; } /** *

The name of the HTTP header to use for the IP address. For example, to use * the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.

*

If the specified header isn't present in the request, WAF doesn't * apply the rule to the web request at all.

*/ inline void SetHeaderName(Aws::String&& value) { m_headerNameHasBeenSet = true; m_headerName = std::move(value); } /** *

The name of the HTTP header to use for the IP address. For example, to use * the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.

*

If the specified header isn't present in the request, WAF doesn't * apply the rule to the web request at all.

*/ inline void SetHeaderName(const char* value) { m_headerNameHasBeenSet = true; m_headerName.assign(value); } /** *

The name of the HTTP header to use for the IP address. For example, to use * the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.

*

If the specified header isn't present in the request, WAF doesn't * apply the rule to the web request at all.

*/ inline IPSetForwardedIPConfig& WithHeaderName(const Aws::String& value) { SetHeaderName(value); return *this;} /** *

The name of the HTTP header to use for the IP address. For example, to use * the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.

*

If the specified header isn't present in the request, WAF doesn't * apply the rule to the web request at all.

*/ inline IPSetForwardedIPConfig& WithHeaderName(Aws::String&& value) { SetHeaderName(std::move(value)); return *this;} /** *

The name of the HTTP header to use for the IP address. For example, to use * the X-Forwarded-For (XFF) header, set this to X-Forwarded-For.

*

If the specified header isn't present in the request, WAF doesn't * apply the rule to the web request at all.

*/ inline IPSetForwardedIPConfig& WithHeaderName(const char* value) { SetHeaderName(value); return *this;} /** *

The match status to assign to the web request if the request doesn't have a * valid IP address in the specified position.

If the specified * header isn't present in the request, WAF doesn't apply the rule to the web * request at all.

You can specify the following fallback * behaviors:

  • MATCH - Treat the web request as * matching the rule statement. WAF applies the rule action to the request.

    *
  • NO_MATCH - Treat the web request as not matching the * rule statement.

*/ inline const FallbackBehavior& GetFallbackBehavior() const{ return m_fallbackBehavior; } /** *

The match status to assign to the web request if the request doesn't have a * valid IP address in the specified position.

If the specified * header isn't present in the request, WAF doesn't apply the rule to the web * request at all.

You can specify the following fallback * behaviors:

  • MATCH - Treat the web request as * matching the rule statement. WAF applies the rule action to the request.

    *
  • NO_MATCH - Treat the web request as not matching the * rule statement.

*/ inline bool FallbackBehaviorHasBeenSet() const { return m_fallbackBehaviorHasBeenSet; } /** *

The match status to assign to the web request if the request doesn't have a * valid IP address in the specified position.

If the specified * header isn't present in the request, WAF doesn't apply the rule to the web * request at all.

You can specify the following fallback * behaviors:

  • MATCH - Treat the web request as * matching the rule statement. WAF applies the rule action to the request.

    *
  • NO_MATCH - Treat the web request as not matching the * rule statement.

*/ inline void SetFallbackBehavior(const FallbackBehavior& value) { m_fallbackBehaviorHasBeenSet = true; m_fallbackBehavior = value; } /** *

The match status to assign to the web request if the request doesn't have a * valid IP address in the specified position.

If the specified * header isn't present in the request, WAF doesn't apply the rule to the web * request at all.

You can specify the following fallback * behaviors:

  • MATCH - Treat the web request as * matching the rule statement. WAF applies the rule action to the request.

    *
  • NO_MATCH - Treat the web request as not matching the * rule statement.

*/ inline void SetFallbackBehavior(FallbackBehavior&& value) { m_fallbackBehaviorHasBeenSet = true; m_fallbackBehavior = std::move(value); } /** *

The match status to assign to the web request if the request doesn't have a * valid IP address in the specified position.

If the specified * header isn't present in the request, WAF doesn't apply the rule to the web * request at all.

You can specify the following fallback * behaviors:

  • MATCH - Treat the web request as * matching the rule statement. WAF applies the rule action to the request.

    *
  • NO_MATCH - Treat the web request as not matching the * rule statement.

*/ inline IPSetForwardedIPConfig& WithFallbackBehavior(const FallbackBehavior& value) { SetFallbackBehavior(value); return *this;} /** *

The match status to assign to the web request if the request doesn't have a * valid IP address in the specified position.

If the specified * header isn't present in the request, WAF doesn't apply the rule to the web * request at all.

You can specify the following fallback * behaviors:

  • MATCH - Treat the web request as * matching the rule statement. WAF applies the rule action to the request.

    *
  • NO_MATCH - Treat the web request as not matching the * rule statement.

*/ inline IPSetForwardedIPConfig& WithFallbackBehavior(FallbackBehavior&& value) { SetFallbackBehavior(std::move(value)); return *this;} /** *

The position in the header to search for the IP address. The header can * contain IP addresses of the original client and also of proxies. For example, * the header value could be 10.1.1.1, 127.0.0.0, 10.10.10.10 where * the first IP address identifies the original client and the rest identify * proxies that the request went through.

The options for this setting are * the following:

  • FIRST - Inspect the first IP address in the * list of IP addresses in the header. This is usually the client's original * IP.

  • LAST - Inspect the last IP address in the list of IP * addresses in the header.

  • ANY - Inspect all IP addresses in the * header for a match. If the header contains more than 10 IP addresses, WAF * inspects the last 10.

*/ inline const ForwardedIPPosition& GetPosition() const{ return m_position; } /** *

The position in the header to search for the IP address. The header can * contain IP addresses of the original client and also of proxies. For example, * the header value could be 10.1.1.1, 127.0.0.0, 10.10.10.10 where * the first IP address identifies the original client and the rest identify * proxies that the request went through.

The options for this setting are * the following:

  • FIRST - Inspect the first IP address in the * list of IP addresses in the header. This is usually the client's original * IP.

  • LAST - Inspect the last IP address in the list of IP * addresses in the header.

  • ANY - Inspect all IP addresses in the * header for a match. If the header contains more than 10 IP addresses, WAF * inspects the last 10.

*/ inline bool PositionHasBeenSet() const { return m_positionHasBeenSet; } /** *

The position in the header to search for the IP address. The header can * contain IP addresses of the original client and also of proxies. For example, * the header value could be 10.1.1.1, 127.0.0.0, 10.10.10.10 where * the first IP address identifies the original client and the rest identify * proxies that the request went through.

The options for this setting are * the following:

  • FIRST - Inspect the first IP address in the * list of IP addresses in the header. This is usually the client's original * IP.

  • LAST - Inspect the last IP address in the list of IP * addresses in the header.

  • ANY - Inspect all IP addresses in the * header for a match. If the header contains more than 10 IP addresses, WAF * inspects the last 10.

*/ inline void SetPosition(const ForwardedIPPosition& value) { m_positionHasBeenSet = true; m_position = value; } /** *

The position in the header to search for the IP address. The header can * contain IP addresses of the original client and also of proxies. For example, * the header value could be 10.1.1.1, 127.0.0.0, 10.10.10.10 where * the first IP address identifies the original client and the rest identify * proxies that the request went through.

The options for this setting are * the following:

  • FIRST - Inspect the first IP address in the * list of IP addresses in the header. This is usually the client's original * IP.

  • LAST - Inspect the last IP address in the list of IP * addresses in the header.

  • ANY - Inspect all IP addresses in the * header for a match. If the header contains more than 10 IP addresses, WAF * inspects the last 10.

*/ inline void SetPosition(ForwardedIPPosition&& value) { m_positionHasBeenSet = true; m_position = std::move(value); } /** *

The position in the header to search for the IP address. The header can * contain IP addresses of the original client and also of proxies. For example, * the header value could be 10.1.1.1, 127.0.0.0, 10.10.10.10 where * the first IP address identifies the original client and the rest identify * proxies that the request went through.

The options for this setting are * the following:

  • FIRST - Inspect the first IP address in the * list of IP addresses in the header. This is usually the client's original * IP.

  • LAST - Inspect the last IP address in the list of IP * addresses in the header.

  • ANY - Inspect all IP addresses in the * header for a match. If the header contains more than 10 IP addresses, WAF * inspects the last 10.

*/ inline IPSetForwardedIPConfig& WithPosition(const ForwardedIPPosition& value) { SetPosition(value); return *this;} /** *

The position in the header to search for the IP address. The header can * contain IP addresses of the original client and also of proxies. For example, * the header value could be 10.1.1.1, 127.0.0.0, 10.10.10.10 where * the first IP address identifies the original client and the rest identify * proxies that the request went through.

The options for this setting are * the following:

  • FIRST - Inspect the first IP address in the * list of IP addresses in the header. This is usually the client's original * IP.

  • LAST - Inspect the last IP address in the list of IP * addresses in the header.

  • ANY - Inspect all IP addresses in the * header for a match. If the header contains more than 10 IP addresses, WAF * inspects the last 10.

*/ inline IPSetForwardedIPConfig& WithPosition(ForwardedIPPosition&& value) { SetPosition(std::move(value)); return *this;} private: Aws::String m_headerName; bool m_headerNameHasBeenSet = false; FallbackBehavior m_fallbackBehavior; bool m_fallbackBehaviorHasBeenSet = false; ForwardedIPPosition m_position; bool m_positionHasBeenSet = false; }; } // namespace Model } // namespace WAFV2 } // namespace Aws