# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins
import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'ShareConfigAllowIpAccessRuleArgs',
    'ShareConfigAllowIpAccessRuleArgsDict',
    'ShareConfigAllowRefererAccessRuleArgs',
    'ShareConfigAllowRefererAccessRuleArgsDict',
    'ShareConfigAllowRefererAccessRuleCommonTypeArgs',
    'ShareConfigAllowRefererAccessRuleCommonTypeArgsDict',
    'ShareConfigCommonMatchsArgs',
    'ShareConfigCommonMatchsArgsDict',
    'ShareConfigCommonMatchsCommonTypeArgs',
    'ShareConfigCommonMatchsCommonTypeArgsDict',
    'ShareConfigDenyIpAccessRuleArgs',
    'ShareConfigDenyIpAccessRuleArgsDict',
    'ShareConfigDenyRefererAccessRuleArgs',
    'ShareConfigDenyRefererAccessRuleArgsDict',
    'ShareConfigDenyRefererAccessRuleCommonTypeArgs',
    'ShareConfigDenyRefererAccessRuleCommonTypeArgsDict',
]

MYPY = False

if not MYPY:
    class ShareConfigAllowIpAccessRuleArgsDict(TypedDict):
        rules: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        表示一个条目列表。列表中的每个条目是一个 IP 地址或 CIDR 网段。IP 地址和网段可以是 IPv4 和 IPv6 格式。列表的额度如下：对于 AddSharedConfig，列表中条目的数量不能超过 30,000 个。
        """
elif False:
    ShareConfigAllowIpAccessRuleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ShareConfigAllowIpAccessRuleArgs:
    def __init__(__self__, *,
                 rules: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] rules: 表示一个条目列表。列表中的每个条目是一个 IP 地址或 CIDR 网段。IP 地址和网段可以是 IPv4 和 IPv6 格式。列表的额度如下：对于 AddSharedConfig，列表中条目的数量不能超过 30,000 个。
        """
        if rules is not None:
            pulumi.set(__self__, "rules", rules)

    @property
    @pulumi.getter
    def rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        表示一个条目列表。列表中的每个条目是一个 IP 地址或 CIDR 网段。IP 地址和网段可以是 IPv4 和 IPv6 格式。列表的额度如下：对于 AddSharedConfig，列表中条目的数量不能超过 30,000 个。
        """
        return pulumi.get(self, "rules")

    @rules.setter
    def rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
        pulumi.set(self, "rules", value)


if not MYPY:
    class ShareConfigAllowRefererAccessRuleArgsDict(TypedDict):
        allow_empty: NotRequired[pulumi.Input[builtins.bool]]
        """
        表示是否不允许 Referer 头部为空或者不包含 Referer 头部的请求。该参数有以下取值：true：表示不允许。如果请求的 Referer 头部为空或者不包含 Referer 头部，内容分发网络拒绝请求。false：表示允许。该参数的默认值是 false。
        """
        common_type: NotRequired[pulumi.Input['ShareConfigAllowRefererAccessRuleCommonTypeArgsDict']]
        """
        表示该通用列表的内容。
        """
elif False:
    ShareConfigAllowRefererAccessRuleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ShareConfigAllowRefererAccessRuleArgs:
    def __init__(__self__, *,
                 allow_empty: Optional[pulumi.Input[builtins.bool]] = None,
                 common_type: Optional[pulumi.Input['ShareConfigAllowRefererAccessRuleCommonTypeArgs']] = None):
        """
        :param pulumi.Input[builtins.bool] allow_empty: 表示是否不允许 Referer 头部为空或者不包含 Referer 头部的请求。该参数有以下取值：true：表示不允许。如果请求的 Referer 头部为空或者不包含 Referer 头部，内容分发网络拒绝请求。false：表示允许。该参数的默认值是 false。
        :param pulumi.Input['ShareConfigAllowRefererAccessRuleCommonTypeArgs'] common_type: 表示该通用列表的内容。
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if common_type is not None:
            pulumi.set(__self__, "common_type", common_type)

    @property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        表示是否不允许 Referer 头部为空或者不包含 Referer 头部的请求。该参数有以下取值：true：表示不允许。如果请求的 Referer 头部为空或者不包含 Referer 头部，内容分发网络拒绝请求。false：表示允许。该参数的默认值是 false。
        """
        return pulumi.get(self, "allow_empty")

    @allow_empty.setter
    def allow_empty(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "allow_empty", value)

    @property
    @pulumi.getter(name="commonType")
    def common_type(self) -> Optional[pulumi.Input['ShareConfigAllowRefererAccessRuleCommonTypeArgs']]:
        """
        表示该通用列表的内容。
        """
        return pulumi.get(self, "common_type")

    @common_type.setter
    def common_type(self, value: Optional[pulumi.Input['ShareConfigAllowRefererAccessRuleCommonTypeArgs']]):
        pulumi.set(self, "common_type", value)


if not MYPY:
    class ShareConfigAllowRefererAccessRuleCommonTypeArgsDict(TypedDict):
        ignore_case: NotRequired[pulumi.Input[builtins.bool]]
        """
        表示 Rules 中的条目是否区分大小写。该参数有以下取值：true：表示不区分大小写。false：表示区分大小写。该参数的默认值是 true。
        """
        rules: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        表示一个条目列表，列表中的每个条目是一个字符串。列表的额度如下：列表最多可以包含 4,000 个条目。所有条目的总长度不能超过 200,000 个字符。CDN 在创建该全局配置时，会将列表中重复的条目删除。重复条目不占额度。
        """
elif False:
    ShareConfigAllowRefererAccessRuleCommonTypeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ShareConfigAllowRefererAccessRuleCommonTypeArgs:
    def __init__(__self__, *,
                 ignore_case: Optional[pulumi.Input[builtins.bool]] = None,
                 rules: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[builtins.bool] ignore_case: 表示 Rules 中的条目是否区分大小写。该参数有以下取值：true：表示不区分大小写。false：表示区分大小写。该参数的默认值是 true。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] rules: 表示一个条目列表，列表中的每个条目是一个字符串。列表的额度如下：列表最多可以包含 4,000 个条目。所有条目的总长度不能超过 200,000 个字符。CDN 在创建该全局配置时，会将列表中重复的条目删除。重复条目不占额度。
        """
        if ignore_case is not None:
            pulumi.set(__self__, "ignore_case", ignore_case)
        if rules is not None:
            pulumi.set(__self__, "rules", rules)

    @property
    @pulumi.getter(name="ignoreCase")
    def ignore_case(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        表示 Rules 中的条目是否区分大小写。该参数有以下取值：true：表示不区分大小写。false：表示区分大小写。该参数的默认值是 true。
        """
        return pulumi.get(self, "ignore_case")

    @ignore_case.setter
    def ignore_case(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "ignore_case", value)

    @property
    @pulumi.getter
    def rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        表示一个条目列表，列表中的每个条目是一个字符串。列表的额度如下：列表最多可以包含 4,000 个条目。所有条目的总长度不能超过 200,000 个字符。CDN 在创建该全局配置时，会将列表中重复的条目删除。重复条目不占额度。
        """
        return pulumi.get(self, "rules")

    @rules.setter
    def rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
        pulumi.set(self, "rules", value)


if not MYPY:
    class ShareConfigCommonMatchsArgsDict(TypedDict):
        common_type: NotRequired[pulumi.Input['ShareConfigCommonMatchsCommonTypeArgsDict']]
        """
        表示该通用列表的内容。
        """
elif False:
    ShareConfigCommonMatchsArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ShareConfigCommonMatchsArgs:
    def __init__(__self__, *,
                 common_type: Optional[pulumi.Input['ShareConfigCommonMatchsCommonTypeArgs']] = None):
        """
        :param pulumi.Input['ShareConfigCommonMatchsCommonTypeArgs'] common_type: 表示该通用列表的内容。
        """
        if common_type is not None:
            pulumi.set(__self__, "common_type", common_type)

    @property
    @pulumi.getter(name="commonType")
    def common_type(self) -> Optional[pulumi.Input['ShareConfigCommonMatchsCommonTypeArgs']]:
        """
        表示该通用列表的内容。
        """
        return pulumi.get(self, "common_type")

    @common_type.setter
    def common_type(self, value: Optional[pulumi.Input['ShareConfigCommonMatchsCommonTypeArgs']]):
        pulumi.set(self, "common_type", value)


if not MYPY:
    class ShareConfigCommonMatchsCommonTypeArgsDict(TypedDict):
        ignore_case: NotRequired[pulumi.Input[builtins.bool]]
        """
        表示 Rules 中的条目是否区分大小写。该参数有以下取值：true：表示不区分大小写。false：表示区分大小写。该参数的默认值是 true。
        """
        rules: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        表示一个条目列表，列表中的每个条目是一个字符串。列表的额度如下：列表最多可以包含 4,000 个条目。所有条目的总长度不能超过 200,000 个字符。CDN 在创建该全局配置时，会将列表中重复的条目删除。重复条目不占额度。
        """
elif False:
    ShareConfigCommonMatchsCommonTypeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ShareConfigCommonMatchsCommonTypeArgs:
    def __init__(__self__, *,
                 ignore_case: Optional[pulumi.Input[builtins.bool]] = None,
                 rules: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[builtins.bool] ignore_case: 表示 Rules 中的条目是否区分大小写。该参数有以下取值：true：表示不区分大小写。false：表示区分大小写。该参数的默认值是 true。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] rules: 表示一个条目列表，列表中的每个条目是一个字符串。列表的额度如下：列表最多可以包含 4,000 个条目。所有条目的总长度不能超过 200,000 个字符。CDN 在创建该全局配置时，会将列表中重复的条目删除。重复条目不占额度。
        """
        if ignore_case is not None:
            pulumi.set(__self__, "ignore_case", ignore_case)
        if rules is not None:
            pulumi.set(__self__, "rules", rules)

    @property
    @pulumi.getter(name="ignoreCase")
    def ignore_case(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        表示 Rules 中的条目是否区分大小写。该参数有以下取值：true：表示不区分大小写。false：表示区分大小写。该参数的默认值是 true。
        """
        return pulumi.get(self, "ignore_case")

    @ignore_case.setter
    def ignore_case(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "ignore_case", value)

    @property
    @pulumi.getter
    def rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        表示一个条目列表，列表中的每个条目是一个字符串。列表的额度如下：列表最多可以包含 4,000 个条目。所有条目的总长度不能超过 200,000 个字符。CDN 在创建该全局配置时，会将列表中重复的条目删除。重复条目不占额度。
        """
        return pulumi.get(self, "rules")

    @rules.setter
    def rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
        pulumi.set(self, "rules", value)


if not MYPY:
    class ShareConfigDenyIpAccessRuleArgsDict(TypedDict):
        rules: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        表示一个 IP 黑名单的配置，对应 ConfigType 是 deny*ip*access_rule。
        """
elif False:
    ShareConfigDenyIpAccessRuleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ShareConfigDenyIpAccessRuleArgs:
    def __init__(__self__, *,
                 rules: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] rules: 表示一个 IP 黑名单的配置，对应 ConfigType 是 deny*ip*access_rule。
        """
        if rules is not None:
            pulumi.set(__self__, "rules", rules)

    @property
    @pulumi.getter
    def rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        表示一个 IP 黑名单的配置，对应 ConfigType 是 deny*ip*access_rule。
        """
        return pulumi.get(self, "rules")

    @rules.setter
    def rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
        pulumi.set(self, "rules", value)


if not MYPY:
    class ShareConfigDenyRefererAccessRuleArgsDict(TypedDict):
        allow_empty: NotRequired[pulumi.Input[builtins.bool]]
        """
        表示是否允许 Referer 头部为空或者不包含 Referer 头部的请求。该参数有以下取值：true：表示允许。false：表示不允许。如果请求的 Referer 头部为空或者不包含 Referer 头部，内容分发网络拒绝请求。该参数的默认值是 true。
        """
        common_type: NotRequired[pulumi.Input['ShareConfigDenyRefererAccessRuleCommonTypeArgsDict']]
        """
        表示该通用列表的内容。
        """
elif False:
    ShareConfigDenyRefererAccessRuleArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ShareConfigDenyRefererAccessRuleArgs:
    def __init__(__self__, *,
                 allow_empty: Optional[pulumi.Input[builtins.bool]] = None,
                 common_type: Optional[pulumi.Input['ShareConfigDenyRefererAccessRuleCommonTypeArgs']] = None):
        """
        :param pulumi.Input[builtins.bool] allow_empty: 表示是否允许 Referer 头部为空或者不包含 Referer 头部的请求。该参数有以下取值：true：表示允许。false：表示不允许。如果请求的 Referer 头部为空或者不包含 Referer 头部，内容分发网络拒绝请求。该参数的默认值是 true。
        :param pulumi.Input['ShareConfigDenyRefererAccessRuleCommonTypeArgs'] common_type: 表示该通用列表的内容。
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if common_type is not None:
            pulumi.set(__self__, "common_type", common_type)

    @property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        表示是否允许 Referer 头部为空或者不包含 Referer 头部的请求。该参数有以下取值：true：表示允许。false：表示不允许。如果请求的 Referer 头部为空或者不包含 Referer 头部，内容分发网络拒绝请求。该参数的默认值是 true。
        """
        return pulumi.get(self, "allow_empty")

    @allow_empty.setter
    def allow_empty(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "allow_empty", value)

    @property
    @pulumi.getter(name="commonType")
    def common_type(self) -> Optional[pulumi.Input['ShareConfigDenyRefererAccessRuleCommonTypeArgs']]:
        """
        表示该通用列表的内容。
        """
        return pulumi.get(self, "common_type")

    @common_type.setter
    def common_type(self, value: Optional[pulumi.Input['ShareConfigDenyRefererAccessRuleCommonTypeArgs']]):
        pulumi.set(self, "common_type", value)


if not MYPY:
    class ShareConfigDenyRefererAccessRuleCommonTypeArgsDict(TypedDict):
        ignore_case: NotRequired[pulumi.Input[builtins.bool]]
        """
        表示 Rules 中的条目是否区分大小写。该参数有以下取值：true：表示不区分大小写。false：表示区分大小写。该参数的默认值是 true。
        """
        rules: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
        """
        表示一个条目列表，列表中的每个条目是一个字符串。列表的额度如下：列表最多可以包含 4,000 个条目。所有条目的总长度不能超过 200,000 个字符。CDN 在创建该全局配置时，会将列表中重复的条目删除。重复条目不占额度。
        """
elif False:
    ShareConfigDenyRefererAccessRuleCommonTypeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class ShareConfigDenyRefererAccessRuleCommonTypeArgs:
    def __init__(__self__, *,
                 ignore_case: Optional[pulumi.Input[builtins.bool]] = None,
                 rules: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        :param pulumi.Input[builtins.bool] ignore_case: 表示 Rules 中的条目是否区分大小写。该参数有以下取值：true：表示不区分大小写。false：表示区分大小写。该参数的默认值是 true。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] rules: 表示一个条目列表，列表中的每个条目是一个字符串。列表的额度如下：列表最多可以包含 4,000 个条目。所有条目的总长度不能超过 200,000 个字符。CDN 在创建该全局配置时，会将列表中重复的条目删除。重复条目不占额度。
        """
        if ignore_case is not None:
            pulumi.set(__self__, "ignore_case", ignore_case)
        if rules is not None:
            pulumi.set(__self__, "rules", rules)

    @property
    @pulumi.getter(name="ignoreCase")
    def ignore_case(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        表示 Rules 中的条目是否区分大小写。该参数有以下取值：true：表示不区分大小写。false：表示区分大小写。该参数的默认值是 true。
        """
        return pulumi.get(self, "ignore_case")

    @ignore_case.setter
    def ignore_case(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "ignore_case", value)

    @property
    @pulumi.getter
    def rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        表示一个条目列表，列表中的每个条目是一个字符串。列表的额度如下：列表最多可以包含 4,000 个条目。所有条目的总长度不能超过 200,000 个字符。CDN 在创建该全局配置时，会将列表中重复的条目删除。重复条目不占额度。
        """
        return pulumi.get(self, "rules")

    @rules.setter
    def rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
        pulumi.set(self, "rules", value)


