All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.aws.sdk.kotlin.services.wafv2.model.IpSetForwardedIpConfig.kt Maven / Gradle / Ivy

There is a newer version: 1.3.76
Show newest version
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!

package aws.sdk.kotlin.services.wafv2.model

import aws.smithy.kotlin.runtime.SdkDsl

/**
 * 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.
 */
public class IpSetForwardedIpConfig private constructor(builder: Builder) {
    /**
     * 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.
     */
    public val fallbackBehavior: aws.sdk.kotlin.services.wafv2.model.FallbackBehavior = requireNotNull(builder.fallbackBehavior) { "A non-null value must be provided for fallbackBehavior" }
    /**
     * 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.
     */
    public val headerName: kotlin.String = requireNotNull(builder.headerName) { "A non-null value must be provided for headerName" }
    /**
     * 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.
     */
    public val position: aws.sdk.kotlin.services.wafv2.model.ForwardedIpPosition = requireNotNull(builder.position) { "A non-null value must be provided for position" }

    public companion object {
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.wafv2.model.IpSetForwardedIpConfig = Builder().apply(block).build()
    }

    override fun toString(): kotlin.String = buildString {
        append("IpSetForwardedIpConfig(")
        append("fallbackBehavior=$fallbackBehavior,")
        append("headerName=$headerName,")
        append("position=$position")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = fallbackBehavior.hashCode()
        result = 31 * result + (headerName.hashCode())
        result = 31 * result + (position.hashCode())
        return result
    }

    override fun equals(other: kotlin.Any?): kotlin.Boolean {
        if (this === other) return true
        if (other == null || this::class != other::class) return false

        other as IpSetForwardedIpConfig

        if (fallbackBehavior != other.fallbackBehavior) return false
        if (headerName != other.headerName) return false
        if (position != other.position) return false

        return true
    }

    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.wafv2.model.IpSetForwardedIpConfig = Builder(this).apply(block).build()

    @SdkDsl
    public class Builder {
        /**
         * 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.
         */
        public var fallbackBehavior: aws.sdk.kotlin.services.wafv2.model.FallbackBehavior? = null
        /**
         * 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.
         */
        public var headerName: kotlin.String? = null
        /**
         * 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.
         */
        public var position: aws.sdk.kotlin.services.wafv2.model.ForwardedIpPosition? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.wafv2.model.IpSetForwardedIpConfig) : this() {
            this.fallbackBehavior = x.fallbackBehavior
            this.headerName = x.headerName
            this.position = x.position
        }

        @PublishedApi
        internal fun build(): aws.sdk.kotlin.services.wafv2.model.IpSetForwardedIpConfig = IpSetForwardedIpConfig(this)

        internal fun correctErrors(): Builder {
            if (fallbackBehavior == null) fallbackBehavior = FallbackBehavior.SdkUnknown("no value provided")
            if (headerName == null) headerName = ""
            if (position == null) position = ForwardedIpPosition.SdkUnknown("no value provided")
            return this
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy