/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #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 for GeoMatchStatement and * RateBasedStatement. For IPSetReferenceStatement, use * IPSetForwardedIPConfig instead.

WAF only evaluates the first IP * address found in the specified HTTP header.

See Also:

AWS * API Reference

*/ class ForwardedIPConfig { public: AWS_WAFV2_API ForwardedIPConfig(); AWS_WAFV2_API ForwardedIPConfig(Aws::Utils::Json::JsonView jsonValue); AWS_WAFV2_API ForwardedIPConfig& 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 ForwardedIPConfig& 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 ForwardedIPConfig& 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 ForwardedIPConfig& 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 ForwardedIPConfig& 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 ForwardedIPConfig& WithFallbackBehavior(FallbackBehavior&& value) { SetFallbackBehavior(std::move(value)); return *this;} private: Aws::String m_headerName; bool m_headerNameHasBeenSet = false; FallbackBehavior m_fallbackBehavior; bool m_fallbackBehaviorHasBeenSet = false; }; } // namespace Model } // namespace WAFV2 } // namespace Aws