From cc1b827705c6d8a225027b0db4e79951b585db2b Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Mon, 17 Nov 2025 19:43:52 +0800 Subject: [PATCH 1/2] add --- go.mod | 2 +- go.sum | 6 +- tencentcloud/provider.go | 5 + tencentcloud/provider.md | 5 + .../data_source_tc_waf_owasp_rule_types.go | 228 ++ .../data_source_tc_waf_owasp_rule_types.md | 14 + ...ata_source_tc_waf_owasp_rule_types_test.go | 36 + .../waf/data_source_tc_waf_owasp_rules.go | 267 ++ .../waf/data_source_tc_waf_owasp_rules.md | 16 + .../data_source_tc_waf_owasp_rules_test.go | 38 + ...esource_tc_waf_owasp_rule_status_config.go | 239 ++ ...esource_tc_waf_owasp_rule_status_config.md | 19 + ...ce_tc_waf_owasp_rule_status_config_test.go | 60 + .../resource_tc_waf_owasp_rule_type_config.go | 275 ++ .../resource_tc_waf_owasp_rule_type_config.md | 21 + ...urce_tc_waf_owasp_rule_type_config_test.go | 68 + .../waf/resource_tc_waf_owasp_white_rule.go | 688 ++++ .../waf/resource_tc_waf_owasp_white_rule.md | 56 + .../resource_tc_waf_owasp_white_rule_test.go | 122 + .../services/waf/service_tencentcloud_waf.go | 305 ++ .../tencentcloud/waf/v20180125/client.go | 1730 ++++++++- .../tencentcloud/waf/v20180125/errors.go | 86 +- .../tencentcloud/waf/v20180125/models.go | 3096 +++++++++++++++-- vendor/modules.txt | 2 +- .../docs/d/waf_owasp_rule_types.html.markdown | 57 + website/docs/d/waf_owasp_rules.html.markdown | 69 + ...waf_owasp_rule_status_config.html.markdown | 53 + .../waf_owasp_rule_type_config.html.markdown | 55 + .../docs/r/waf_owasp_white_rule.html.markdown | 155 + website/tencentcloud.erb | 15 + 30 files changed, 7475 insertions(+), 313 deletions(-) create mode 100644 tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types.go create mode 100644 tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types.md create mode 100644 tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types_test.go create mode 100644 tencentcloud/services/waf/data_source_tc_waf_owasp_rules.go create mode 100644 tencentcloud/services/waf/data_source_tc_waf_owasp_rules.md create mode 100644 tencentcloud/services/waf/data_source_tc_waf_owasp_rules_test.go create mode 100644 tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config.go create mode 100644 tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config.md create mode 100644 tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config_test.go create mode 100644 tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config.go create mode 100644 tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config.md create mode 100644 tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config_test.go create mode 100644 tencentcloud/services/waf/resource_tc_waf_owasp_white_rule.go create mode 100644 tencentcloud/services/waf/resource_tc_waf_owasp_white_rule.md create mode 100644 tencentcloud/services/waf/resource_tc_waf_owasp_white_rule_test.go create mode 100644 website/docs/d/waf_owasp_rule_types.html.markdown create mode 100644 website/docs/d/waf_owasp_rules.html.markdown create mode 100644 website/docs/r/waf_owasp_rule_status_config.html.markdown create mode 100644 website/docs/r/waf_owasp_rule_type_config.html.markdown create mode 100644 website/docs/r/waf_owasp_white_rule.html.markdown diff --git a/go.mod b/go.mod index 3980ad52a8..8bd5872d28 100644 --- a/go.mod +++ b/go.mod @@ -97,7 +97,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tsf v1.0.674 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.1.14 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1170 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.1.36 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.1.45 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 github.com/tencentyun/cos-go-sdk-v5 v0.7.66 diff --git a/go.sum b/go.sum index 9c0b84951a..291344ede0 100644 --- a/go.sum +++ b/go.sum @@ -977,10 +977,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.46 h1:wWcfc github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.46/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.48 h1:aoRUrz2ag27jQWcOKHgeE+toSti6/xPqHKMLruOtJuM= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.48/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.50 h1:wZGiUXmzr4L0S1coFhnjddkyNrO5ZTtfxBDrbeR+1d8= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.50/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.49 h1:BQwUw2V21zIRJxstnaxtG/22lBL3+FbUgWhaC6Qd9ws= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.49/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.50 h1:wZGiUXmzr4L0S1coFhnjddkyNrO5ZTtfxBDrbeR+1d8= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.50/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU= @@ -1118,6 +1118,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.1.14 h1:RsontLM/ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.1.14/go.mod h1:qvuXI7MmzMaUBhGaQhGdZU7QLp3hKS53a3otvIz4CYg= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1170 h1:kcQCWuI9zOkZgL5CK66HNAJmSWCSJxRrDxXT+j02CeE= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1170/go.mod h1:vTukVfThbBIc4lOf4eq/q51eEk78oZUJd2lAoJBOJwI= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.1.36 h1:d4Cjrt+VkS0OElToWZuojkj55z07ECvqfSyeyLOziF4= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.1.36/go.mod h1:4ukz7/m3FarLnjn9UTX/Oc0cTWLZb82MKVLov0Ac4/k= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792 h1:NLgKNOIHWa38AmW7dyfI9Jlcp2Kr9VRD94f48pPNmxM= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792/go.mod h1:Xz6vPV3gHlzPwtEcmWdWO1EUXJDgn2p7UMCXbJiVioQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.1.31 h1:5mDWm86NA0etP4ictillWtZgyCHiK9hpCmj+qEYeowc= diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index 0448afafc3..339e476363 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -1219,6 +1219,8 @@ func Provider() *schema.Provider { "tencentcloud_waf_peak_points": waf.DataSourceTencentCloudWafPeakPoints(), "tencentcloud_waf_instance_qps_limit": waf.DataSourceTencentCloudWafInstanceQpsLimit(), "tencentcloud_waf_user_clb_regions": waf.DataSourceTencentCloudWafUserClbRegions(), + "tencentcloud_waf_owasp_rule_types": waf.DataSourceTencentCloudWafOwaspRuleTypes(), + "tencentcloud_waf_owasp_rules": waf.DataSourceTencentCloudWafOwaspRules(), "tencentcloud_cfw_nat_fw_switches": cfw.DataSourceTencentCloudCfwNatFwSwitches(), "tencentcloud_cfw_vpc_fw_switches": cfw.DataSourceTencentCloudCfwVpcFwSwitches(), "tencentcloud_cfw_edge_fw_switches": cfw.DataSourceTencentCloudCfwEdgeFwSwitches(), @@ -2331,6 +2333,9 @@ func Provider() *schema.Provider { "tencentcloud_waf_bot_status_config": waf.ResourceTencentCloudWafBotStatusConfig(), "tencentcloud_waf_bot_scene_ucb_rule": waf.ResourceTencentCloudWafBotSceneUCBRule(), "tencentcloud_waf_attack_white_rule": waf.ResourceTencentCloudWafAttackWhiteRule(), + "tencentcloud_waf_owasp_rule_type_config": waf.ResourceTencentCloudWafOwaspRuleTypeConfig(), + "tencentcloud_waf_owasp_rule_status_config": waf.ResourceTencentCloudWafOwaspRuleStatusConfig(), + "tencentcloud_waf_owasp_white_rule": waf.ResourceTencentCloudWafOwaspWhiteRule(), "tencentcloud_wedata_submit_task_operation": wedata.ResourceTencentCloudWedataSubmitTaskOperation(), "tencentcloud_wedata_task": wedata.ResourceTencentCloudWedataTask(), "tencentcloud_wedata_workflow_folder": wedata.ResourceTencentCloudWedataWorkflowFolder(), diff --git a/tencentcloud/provider.md b/tencentcloud/provider.md index 0b6d032f1b..434bdc8d03 100644 --- a/tencentcloud/provider.md +++ b/tencentcloud/provider.md @@ -2197,6 +2197,8 @@ tencentcloud_waf_attack_total_count tencentcloud_waf_peak_points tencentcloud_waf_instance_qps_limit tencentcloud_waf_user_clb_regions +tencentcloud_waf_owasp_rule_types +tencentcloud_waf_owasp_rules Resource tencentcloud_waf_custom_rule @@ -2224,6 +2226,9 @@ tencentcloud_waf_bot_scene_status_config tencentcloud_waf_bot_status_config tencentcloud_waf_bot_scene_ucb_rule tencentcloud_waf_attack_white_rule +tencentcloud_waf_owasp_rule_type_config +tencentcloud_waf_owasp_rule_status_config +tencentcloud_waf_owasp_white_rule Wedata Data Source diff --git a/tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types.go b/tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types.go new file mode 100644 index 0000000000..4245452fb5 --- /dev/null +++ b/tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types.go @@ -0,0 +1,228 @@ +package waf + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + wafv20180125 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func DataSourceTencentCloudWafOwaspRuleTypes() *schema.Resource { + return &schema.Resource{ + Read: dataSourceTencentCloudWafOwaspRuleTypesRead, + Schema: map[string]*schema.Schema{ + "domain": { + Type: schema.TypeString, + Required: true, + Description: "Domain names to be queried.", + }, + + "filters": { + Type: schema.TypeList, + Optional: true, + Description: "Filter conditions. supports RuleId, CveID, and Desc.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + Description: "Field name, used for filtering\nFilter the sub-order number (value) by DealName.", + }, + "values": { + Type: schema.TypeSet, + Required: true, + Description: "Values after filtering.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "exact_match": { + Type: schema.TypeBool, + Required: true, + Description: "Exact search or not.", + }, + }, + }, + }, + + "list": { + Type: schema.TypeList, + Computed: true, + Description: "Rule type list and information.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "type_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Type ID.", + }, + "type_name": { + Type: schema.TypeString, + Computed: true, + Description: "Type name.", + }, + "description": { + Type: schema.TypeString, + Computed: true, + Description: "Type description.", + }, + "classification": { + Type: schema.TypeString, + Computed: true, + Description: "Data type category.", + }, + "action": { + Type: schema.TypeInt, + Computed: true, + Description: "Protection mode of the rule type. valid values: 0 (observation), 1 (intercept).", + }, + "level": { + Type: schema.TypeInt, + Computed: true, + Description: "Protection level of the rule type. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict).", + }, + "status": { + Type: schema.TypeInt, + Computed: true, + Description: "The switch status of the rule type. valid values: 0 (disabled), 1 (enabled).", + }, + "total_rule": { + Type: schema.TypeInt, + Computed: true, + Description: "Specifies all rules under the rule type. always.", + }, + "active_rule": { + Type: schema.TypeInt, + Computed: true, + Description: "Indicates the total number of rules enabled under the rule type.", + }, + }, + }, + }, + + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, + }, + } +} + +func dataSourceTencentCloudWafOwaspRuleTypesRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("data_source.tencentcloud_waf_owasp_rule_types.read")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(nil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + service = WafService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + domain string + ) + + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("domain"); ok { + paramMap["Domain"] = helper.String(v.(string)) + domain = v.(string) + } + + if v, ok := d.GetOk("filters"); ok { + filtersSet := v.([]interface{}) + tmpSet := make([]*wafv20180125.FiltersItemNew, 0, len(filtersSet)) + for _, item := range filtersSet { + filtersMap := item.(map[string]interface{}) + filtersItemNew := wafv20180125.FiltersItemNew{} + if v, ok := filtersMap["name"].(string); ok && v != "" { + filtersItemNew.Name = helper.String(v) + } + + if v, ok := filtersMap["values"]; ok { + valuesSet := v.(*schema.Set).List() + for i := range valuesSet { + values := valuesSet[i].(string) + filtersItemNew.Values = append(filtersItemNew.Values, helper.String(values)) + } + } + + if v, ok := filtersMap["exact_match"].(bool); ok { + filtersItemNew.ExactMatch = helper.Bool(v) + } + + tmpSet = append(tmpSet, &filtersItemNew) + } + + paramMap["Filters"] = tmpSet + } + + var respData []*wafv20180125.OwaspRuleType + reqErr := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeWafOwaspRuleTypesByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + + respData = result + return nil + }) + + if reqErr != nil { + return reqErr + } + + listList := make([]map[string]interface{}, 0, len(respData)) + for _, list := range respData { + listMap := map[string]interface{}{} + if list.TypeId != nil { + listMap["type_id"] = list.TypeId + } + + if list.TypeName != nil { + listMap["type_name"] = list.TypeName + } + + if list.Description != nil { + listMap["description"] = list.Description + } + + if list.Classification != nil { + listMap["classification"] = list.Classification + } + + if list.Action != nil { + listMap["action"] = list.Action + } + + if list.Level != nil { + listMap["level"] = list.Level + } + + if list.Status != nil { + listMap["status"] = list.Status + } + + if list.TotalRule != nil { + listMap["total_rule"] = list.TotalRule + } + + if list.ActiveRule != nil { + listMap["active_rule"] = list.ActiveRule + } + + listList = append(listList, listMap) + } + + _ = d.Set("list", listList) + d.SetId(domain) + output, ok := d.GetOk("result_output_file") + if ok && output.(string) != "" { + if e := tccommon.WriteToFile(output.(string), d); e != nil { + return e + } + } + + return nil +} diff --git a/tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types.md b/tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types.md new file mode 100644 index 0000000000..346ab7ec8e --- /dev/null +++ b/tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types.md @@ -0,0 +1,14 @@ +Use this data source to query detailed information of WAF owasp rule types + +Example Usage + +```hcl +data "tencentcloud_waf_owasp_rule_types" "example" { + domain = "demo.com" + filters { + name = "RuleId" + values = ["10000001"] + exact_match = true + } +} +``` diff --git a/tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types_test.go b/tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types_test.go new file mode 100644 index 0000000000..0721b0662a --- /dev/null +++ b/tencentcloud/services/waf/data_source_tc_waf_owasp_rule_types_test.go @@ -0,0 +1,36 @@ +package waf_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +func TestAccTencentCloudWafOwaspRuleTypesDataSource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{{ + Config: testAccWafOwaspRuleTypesDataSource, + Check: resource.ComposeTestCheckFunc( + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_waf_owasp_rule_types.example"), + ), + }}, + }) +} + +const testAccWafOwaspRuleTypesDataSource = ` +data "tencentcloud_waf_owasp_rule_types" "example" { + domain = "example.qcloud.com" + filters { + name = "RuleId" + values = ["10000001"] + exact_match = true + } +} +` diff --git a/tencentcloud/services/waf/data_source_tc_waf_owasp_rules.go b/tencentcloud/services/waf/data_source_tc_waf_owasp_rules.go new file mode 100644 index 0000000000..b4cbfb668c --- /dev/null +++ b/tencentcloud/services/waf/data_source_tc_waf_owasp_rules.go @@ -0,0 +1,267 @@ +package waf + +import ( + "context" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + wafv20180125 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func DataSourceTencentCloudWafOwaspRules() *schema.Resource { + return &schema.Resource{ + Read: dataSourceTencentCloudWafOwaspRulesRead, + Schema: map[string]*schema.Schema{ + "domain": { + Type: schema.TypeString, + Required: true, + Description: "Domain to be queried.", + }, + + "by": { + Type: schema.TypeString, + Optional: true, + Description: "Specifies the field used to sort. valid values: RuleId, ModifyTime.", + }, + + "order": { + Type: schema.TypeString, + Optional: true, + Description: "Sorting method. supports asc, desc.", + }, + + "filters": { + Type: schema.TypeList, + Optional: true, + Description: "Specifies the criteria, support RuleId, TypeId, Desc, CveID, Status, and VulLevel.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + Description: "Field name, used for filtering\nFilter the sub-order number (value) by DealName.", + }, + "values": { + Type: schema.TypeSet, + Required: true, + Description: "Values after filtering.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "exact_match": { + Type: schema.TypeBool, + Required: true, + Description: "Exact search or not.", + }, + }, + }, + }, + + "list": { + Type: schema.TypeList, + Computed: true, + Description: "List of rules.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "rule_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Rule ID.", + }, + "description": { + Type: schema.TypeString, + Computed: true, + Description: "Rule description.", + }, + "status": { + Type: schema.TypeInt, + Computed: true, + Description: "Rule switch. valid values: 0 (disabled), 1 (enabled), 2 (observation only).", + }, + "level": { + Type: schema.TypeInt, + Computed: true, + Description: "Protection level of the rule. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict).", + }, + "vul_level": { + Type: schema.TypeInt, + Computed: true, + Description: "Threat level. valid values: 0 (unknown), 100 (low risk), 200 (medium risk), 300 (high risk), 400 (critical).", + }, + "cve_id": { + Type: schema.TypeString, + Computed: true, + Description: "CVE ID.", + }, + "type_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Specifies the rule type ID.", + }, + "create_time": { + Type: schema.TypeString, + Computed: true, + Description: "Creation time.", + }, + "modify_time": { + Type: schema.TypeString, + Computed: true, + Description: "Update time.", + }, + "locked": { + Type: schema.TypeInt, + Computed: true, + Description: "Whether the user is locked.", + }, + "reason": { + Type: schema.TypeInt, + Computed: true, + Description: "Reason for modification\n\n0: none (compatibility records are empty).\n1: avoid false positives due to business characteristics.\n2: reporting of rule-based false positives.\n3: gray release of core business rules.\n4: others.", + }, + }, + }, + }, + + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, + }, + } +} + +func dataSourceTencentCloudWafOwaspRulesRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("data_source.tencentcloud_waf_owasp_rules.read")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(nil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + service = WafService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + domain string + ) + + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("domain"); ok { + paramMap["Domain"] = helper.String(v.(string)) + domain = v.(string) + } + + if v, ok := d.GetOk("by"); ok { + paramMap["By"] = helper.String(v.(string)) + } + + if v, ok := d.GetOk("order"); ok { + paramMap["Order"] = helper.String(v.(string)) + } + + if v, ok := d.GetOk("filters"); ok { + filtersSet := v.([]interface{}) + tmpSet := make([]*wafv20180125.FiltersItemNew, 0, len(filtersSet)) + for _, item := range filtersSet { + filtersMap := item.(map[string]interface{}) + filtersItemNew := wafv20180125.FiltersItemNew{} + if v, ok := filtersMap["name"].(string); ok && v != "" { + filtersItemNew.Name = helper.String(v) + } + + if v, ok := filtersMap["values"]; ok { + valuesSet := v.(*schema.Set).List() + for i := range valuesSet { + values := valuesSet[i].(string) + filtersItemNew.Values = append(filtersItemNew.Values, helper.String(values)) + } + } + + if v, ok := filtersMap["exact_match"].(bool); ok { + filtersItemNew.ExactMatch = helper.Bool(v) + } + + tmpSet = append(tmpSet, &filtersItemNew) + } + + paramMap["Filters"] = tmpSet + } + + var respData []*wafv20180125.OwaspRule + reqErr := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeWafOwaspRulesByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + + respData = result + return nil + }) + + if reqErr != nil { + return reqErr + } + + listList := make([]map[string]interface{}, 0, len(respData)) + for _, list := range respData { + listMap := map[string]interface{}{} + if list.RuleId != nil { + listMap["rule_id"] = list.RuleId + } + + if list.Description != nil { + listMap["description"] = list.Description + } + + if list.Status != nil { + listMap["status"] = list.Status + } + + if list.Level != nil { + listMap["level"] = list.Level + } + + if list.VulLevel != nil { + listMap["vul_level"] = list.VulLevel + } + + if list.CveID != nil { + listMap["cve_id"] = list.CveID + } + + if list.TypeId != nil { + listMap["type_id"] = list.TypeId + } + + if list.CreateTime != nil { + listMap["create_time"] = list.CreateTime + } + + if list.ModifyTime != nil { + listMap["modify_time"] = list.ModifyTime + } + + if list.Locked != nil { + listMap["locked"] = list.Locked + } + + if list.Reason != nil { + listMap["reason"] = list.Reason + } + + listList = append(listList, listMap) + } + + _ = d.Set("list", listList) + + d.SetId(domain) + output, ok := d.GetOk("result_output_file") + if ok && output.(string) != "" { + if e := tccommon.WriteToFile(output.(string), d); e != nil { + return e + } + } + + return nil +} diff --git a/tencentcloud/services/waf/data_source_tc_waf_owasp_rules.md b/tencentcloud/services/waf/data_source_tc_waf_owasp_rules.md new file mode 100644 index 0000000000..06d162dc91 --- /dev/null +++ b/tencentcloud/services/waf/data_source_tc_waf_owasp_rules.md @@ -0,0 +1,16 @@ +Use this data source to query detailed information of WAF owasp rules + +Example Usage + +```hcl +data "tencentcloud_waf_owasp_rules" "example" { + domain = "example.qcloud.com" + by = "RuleId" + order = "desc" + filters { + name = "RuleId" + values = ["106251141"] + exact_match = true + } +} +``` diff --git a/tencentcloud/services/waf/data_source_tc_waf_owasp_rules_test.go b/tencentcloud/services/waf/data_source_tc_waf_owasp_rules_test.go new file mode 100644 index 0000000000..e10f220e20 --- /dev/null +++ b/tencentcloud/services/waf/data_source_tc_waf_owasp_rules_test.go @@ -0,0 +1,38 @@ +package waf_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +func TestAccTencentCloudWafOwaspRulesDataSource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{{ + Config: testAccWafOwaspRulesDataSource, + Check: resource.ComposeTestCheckFunc( + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_waf_owasp_rules.example"), + ), + }}, + }) +} + +const testAccWafOwaspRulesDataSource = ` +data "tencentcloud_waf_owasp_rules" "example" { + domain = "example.qcloud.com" + by = "RuleId" + order = "desc" + filters { + name = "RuleId" + values = ["106251141"] + exact_match = true + } +} +` diff --git a/tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config.go b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config.go new file mode 100644 index 0000000000..b11503b151 --- /dev/null +++ b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config.go @@ -0,0 +1,239 @@ +package waf + +import ( + "context" + "fmt" + "log" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + wafv20180125 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func ResourceTencentCloudWafOwaspRuleStatusConfig() *schema.Resource { + return &schema.Resource{ + Create: resourceTencentCloudWafOwaspRuleStatusConfigCreate, + Read: resourceTencentCloudWafOwaspRuleStatusConfigRead, + Update: resourceTencentCloudWafOwaspRuleStatusConfigUpdate, + Delete: resourceTencentCloudWafOwaspRuleStatusConfigDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "domain": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "Domain name.", + }, + + "rule_status": { + Type: schema.TypeInt, + Required: true, + Description: "Rule switch. valid values: 0 (disabled), 1 (enabled), 2 (observation only).", + }, + + "rule_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "Rule ID.", + }, + + "type_id": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "If reverse requires the input of data type.", + }, + + "reason": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "Reason for modification. valid values: 0: none (compatibility record is empty). 1: avoid false positives due to business characteristics. 2: reporting of rule-based false positives. 3: gray release of core business rules. 4: others.", + }, + + // computed + "cve_id": { + Type: schema.TypeString, + Computed: true, + Description: "CVE ID.", + }, + + "description": { + Type: schema.TypeString, + Computed: true, + Description: "Rule description.", + }, + + "level": { + Type: schema.TypeInt, + Computed: true, + Description: "Protection level of the rule. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict).", + }, + + "vul_level": { + Type: schema.TypeInt, + Computed: true, + Description: "Threat level. valid values: 0 (unknown), 100 (low risk), 200 (medium risk), 300 (high risk), 400 (critical).", + }, + + "locked": { + Type: schema.TypeInt, + Computed: true, + Description: "Whether the user is locked.", + }, + }, + } +} + +func resourceTencentCloudWafOwaspRuleStatusConfigCreate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_rule_status_config.create")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + domain string + ruleId string + ) + + if v, ok := d.GetOk("domain"); ok { + domain = v.(string) + } + + if v, ok := d.GetOk("rule_id"); ok { + ruleId = v.(string) + } + + d.SetId(strings.Join([]string{domain, ruleId}, tccommon.FILED_SP)) + return resourceTencentCloudWafOwaspRuleStatusConfigUpdate(d, meta) +} + +func resourceTencentCloudWafOwaspRuleStatusConfigRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_rule_status_config.read")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + service = WafService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + ) + + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + + domain := idSplit[0] + ruleId := idSplit[1] + + respData, err := service.DescribeWafOwaspRuleStatusConfigById(ctx, domain, ruleId) + if err != nil { + return err + } + + if respData == nil { + log.Printf("[WARN]%s resource `tencentcloud_waf_owasp_rule_status_config` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) + d.SetId("") + return nil + } + + _ = d.Set("domain", domain) + _ = d.Set("rule_id", ruleId) + + if respData.Status != nil { + _ = d.Set("rule_status", respData.Status) + } + + if respData.TypeId != nil { + _ = d.Set("type_id", respData.TypeId) + } + + if respData.Reason != nil { + _ = d.Set("reason", respData.Reason) + } + + if respData.CveID != nil { + _ = d.Set("cve_id", respData.CveID) + } + + if respData.Description != nil { + _ = d.Set("description", respData.Description) + } + + if respData.Level != nil { + _ = d.Set("level", respData.Level) + } + + if respData.VulLevel != nil { + _ = d.Set("vul_level", respData.VulLevel) + } + + if respData.Locked != nil { + _ = d.Set("locked", respData.Locked) + } + + return nil +} + +func resourceTencentCloudWafOwaspRuleStatusConfigUpdate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_rule_status_config.update")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + ) + + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + + domain := idSplit[0] + ruleId := idSplit[1] + + request := wafv20180125.NewModifyOwaspRuleStatusRequest() + if v, ok := d.GetOkExists("rule_status"); ok { + request.RuleStatus = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOkExists("type_id"); ok { + request.TypeId = helper.IntUint64(v.(int)) + } + + if v, ok := d.GetOkExists("reason"); ok { + request.Reason = helper.IntInt64(v.(int)) + } + + request.Domain = &domain + request.RuleIDs = append(request.RuleIDs, &ruleId) + request.SelectAll = helper.Bool(false) + reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().ModifyOwaspRuleStatusWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + return nil + }) + + if reqErr != nil { + log.Printf("[CRITAL]%s update waf owasp rule status config failed, reason:%+v", logId, reqErr) + return reqErr + } + + return resourceTencentCloudWafOwaspRuleStatusConfigRead(d, meta) +} + +func resourceTencentCloudWafOwaspRuleStatusConfigDelete(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_rule_status_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() + + return nil +} diff --git a/tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config.md b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config.md new file mode 100644 index 0000000000..b330af4056 --- /dev/null +++ b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config.md @@ -0,0 +1,19 @@ +Provides a resource to create a WAF owasp rule status config + +Example Usage + +```hcl +resource "tencentcloud_waf_owasp_rule_status_config" "example" { + domain = "demo.com" + rule_id = "106251141" + rule_status = 1 +} +``` + +Import + +WAF owasp rule status config can be imported using the domain#ruleId, e.g. + +``` +terraform import tencentcloud_waf_owasp_rule_status_config.example demo.com#106251141 +``` diff --git a/tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config_test.go b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config_test.go new file mode 100644 index 0000000000..5b2f467a03 --- /dev/null +++ b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_status_config_test.go @@ -0,0 +1,60 @@ +package waf_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +func TestAccTencentCloudWafOwaspRuleStatusConfigResource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccWafOwaspRuleStatusConfig, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_status_config.example", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_status_config.example", "domain"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_status_config.example", "rule_id"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_status_config.example", "rule_status"), + ), + }, + { + Config: testAccWafOwaspRuleStatusConfigUpdate, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_status_config.example", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_status_config.example", "domain"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_status_config.example", "rule_id"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_status_config.example", "rule_status"), + ), + }, + { + ResourceName: "tencentcloud_waf_owasp_rule_status_config.example", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +const testAccWafOwaspRuleStatusConfig = ` +resource "tencentcloud_waf_owasp_rule_status_config" "example" { + domain = "example.qcloud.com" + rule_id = "106251141" + rule_status = 0 +} +` + +const testAccWafOwaspRuleStatusConfigUpdate = ` +resource "tencentcloud_waf_owasp_rule_status_config" "example" { + domain = "example.qcloud.com" + rule_id = "106251141" + rule_status = 2 +} +` diff --git a/tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config.go b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config.go new file mode 100644 index 0000000000..2aa03a2a15 --- /dev/null +++ b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config.go @@ -0,0 +1,275 @@ +package waf + +import ( + "context" + "fmt" + "log" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + wafv20180125 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func ResourceTencentCloudWafOwaspRuleTypeConfig() *schema.Resource { + return &schema.Resource{ + Create: resourceTencentCloudWafOwaspRuleTypeConfigCreate, + Read: resourceTencentCloudWafOwaspRuleTypeConfigRead, + Update: resourceTencentCloudWafOwaspRuleTypeConfigUpdate, + Delete: resourceTencentCloudWafOwaspRuleTypeConfigDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "domain": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "Domain name.", + }, + + "type_id": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "Rule type ID.", + }, + + "rule_type_status": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "The switch status of the rule type. valid values: 0 (disabled), 1 (enabled).", + }, + + "rule_type_action": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "Protection mode of the rule type. valid values: 0 (observation), 1 (intercept).", + }, + + "rule_type_level": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "Protection level of the rule. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict).", + }, + + // computed + "rule_type_name": { + Type: schema.TypeString, + Computed: true, + Description: "Rule type name.", + }, + + "description": { + Type: schema.TypeString, + Computed: true, + Description: "Rule type description.", + }, + + "classification": { + Type: schema.TypeString, + Computed: true, + Description: "Data type category.", + }, + + "total_rule": { + Type: schema.TypeInt, + Computed: true, + Description: "Specifies all rules under the rule type. always.", + }, + + "active_rule": { + Type: schema.TypeInt, + Computed: true, + Description: "Indicates the total number of rules enabled under the rule type.", + }, + }, + } +} + +func resourceTencentCloudWafOwaspRuleTypeConfigCreate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_rule_type_config.create")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + domain string + typeId string + ) + + if v, ok := d.GetOk("domain"); ok { + domain = v.(string) + } + + if v, ok := d.GetOk("type_id"); ok { + typeId = v.(string) + } + + d.SetId(strings.Join([]string{domain, typeId}, tccommon.FILED_SP)) + return resourceTencentCloudWafOwaspRuleTypeConfigUpdate(d, meta) +} + +func resourceTencentCloudWafOwaspRuleTypeConfigRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_rule_type_config.read")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + service = WafService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + ) + + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + + domain := idSplit[0] + typeId := idSplit[1] + + respData, err := service.DescribeWafOwaspRuleTypeConfigById(ctx, domain, typeId) + if err != nil { + return err + } + + if respData == nil { + log.Printf("[WARN]%s resource `tencentcloud_waf_owasp_rule_type_config` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) + d.SetId("") + return nil + } + + _ = d.Set("domain", domain) + _ = d.Set("type_id", typeId) + + if respData.Status != nil { + _ = d.Set("rule_type_status", respData.Status) + } + + if respData.Action != nil { + _ = d.Set("rule_type_action", respData.Action) + } + + if respData.Level != nil { + _ = d.Set("rule_type_level", respData.Level) + } + + if respData.TypeName != nil { + _ = d.Set("rule_type_name", respData.TypeName) + } + + if respData.Description != nil { + _ = d.Set("description", respData.Description) + } + + if respData.Classification != nil { + _ = d.Set("classification", respData.Classification) + } + + if respData.TotalRule != nil { + _ = d.Set("total_rule", respData.TotalRule) + } + + if respData.ActiveRule != nil { + _ = d.Set("active_rule", respData.ActiveRule) + } + + return nil +} + +func resourceTencentCloudWafOwaspRuleTypeConfigUpdate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_rule_type_config.update")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + ) + + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + + domain := idSplit[0] + typeId := idSplit[1] + + if v, ok := d.GetOkExists("rule_type_status"); ok { + request := wafv20180125.NewModifyOwaspRuleTypeStatusRequest() + request.RuleTypeStatus = helper.IntInt64(v.(int)) + request.Domain = &domain + request.TypeIDs = helper.Strings([]string{typeId}) + reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().ModifyOwaspRuleTypeStatusWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + return nil + }) + + if reqErr != nil { + log.Printf("[CRITAL]%s update waf owasp rule type status failed, reason:%+v", logId, reqErr) + return reqErr + } + } + + if v, ok := d.GetOkExists("rule_type_action"); ok { + request := wafv20180125.NewModifyOwaspRuleTypeActionRequest() + request.RuleTypeAction = helper.IntInt64(v.(int)) + request.Domain = &domain + request.TypeIDs = helper.Strings([]string{typeId}) + reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().ModifyOwaspRuleTypeActionWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + return nil + }) + + if reqErr != nil { + log.Printf("[CRITAL]%s update waf owasp rule type action failed, reason:%+v", logId, reqErr) + return reqErr + } + } + + if v, ok := d.GetOkExists("rule_type_level"); ok { + request := wafv20180125.NewModifyOwaspRuleTypeLevelRequest() + request.RuleTypeLevel = helper.IntInt64(v.(int)) + request.Domain = &domain + request.TypeIDs = helper.Strings([]string{typeId}) + reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().ModifyOwaspRuleTypeLevelWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + return nil + }) + + if reqErr != nil { + log.Printf("[CRITAL]%s update waf owasp rule type level failed, reason:%+v", logId, reqErr) + return reqErr + } + } + + return resourceTencentCloudWafOwaspRuleTypeConfigRead(d, meta) +} + +func resourceTencentCloudWafOwaspRuleTypeConfigDelete(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_rule_type_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() + + return nil +} diff --git a/tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config.md b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config.md new file mode 100644 index 0000000000..13034f22d5 --- /dev/null +++ b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config.md @@ -0,0 +1,21 @@ +Provides a resource to create a WAF owasp rule type config + +Example Usage + +```hcl +resource "tencentcloud_waf_owasp_rule_type_config" "example" { + domain = "demo.com" + type_id = "30000000" + rule_type_status = 1 + rule_type_action = 1 + rule_type_level = 200 +} +``` + +Import + +WAF owasp rule type config can be imported using the domain#typeId, e.g. + +``` +terraform import tencentcloud_waf_owasp_rule_type_config.example demo.com#30000000 +``` diff --git a/tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config_test.go b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config_test.go new file mode 100644 index 0000000000..b1b060b5df --- /dev/null +++ b/tencentcloud/services/waf/resource_tc_waf_owasp_rule_type_config_test.go @@ -0,0 +1,68 @@ +package waf_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +func TestAccTencentCloudWafOwaspRuleTypeConfigResource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccWafOwaspRuleTypeConfig, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "domain"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "type_id"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "rule_type_status"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "rule_type_action"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "rule_type_level"), + ), + }, + { + Config: testAccWafOwaspRuleTypeConfigUpdate, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "id"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "domain"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "type_id"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "rule_type_status"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "rule_type_action"), + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_rule_type_config.example", "rule_type_level"), + ), + }, + { + ResourceName: "tencentcloud_waf_owasp_rule_type_config.example", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +const testAccWafOwaspRuleTypeConfig = ` +resource "tencentcloud_waf_owasp_rule_type_config" "example" { + domain = "example.qcloud.com" + type_id = "30000000" + rule_type_status = 1 + rule_type_action = 1 + rule_type_level = 200 +} +` + +const testAccWafOwaspRuleTypeConfigUpdate = ` +resource "tencentcloud_waf_owasp_rule_type_config" "example" { + domain = "example.qcloud.com" + type_id = "30000000" + rule_type_status = 0 + rule_type_action = 0 + rule_type_level = 100 +} +` diff --git a/tencentcloud/services/waf/resource_tc_waf_owasp_white_rule.go b/tencentcloud/services/waf/resource_tc_waf_owasp_white_rule.go new file mode 100644 index 0000000000..3688411ce8 --- /dev/null +++ b/tencentcloud/services/waf/resource_tc_waf_owasp_white_rule.go @@ -0,0 +1,688 @@ +package waf + +import ( + "context" + "fmt" + "log" + "strings" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + wafv20180125 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" +) + +func ResourceTencentCloudWafOwaspWhiteRule() *schema.Resource { + return &schema.Resource{ + Create: resourceTencentCloudWafOwaspWhiteRuleCreate, + Read: resourceTencentCloudWafOwaspWhiteRuleRead, + Update: resourceTencentCloudWafOwaspWhiteRuleUpdate, + Delete: resourceTencentCloudWafOwaspWhiteRuleDelete, + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + Description: "Rule name.", + }, + + "domain": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "Domain name.", + }, + + "strategies": { + Type: schema.TypeList, + Required: true, + Description: "Rule-Based matching policy list.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "field": { + Type: schema.TypeString, + Required: true, + Description: "Specifies the matching field.\n\nDifferent matching fields result in different matching parameters, logical operators, and matching contents. the details are as follows:.\n.\n
Matching Field Matching Parameter Logical Symbol Matching Content
IP (source IP) Parameters are not supported. ipmatch (match)
ipnmatch (mismatch)
Multiple IP addresses are separated by commas. A maximum of 20 IP addresses are allowed.
IPv6 (source IPv6) Parameters are not supported. ipmatch (match)
ipnmatch (mismatch)
A single IPv6 address is supported.
Referer (referer) Parameters are not supported. empty (Content is empty.)
null (do not exist)
eq (equal to)
neq (not equal to)
contains (contain)
ncontains (do not contain)
len_eq (length equals to)
len_gt (length is greater than)
len_lt (length is less than)
strprefix (prefix matching)
strsuffix (suffix matching)
rematch (regular expression matching)
Enter the content, with a maximum of 512 characters.
URL (request path) Parameters are not supported. eq (equal to)
neq (not equal to)
contains (contain)
ncontains (do not contain)
len_eq (length equals to)
len_gt (length is greater than)
len_lt (length is \n less than)
strprefix (prefix matching)
strsuffix (suffix matching)
rematch (regular expression matching)
Enter the content starting with /, with a maximum of 512 characters.
UserAgent (UserAgent) Parameters are not supported.Same logical symbols as the matching field Referer Enter the content with a maximum of 512 characters.
HTTP_METHOD (HTTP request method) Parameters are not supported. eq (equal to)
neq (not equal to)
Enter the method name. The uppercase is recommended.
QUERY_STRING (request string) Parameters are not supported. Same logical symbol as the matching field Request PathEnter the content with a maximum of 512 characters.
GET (GET parameter value) Parameter entry is supported. contains (contain)
ncontains (do not contain)
len_eq (length equals to)
len_gt (length is greater than)
len_lt (length is less than)
strprefix (prefix matching)
strsuffix (suffix matching)
Enter the content with a maximum of 512 characters.
GET_PARAMS_NAMES (GET parameter name) Parameters are not supported. exist (Parameter exists.)
nexist (Parameter does not exist.)
len_eq (length equals to)
len_gt (length is greater than)
len_lt (length is less than)
strprefix (prefix matching)
strsuffix (suffix matching)
Enter the content with a maximum of 512 characters.
POST (POST parameter value) Parameter entry is supported. Same logical symbol as the matching field GET Parameter Value Enter the content with a maximum of 512 characters.
GET_POST_NAMES (POST parameter name) Parameters are not supported. Same logical symbol as the matching field GET Parameter Name Enter the content with a maximum of 512 characters.
POST_BODY (complete body) Parameters are not supported. Same logical symbol as the matching field Request PathEnter the body content with a maximum of 512 characters.
COOKIE (cookie) Parameters are not supported. empty (Content is empty.)
null (do not exist)
rematch (regular expression matching)
Unsupported currently
GET_COOKIES_NAMES (cookie parameter name) Parameters are not supported. Same logical symbol as the matching field GET Parameter Name Enter the content with a maximum of 512 characters.
ARGS_COOKIE (cookie parameter value) Parameter entry is supported. Same logical symbol as the matching field GET Parameter Value Enter the content512 characters limit
GET_HEADERS_NAMES (Header parameter name)parameter not supportedexsit (parameter exists)
nexsit (parameter does not exist)
len_eq (LENGTH equal)
len_gt (LENGTH greater than)
len_lt (LENGTH less than)
strprefix (prefix match)
strsuffix (suffix matching)
rematch (regular expression matching)
enter CONTENT, lowercase is recommended, up to 512 characters
ARGS_Header (Header parameter value)support parameter entrycontains (include)
ncontains (does not include)
len_eq (LENGTH equal)
len_gt (LENGTH greater than)
len_lt (LENGTH less than)
strprefix (prefix match)
strsuffix (suffix matching)
rematch (regular expression matching)
enter CONTENT, up to 512 characters
CONTENT_LENGTH (CONTENT-LENGTH)support parameter entrynumgt (value greater than)
numlt (value smaller than)
numeq (value equal to)
enter an integer between 0-9999999999999
IP_GEO (source IP geolocation)support parameter entryGEO_in (belong)
GEO_not_in (not_in)
enter CONTENT, up to 10240 characters, format: serialized JSON, format: [{\"Country\":\"china\",\"Region\":\"guangdong\",\"City\":\"shenzhen\"}]
CAPTCHA_RISK (CAPTCHA RISK)parameter not supportedeq (equal)
neq (not equal to)
belong (belong)
not_belong (not belong to)
null (nonexistent)
exist (exist)
enter RISK level value, value range 0-255
CAPTCHA_DEVICE_RISK (CAPTCHA DEVICE RISK)parameter not supportedeq (equal)
neq (not equal to)
belong (belong)
not_belong (not belong to)
null (nonexistent)
exist (exist)
enter DEVICE RISK code, valid values: 101, 201, 301, 401, 501, 601, 701
CAPTCHAR_SCORE (CAPTCHA RISK assessment SCORE)parameter not supportednumeq (value equal to)
numgt (value greater than)
numlt (value smaller than)
numle (less than or equal to)
numge (value is greater than or equal to)
null (nonexistent)
exist (exist)
enter assessment SCORE, value range 0-100
.", + }, + "compare_func": { + Type: schema.TypeString, + Required: true, + Description: "Specifies the logic symbol. \n\nLogical symbols are divided into the following types:.\nEmpty (content is empty).\nnull (not found).\nEq (equal to).\nneq (not equal to).\ncontains (contain).\nncontains (do not contain).\nstrprefix (prefix matching).\nstrsuffix (suffix matching).\nLen_eq (length equals to).\nLen_gt (length greater than).\nLen_lt (length less than).\nipmatch (belong).\nipnmatch (not_in).\nnumgt (value greater than).\nNumValue smaller than].\nValue equal to.\nnumneq (value not equal to).\nnumle (less than or equal to).\nnumge (value is greater than or equal to).\ngeo_in (IP geographic belong).\ngeo_not_in (IP geographic not_in).\nSpecifies different logical operators for matching fields. for details, see the matching field table above.", + }, + "content": { + Type: schema.TypeString, + Required: true, + Description: "Specifies the match content.\n\nCurrently, when the match field is COOKIE (COOKIE), match content is not required. all others are needed.", + }, + "arg": { + Type: schema.TypeString, + Required: true, + Description: "Specifies the matching parameter.\n\nConfiguration parameters are divided into two data types: parameter not supported and support parameters.\nWhen the match field is one of the following four, the matching parameter can be entered, otherwise not supported.\nGET (get parameter value).\v\t\t\nPOST (post parameter value).\v\t\t\nARGS_COOKIE (COOKIE parameter value).\v\t\t\nARGS_HEADER (HEADER parameter value).", + }, + "case_not_sensitive": { + Type: schema.TypeInt, + Optional: true, + Description: "Case-Sensitive.\nCase-Insensitive.", + }, + }, + }, + }, + + "ids": { + Type: schema.TypeSet, + Required: true, + Description: "ID list of allowlisted rules.", + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + + "type": { + Type: schema.TypeInt, + Required: true, + Description: "Allowlist type. valid values: 0 (allowlisting by specific rule ID), 1 (allowlisting by rule type).", + }, + + "job_type": { + Type: schema.TypeString, + Required: true, + Description: "Rule execution mode: TimedJob indicates scheduled execution. CronJob indicates periodic execution.", + }, + + "job_date_time": { + Type: schema.TypeList, + Required: true, + MaxItems: 1, + Description: "Scheduled task configuration.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "timed": { + Type: schema.TypeList, + Optional: true, + Description: "Time parameter for scheduled execution.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "start_date_time": { + Type: schema.TypeInt, + Optional: true, + Description: "Start timestamp, in seconds.", + }, + "end_date_time": { + Type: schema.TypeInt, + Optional: true, + Description: "End timestamp, in seconds.", + }, + }, + }, + }, + "cron": { + Type: schema.TypeList, + Optional: true, + Description: "Time parameter for periodic execution.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "days": { + Type: schema.TypeSet, + Optional: true, + Description: "Execution day of each month.", + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "w_days": { + Type: schema.TypeSet, + Optional: true, + Description: "Execution day of each week.", + Elem: &schema.Schema{ + Type: schema.TypeInt, + }, + }, + "start_time": { + Type: schema.TypeString, + Optional: true, + Description: "Start time.", + }, + "end_time": { + Type: schema.TypeString, + Optional: true, + Description: "End time.", + }, + }, + }, + }, + "time_t_zone": { + Type: schema.TypeString, + Optional: true, + Description: "Specifies the time zone.", + }, + }, + }, + }, + + "expire_time": { + Type: schema.TypeInt, + Required: true, + Description: "If the JobDateTime field is not set, this field is used. 0 means permanent, other values indicate the cutoff time for scheduled effect (unit: seconds).", + }, + + "status": { + Type: schema.TypeInt, + Optional: true, + Computed: true, + Description: "Rule status. valid values: 0 (disabled), 1 (enabled). enabled by default.", + }, + + // computed + "rule_id": { + Type: schema.TypeInt, + Computed: true, + Description: "Rule ID.", + }, + }, + } +} + +func resourceTencentCloudWafOwaspWhiteRuleCreate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_white_rule.create")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + request = wafv20180125.NewCreateOwaspWhiteRuleRequest() + response = wafv20180125.NewCreateOwaspWhiteRuleResponse() + domain string + ruleId string + ) + + if v, ok := d.GetOk("name"); ok { + request.Name = helper.String(v.(string)) + } + + if v, ok := d.GetOk("domain"); ok { + request.Domain = helper.String(v.(string)) + domain = v.(string) + } + + if v, ok := d.GetOk("strategies"); ok { + for _, item := range v.([]interface{}) { + strategiesMap := item.(map[string]interface{}) + strategy := wafv20180125.Strategy{} + if v, ok := strategiesMap["field"].(string); ok && v != "" { + strategy.Field = helper.String(v) + } + + if v, ok := strategiesMap["compare_func"].(string); ok && v != "" { + strategy.CompareFunc = helper.String(v) + } + + if v, ok := strategiesMap["content"].(string); ok && v != "" { + strategy.Content = helper.String(v) + } + + if v, ok := strategiesMap["arg"].(string); ok && v != "" { + strategy.Arg = helper.String(v) + } + + if v, ok := strategiesMap["case_not_sensitive"].(int); ok { + strategy.CaseNotSensitive = helper.IntUint64(v) + } + + request.Strategies = append(request.Strategies, &strategy) + } + } + + if v, ok := d.GetOk("ids"); ok { + idsSet := v.(*schema.Set).List() + for i := range idsSet { + ids := idsSet[i].(int) + request.Ids = append(request.Ids, helper.IntUint64(ids)) + } + } + + if v, ok := d.GetOkExists("type"); ok { + request.Type = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("job_type"); ok { + request.JobType = helper.String(v.(string)) + } + + if jobDateTimeMap, ok := helper.InterfacesHeadMap(d, "job_date_time"); ok { + jobDateTime := wafv20180125.JobDateTime{} + if v, ok := jobDateTimeMap["timed"]; ok { + for _, item := range v.([]interface{}) { + timedMap := item.(map[string]interface{}) + timedJob := wafv20180125.TimedJob{} + if v, ok := timedMap["start_date_time"].(int); ok { + timedJob.StartDateTime = helper.IntUint64(v) + } + + if v, ok := timedMap["end_date_time"].(int); ok { + timedJob.EndDateTime = helper.IntUint64(v) + } + + jobDateTime.Timed = append(jobDateTime.Timed, &timedJob) + } + } + + if v, ok := jobDateTimeMap["cron"]; ok { + for _, item := range v.([]interface{}) { + cronMap := item.(map[string]interface{}) + cronJob := wafv20180125.CronJob{} + if v, ok := cronMap["days"]; ok { + daysSet := v.(*schema.Set).List() + for i := range daysSet { + days := daysSet[i].(int) + cronJob.Days = append(cronJob.Days, helper.IntUint64(days)) + } + } + + if v, ok := cronMap["w_days"]; ok { + wDaysSet := v.(*schema.Set).List() + for i := range wDaysSet { + wDays := wDaysSet[i].(int) + cronJob.WDays = append(cronJob.WDays, helper.IntUint64(wDays)) + } + } + + if v, ok := cronMap["start_time"].(string); ok && v != "" { + cronJob.StartTime = helper.String(v) + } + + if v, ok := cronMap["end_time"].(string); ok && v != "" { + cronJob.EndTime = helper.String(v) + } + + jobDateTime.Cron = append(jobDateTime.Cron, &cronJob) + } + } + + if v, ok := jobDateTimeMap["time_t_zone"].(string); ok && v != "" { + jobDateTime.TimeTZone = helper.String(v) + } + + request.JobDateTime = &jobDateTime + } + + if v, ok := d.GetOkExists("expire_time"); ok { + request.ExpireTime = helper.IntUint64(v.(int)) + } + + if v, ok := d.GetOkExists("status"); ok { + request.Status = helper.IntUint64(v.(int)) + } + + reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().CreateOwaspWhiteRuleWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil || result.Response == nil { + return resource.NonRetryableError(fmt.Errorf("Create waf owasp white rule failed, Response is nil.")) + } + + response = result + return nil + }) + + if reqErr != nil { + log.Printf("[CRITAL]%s create waf owasp white rule failed, reason:%+v", logId, reqErr) + return reqErr + } + + if response.Response.RuleId == nil { + return fmt.Errorf("RuleId is nil.") + } + + ruleId = helper.UInt64ToStr(*response.Response.RuleId) + d.SetId(strings.Join([]string{domain, ruleId}, tccommon.FILED_SP)) + return resourceTencentCloudWafOwaspWhiteRuleRead(d, meta) +} + +func resourceTencentCloudWafOwaspWhiteRuleRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_white_rule.read")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + service = WafService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + ) + + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + + domain := idSplit[0] + ruleId := idSplit[1] + + respData, err := service.DescribeWafOwaspWhiteRuleById(ctx, domain, ruleId) + if err != nil { + return err + } + + if respData == nil { + log.Printf("[WARN]%s resource `tencentcloud_waf_owasp_white_rule` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) + d.SetId("") + return nil + } + + _ = d.Set("domain", domain) + + if respData.Name != nil { + _ = d.Set("name", respData.Name) + } + + if respData.Strategies != nil { + tmpList := make([]map[string]interface{}, 0, len(respData.Strategies)) + for _, strategies := range respData.Strategies { + strategiesMap := map[string]interface{}{} + if strategies.Field != nil { + strategiesMap["field"] = strategies.Field + } + + if strategies.CompareFunc != nil { + strategiesMap["compare_func"] = strategies.CompareFunc + } + + if strategies.Content != nil { + strategiesMap["content"] = strategies.Content + } + + if strategies.Arg != nil { + strategiesMap["arg"] = strategies.Arg + } + + if strategies.CaseNotSensitive != nil { + strategiesMap["case_not_sensitive"] = strategies.CaseNotSensitive + } + + tmpList = append(tmpList, strategiesMap) + } + + _ = d.Set("strategies", tmpList) + } + + if respData.Ids != nil { + _ = d.Set("ids", respData.Ids) + } + + if respData.Type != nil { + _ = d.Set("type", respData.Type) + } + + if respData.JobType != nil { + _ = d.Set("job_type", respData.JobType) + } + + if respData.JobDateTime != nil { + jobDateTimeMap := map[string]interface{}{} + if respData.JobDateTime.Timed != nil { + timedList := make([]map[string]interface{}, 0, len(respData.JobDateTime.Timed)) + for _, timed := range respData.JobDateTime.Timed { + timedMap := map[string]interface{}{} + if timed.StartDateTime != nil { + timedMap["start_date_time"] = timed.StartDateTime + } + + if timed.EndDateTime != nil { + timedMap["end_date_time"] = timed.EndDateTime + } + + timedList = append(timedList, timedMap) + } + + jobDateTimeMap["timed"] = timedList + } + + if respData.JobDateTime.Cron != nil { + cronList := make([]map[string]interface{}, 0, len(respData.JobDateTime.Cron)) + for _, cron := range respData.JobDateTime.Cron { + cronMap := map[string]interface{}{} + if cron.Days != nil { + cronMap["days"] = cron.Days + } + + if cron.WDays != nil { + cronMap["w_days"] = cron.WDays + } + + if cron.StartTime != nil { + cronMap["start_time"] = cron.StartTime + } + + if cron.EndTime != nil { + cronMap["end_time"] = cron.EndTime + } + + cronList = append(cronList, cronMap) + } + + jobDateTimeMap["cron"] = cronList + } + + if respData.JobDateTime.TimeTZone != nil { + jobDateTimeMap["time_t_zone"] = respData.JobDateTime.TimeTZone + } + + _ = d.Set("job_date_time", []interface{}{jobDateTimeMap}) + } + + if respData.Status != nil { + _ = d.Set("status", respData.Status) + } + + if respData.RuleId != nil { + _ = d.Set("rule_id", respData.RuleId) + } + + return nil +} + +func resourceTencentCloudWafOwaspWhiteRuleUpdate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_white_rule.update")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + ) + + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + + domain := idSplit[0] + ruleId := idSplit[1] + + needChange := false + mutableArgs := []string{"name", "strategies", "ids", "type", "job_type", "job_date_time", "expire_time", "status"} + for _, v := range mutableArgs { + if d.HasChange(v) { + needChange = true + break + } + } + + if needChange { + request := wafv20180125.NewModifyOwaspWhiteRuleRequest() + if v, ok := d.GetOk("name"); ok { + request.Name = helper.String(v.(string)) + } + + if v, ok := d.GetOk("strategies"); ok { + for _, item := range v.([]interface{}) { + strategiesMap := item.(map[string]interface{}) + strategy := wafv20180125.Strategy{} + if v, ok := strategiesMap["field"].(string); ok && v != "" { + strategy.Field = helper.String(v) + } + + if v, ok := strategiesMap["compare_func"].(string); ok && v != "" { + strategy.CompareFunc = helper.String(v) + } + + if v, ok := strategiesMap["content"].(string); ok && v != "" { + strategy.Content = helper.String(v) + } + + if v, ok := strategiesMap["arg"].(string); ok && v != "" { + strategy.Arg = helper.String(v) + } + + if v, ok := strategiesMap["case_not_sensitive"].(int); ok { + strategy.CaseNotSensitive = helper.IntUint64(v) + } + + request.Strategies = append(request.Strategies, &strategy) + } + } + + if v, ok := d.GetOk("ids"); ok { + idsSet := v.(*schema.Set).List() + for i := range idsSet { + ids := idsSet[i].(int) + request.Ids = append(request.Ids, helper.IntUint64(ids)) + } + } + + if v, ok := d.GetOkExists("type"); ok { + request.Type = helper.IntInt64(v.(int)) + } + + if v, ok := d.GetOk("job_type"); ok { + request.JobType = helper.String(v.(string)) + } + + if jobDateTimeMap, ok := helper.InterfacesHeadMap(d, "job_date_time"); ok { + jobDateTime := wafv20180125.JobDateTime{} + if v, ok := jobDateTimeMap["timed"]; ok { + for _, item := range v.([]interface{}) { + timedMap := item.(map[string]interface{}) + timedJob := wafv20180125.TimedJob{} + if v, ok := timedMap["start_date_time"].(int); ok { + timedJob.StartDateTime = helper.IntUint64(v) + } + + if v, ok := timedMap["end_date_time"].(int); ok { + timedJob.EndDateTime = helper.IntUint64(v) + } + + jobDateTime.Timed = append(jobDateTime.Timed, &timedJob) + } + } + + if v, ok := jobDateTimeMap["cron"]; ok { + for _, item := range v.([]interface{}) { + cronMap := item.(map[string]interface{}) + cronJob := wafv20180125.CronJob{} + if v, ok := cronMap["days"]; ok { + daysSet := v.(*schema.Set).List() + for i := range daysSet { + days := daysSet[i].(int) + cronJob.Days = append(cronJob.Days, helper.IntUint64(days)) + } + } + + if v, ok := cronMap["w_days"]; ok { + wDaysSet := v.(*schema.Set).List() + for i := range wDaysSet { + wDays := wDaysSet[i].(int) + cronJob.WDays = append(cronJob.WDays, helper.IntUint64(wDays)) + } + } + + if v, ok := cronMap["start_time"].(string); ok && v != "" { + cronJob.StartTime = helper.String(v) + } + + if v, ok := cronMap["end_time"].(string); ok && v != "" { + cronJob.EndTime = helper.String(v) + } + + jobDateTime.Cron = append(jobDateTime.Cron, &cronJob) + } + } + + if v, ok := jobDateTimeMap["time_t_zone"].(string); ok && v != "" { + jobDateTime.TimeTZone = helper.String(v) + } + + request.JobDateTime = &jobDateTime + } + + if v, ok := d.GetOkExists("expire_time"); ok { + request.ExpireTime = helper.IntUint64(v.(int)) + } + + if v, ok := d.GetOkExists("status"); ok { + request.Status = helper.IntUint64(v.(int)) + } + + request.Domain = &domain + request.RuleId = helper.StrToUint64Point(ruleId) + reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().ModifyOwaspWhiteRuleWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + return nil + }) + + if reqErr != nil { + log.Printf("[CRITAL]%s update waf owasp white rule failed, reason:%+v", logId, reqErr) + return reqErr + } + } + + return resourceTencentCloudWafOwaspWhiteRuleRead(d, meta) +} + +func resourceTencentCloudWafOwaspWhiteRuleDelete(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_waf_owasp_white_rule.delete")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + request = wafv20180125.NewDeleteOwaspWhiteRuleRequest() + ) + + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) + if len(idSplit) != 2 { + return fmt.Errorf("id is broken,%s", d.Id()) + } + + domain := idSplit[0] + ruleId := idSplit[1] + + request.Domain = &domain + request.Ids = append(request.Ids, helper.StrToUint64Point(ruleId)) + reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseWafV20180125Client().DeleteOwaspWhiteRuleWithContext(ctx, request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + return nil + }) + + if reqErr != nil { + log.Printf("[CRITAL]%s delete waf owasp white rule failed, reason:%+v", logId, reqErr) + return reqErr + } + + return nil +} diff --git a/tencentcloud/services/waf/resource_tc_waf_owasp_white_rule.md b/tencentcloud/services/waf/resource_tc_waf_owasp_white_rule.md new file mode 100644 index 0000000000..43f7b7f391 --- /dev/null +++ b/tencentcloud/services/waf/resource_tc_waf_owasp_white_rule.md @@ -0,0 +1,56 @@ +Provides a resource to create a WAF owasp white rule + +Example Usage + +```hcl +resource "tencentcloud_waf_owasp_white_rule" "example" { + name = "tf-example" + domain = "example.qcloud.com" + strategies { + field = "IP" + compare_func = "ipmatch" + content = "1.1.1.1" + arg = "" + case_not_sensitive = 0 + } + ids = [ + 10000000, + 20000000, + 30000000, + 40000000, + 90000000, + 110000000, + 190000000, + 200000000, + 210000000, + 220000000, + 230000000, + 240000000, + 250000000, + 260000000, + 270000000, + 280000000, + 290000000, + 300000000, + 310000000, + 320000000, + 330000000, + 340000000, + 350000000, + 360000000, + 370000000 + ] + type = 1 + job_type = "TimedJob" + job_date_time { + timed { + start_date_time = 0 + end_date_time = 0 + } + + time_t_zone = "UTC+8" + } + expire_time = 0 + status = 1 +} +``` diff --git a/tencentcloud/services/waf/resource_tc_waf_owasp_white_rule_test.go b/tencentcloud/services/waf/resource_tc_waf_owasp_white_rule_test.go new file mode 100644 index 0000000000..0777e166f4 --- /dev/null +++ b/tencentcloud/services/waf/resource_tc_waf_owasp_white_rule_test.go @@ -0,0 +1,122 @@ +package waf_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +func TestAccTencentCloudWafOwaspWhiteRuleResource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccWafOwaspWhiteRule, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_white_rule.example", "id"), + ), + }, + { + Config: testAccWafOwaspWhiteRuleUpdate, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_waf_owasp_white_rule.example", "id"), + ), + }, + }, + }) +} + +const testAccWafOwaspWhiteRule = ` +resource "tencentcloud_waf_owasp_white_rule" "example" { + name = "tf-example" + domain = "example.qcloud.com" + strategies { + field = "IP" + compare_func = "ipmatch" + content = "1.1.1.1" + arg = "" + case_not_sensitive = 0 + } + ids = [ + 10000000, + 20000000, + 30000000, + 40000000, + 90000000, + 110000000, + 190000000, + 200000000, + 210000000, + 220000000, + 230000000, + 240000000, + 250000000, + 260000000, + 270000000, + 280000000, + 290000000, + 300000000, + 310000000, + 320000000, + 330000000, + 340000000, + 350000000, + 360000000, + 370000000 + ] + type = 1 + job_type = "TimedJob" + job_date_time { + timed { + start_date_time = 0 + end_date_time = 0 + } + + time_t_zone = "UTC+8" + } + expire_time = 0 + status = 1 +} +` + +const testAccWafOwaspWhiteRuleUpdate = ` +resource "tencentcloud_waf_owasp_white_rule" "example" { + name = "tf-example" + domain = "example.qcloud.com" + strategies { + field = "IP" + compare_func = "ipmatch" + content = "1.1.1.1" + arg = "" + case_not_sensitive = 0 + } + ids = [ + 10000000, + 20000000, + 30000000, + 40000000, + 90000000, + 110000000, + 190000000, + 200000000, + ] + type = 1 + job_type = "TimedJob" + job_date_time { + timed { + start_date_time = 0 + end_date_time = 0 + } + + time_t_zone = "UTC+8" + } + expire_time = 0 + status = 0 +} +` diff --git a/tencentcloud/services/waf/service_tencentcloud_waf.go b/tencentcloud/services/waf/service_tencentcloud_waf.go index 68e0679a56..e8a004c917 100644 --- a/tencentcloud/services/waf/service_tencentcloud_waf.go +++ b/tencentcloud/services/waf/service_tencentcloud_waf.go @@ -2006,3 +2006,308 @@ func (me *WafService) DescribeWafAttackWhiteRuleById(ctx context.Context, domain return } + +func (me *WafService) DescribeWafOwaspRuleTypeConfigById(ctx context.Context, domain, typeId string) (ret *waf.OwaspRuleType, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := waf.NewDescribeOwaspRuleTypesRequest() + response := waf.NewDescribeOwaspRuleTypesResponse() + request.Domain = &domain + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var ( + offset uint64 = 0 + limit uint64 = 100 + orList []*waf.OwaspRuleType + ) + + for { + request.Offset = &offset + request.Limit = &limit + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseWafV20180125Client().DescribeOwaspRuleTypes(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil || result.Response == nil || result.Response.List == nil { + return resource.NonRetryableError(fmt.Errorf("Describe owasp rule types failed, Response is nil.")) + } + + response = result + return nil + }) + + if err != nil { + errRet = err + return + } + + if response == nil || len(response.Response.List) < 1 { + break + } + + orList = append(orList, response.Response.List...) + if len(response.Response.List) < int(limit) { + break + } + + offset += limit + } + + for _, item := range orList { + if item != nil && item.TypeId != nil { + respTypeId := helper.UInt64ToStr(*item.TypeId) + if respTypeId == typeId { + ret = item + return + } + } + } + + return +} + +func (me *WafService) DescribeWafOwaspRuleTypesByFilter(ctx context.Context, param map[string]interface{}) (ret []*waf.OwaspRuleType, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = waf.NewDescribeOwaspRuleTypesRequest() + response = waf.NewDescribeOwaspRuleTypesResponse() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Domain" { + request.Domain = v.(*string) + } + + if k == "Filters" { + request.Filters = v.([]*waf.FiltersItemNew) + } + } + + var ( + offset uint64 = 0 + limit uint64 = 100 + ) + + for { + request.Offset = &offset + request.Limit = &limit + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseWafV20180125Client().DescribeOwaspRuleTypes(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil || result.Response == nil || result.Response.List == nil { + return resource.NonRetryableError(fmt.Errorf("Describe owasp rule types failed, Response is nil.")) + } + + response = result + return nil + }) + + if err != nil { + errRet = err + return + } + + if response == nil || len(response.Response.List) < 1 { + break + } + + ret = append(ret, response.Response.List...) + if len(response.Response.List) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *WafService) DescribeWafOwaspRuleStatusConfigById(ctx context.Context, domain, ruleId string) (ret *waf.OwaspRule, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := waf.NewDescribeOwaspRulesRequest() + response := waf.NewDescribeOwaspRulesResponse() + request.Domain = &domain + request.Filters = []*waf.FiltersItemNew{ + { + Name: common.StringPtr("RuleId"), + Values: common.StringPtrs([]string{ruleId}), + ExactMatch: common.BoolPtr(true), + }, + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseWafV20180125Client().DescribeOwaspRules(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil || result.Response == nil || result.Response.List == nil || len(result.Response.List) < 1 { + return resource.NonRetryableError(fmt.Errorf("Describe owasp rules failed, Response is nil.")) + } + + response = result + return nil + }) + + if err != nil { + errRet = err + return + } + + ret = response.Response.List[0] + return +} + +func (me *WafService) DescribeWafOwaspRulesByFilter(ctx context.Context, param map[string]interface{}) (ret []*waf.OwaspRule, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = waf.NewDescribeOwaspRulesRequest() + response = waf.NewDescribeOwaspRulesResponse() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Domain" { + request.Domain = v.(*string) + } + + if k == "By" { + request.By = v.(*string) + } + + if k == "Order" { + request.Order = v.(*string) + } + + if k == "Filters" { + request.Filters = v.([]*waf.FiltersItemNew) + } + } + + var ( + offset uint64 = 0 + limit uint64 = 100 + ) + + for { + request.Offset = &offset + request.Limit = &limit + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseWafV20180125Client().DescribeOwaspRules(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil || result.Response == nil || result.Response.List == nil { + return resource.NonRetryableError(fmt.Errorf("Describe owasp rules failed, Response is nil.")) + } + + response = result + return nil + }) + + if err != nil { + errRet = err + return + } + + if response == nil || len(response.Response.List) < 1 { + break + } + + ret = append(ret, response.Response.List...) + if len(response.Response.List) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *WafService) DescribeWafOwaspWhiteRuleById(ctx context.Context, domain, ruleId string) (ret *waf.OwaspWhiteRule, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := waf.NewDescribeOwaspWhiteRulesRequest() + response := waf.NewDescribeOwaspWhiteRulesResponse() + request.Domain = &domain + request.Filters = []*waf.FiltersItemNew{ + { + Name: common.StringPtr("RuleId"), + Values: common.StringPtrs([]string{ruleId}), + ExactMatch: common.BoolPtr(true), + }, + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseWafV20180125Client().DescribeOwaspWhiteRules(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + if result == nil || result.Response == nil || result.Response.List == nil || len(result.Response.List) < 1 { + return resource.NonRetryableError(fmt.Errorf("Describe owasp white rules failed, Response is nil.")) + } + + response = result + return nil + }) + + if err != nil { + errRet = err + return + } + + ret = response.Response.List[0] + return +} diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/client.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/client.go index 2ba3264139..664cbdd3bd 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/client.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved. +// Copyright (c) 2017-2025 Tencent. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -88,6 +88,7 @@ func (c *Client) AddAntiFakeUrlWithContext(ctx context.Context, request *AddAnti if request == nil { request = NewAddAntiFakeUrlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "AddAntiFakeUrl") if c.GetCredential() == nil { return nil, errors.New("AddAntiFakeUrl require credential") @@ -145,6 +146,7 @@ func (c *Client) AddAntiInfoLeakRulesWithContext(ctx context.Context, request *A if request == nil { request = NewAddAntiInfoLeakRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "AddAntiInfoLeakRules") if c.GetCredential() == nil { return nil, errors.New("AddAntiInfoLeakRules require credential") @@ -220,6 +222,7 @@ func (c *Client) AddAreaBanAreasWithContext(ctx context.Context, request *AddAre if request == nil { request = NewAddAreaBanAreasRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "AddAreaBanAreas") if c.GetCredential() == nil { return nil, errors.New("AddAreaBanAreas require credential") @@ -309,6 +312,7 @@ func (c *Client) AddAttackWhiteRuleWithContext(ctx context.Context, request *Add if request == nil { request = NewAddAttackWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "AddAttackWhiteRule") if c.GetCredential() == nil { return nil, errors.New("AddAttackWhiteRule require credential") @@ -368,6 +372,7 @@ func (c *Client) AddCustomRuleWithContext(ctx context.Context, request *AddCusto if request == nil { request = NewAddCustomRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "AddCustomRule") if c.GetCredential() == nil { return nil, errors.New("AddCustomRule require credential") @@ -429,6 +434,7 @@ func (c *Client) AddCustomWhiteRuleWithContext(ctx context.Context, request *Add if request == nil { request = NewAddCustomWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "AddCustomWhiteRule") if c.GetCredential() == nil { return nil, errors.New("AddCustomWhiteRule require credential") @@ -488,6 +494,7 @@ func (c *Client) AddDomainWhiteRuleWithContext(ctx context.Context, request *Add if request == nil { request = NewAddDomainWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "AddDomainWhiteRule") if c.GetCredential() == nil { return nil, errors.New("AddDomainWhiteRule require credential") @@ -585,6 +592,7 @@ func (c *Client) AddSpartaProtectionWithContext(ctx context.Context, request *Ad if request == nil { request = NewAddSpartaProtectionRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "AddSpartaProtection") if c.GetCredential() == nil { return nil, errors.New("AddSpartaProtection require credential") @@ -682,6 +690,7 @@ func (c *Client) BatchOperateUserSignatureRulesWithContext(ctx context.Context, if request == nil { request = NewBatchOperateUserSignatureRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "BatchOperateUserSignatureRules") if c.GetCredential() == nil { return nil, errors.New("BatchOperateUserSignatureRules require credential") @@ -769,6 +778,7 @@ func (c *Client) CreateAccessExportWithContext(ctx context.Context, request *Cre if request == nil { request = NewCreateAccessExportRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreateAccessExport") if c.GetCredential() == nil { return nil, errors.New("CreateAccessExport require credential") @@ -846,6 +856,7 @@ func (c *Client) CreateAreaBanRuleWithContext(ctx context.Context, request *Crea if request == nil { request = NewCreateAreaBanRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreateAreaBanRule") if c.GetCredential() == nil { return nil, errors.New("CreateAreaBanRule require credential") @@ -858,6 +869,66 @@ func (c *Client) CreateAreaBanRuleWithContext(ctx context.Context, request *Crea return } +func NewCreateBatchIpAccessControlRequest() (request *CreateBatchIpAccessControlRequest) { + request = &CreateBatchIpAccessControlRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "CreateBatchIpAccessControl") + + + return +} + +func NewCreateBatchIpAccessControlResponse() (response *CreateBatchIpAccessControlResponse) { + response = &CreateBatchIpAccessControlResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// CreateBatchIpAccessControl +// 批量IP黑白名单新增接口 +// +// 可能返回的错误码: +// FAILEDOPERATION_THENUMBEROFADDEDBLACKANDWHITELISTEXCEEDSTHEUPPERLIMIT = "FailedOperation.TheNumberOfAddedBlackAndWhiteListExceedsTheUpperLimit" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// LIMITEXCEEDED = "LimitExceeded" +// LIMITEXCEEDED_SPECIFICATIONERR = "LimitExceeded.SpecificationErr" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) CreateBatchIpAccessControl(request *CreateBatchIpAccessControlRequest) (response *CreateBatchIpAccessControlResponse, err error) { + return c.CreateBatchIpAccessControlWithContext(context.Background(), request) +} + +// CreateBatchIpAccessControl +// 批量IP黑白名单新增接口 +// +// 可能返回的错误码: +// FAILEDOPERATION_THENUMBEROFADDEDBLACKANDWHITELISTEXCEEDSTHEUPPERLIMIT = "FailedOperation.TheNumberOfAddedBlackAndWhiteListExceedsTheUpperLimit" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// LIMITEXCEEDED = "LimitExceeded" +// LIMITEXCEEDED_SPECIFICATIONERR = "LimitExceeded.SpecificationErr" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) CreateBatchIpAccessControlWithContext(ctx context.Context, request *CreateBatchIpAccessControlRequest) (response *CreateBatchIpAccessControlResponse, err error) { + if request == nil { + request = NewCreateBatchIpAccessControlRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreateBatchIpAccessControl") + + if c.GetCredential() == nil { + return nil, errors.New("CreateBatchIpAccessControl require credential") + } + + request.SetContext(ctx) + + response = NewCreateBatchIpAccessControlResponse() + err = c.Send(request, response) + return +} + func NewCreateDealsRequest() (request *CreateDealsRequest) { request = &CreateDealsRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -935,6 +1006,7 @@ func (c *Client) CreateDealsWithContext(ctx context.Context, request *CreateDeal if request == nil { request = NewCreateDealsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreateDeals") if c.GetCredential() == nil { return nil, errors.New("CreateDeals require credential") @@ -947,6 +1019,76 @@ func (c *Client) CreateDealsWithContext(ctx context.Context, request *CreateDeal return } +func NewCreateExportRequest() (request *CreateExportRequest) { + request = &CreateExportRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "CreateExport") + + + return +} + +func NewCreateExportResponse() (response *CreateExportResponse) { + response = &CreateExportResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// CreateExport +// 本接口仅创建下载任务,任务返回的下载地址,请用户调用DescribeExports查看任务列表。其中有下载地址CosPath参数。参考文档https://cloud.tencent.com/document/product/614/56449 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_TOPICCLOSED = "FailedOperation.TopicClosed" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_EXPORT = "LimitExceeded.Export" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +func (c *Client) CreateExport(request *CreateExportRequest) (response *CreateExportResponse, err error) { + return c.CreateExportWithContext(context.Background(), request) +} + +// CreateExport +// 本接口仅创建下载任务,任务返回的下载地址,请用户调用DescribeExports查看任务列表。其中有下载地址CosPath参数。参考文档https://cloud.tencent.com/document/product/614/56449 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_TOPICCLOSED = "FailedOperation.TopicClosed" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_EXPORT = "LimitExceeded.Export" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +func (c *Client) CreateExportWithContext(ctx context.Context, request *CreateExportRequest) (response *CreateExportResponse, err error) { + if request == nil { + request = NewCreateExportRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreateExport") + + if c.GetCredential() == nil { + return nil, errors.New("CreateExport require credential") + } + + request.SetContext(ctx) + + response = NewCreateExportResponse() + err = c.Send(request, response) + return +} + func NewCreateHostRequest() (request *CreateHostRequest) { request = &CreateHostRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -1010,6 +1152,7 @@ func (c *Client) CreateHostWithContext(ctx context.Context, request *CreateHostR if request == nil { request = NewCreateHostRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreateHost") if c.GetCredential() == nil { return nil, errors.New("CreateHost require credential") @@ -1069,6 +1212,7 @@ func (c *Client) CreateIpAccessControlWithContext(ctx context.Context, request * if request == nil { request = NewCreateIpAccessControlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreateIpAccessControl") if c.GetCredential() == nil { return nil, errors.New("CreateIpAccessControl require credential") @@ -1081,6 +1225,96 @@ func (c *Client) CreateIpAccessControlWithContext(ctx context.Context, request * return } +func NewCreateOwaspWhiteRuleRequest() (request *CreateOwaspWhiteRuleRequest) { + request = &CreateOwaspWhiteRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "CreateOwaspWhiteRule") + + + return +} + +func NewCreateOwaspWhiteRuleResponse() (response *CreateOwaspWhiteRuleResponse) { + response = &CreateOwaspWhiteRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// CreateOwaspWhiteRule +// 添加规则引擎白名单 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// INVALIDPARAMETERVALUE_INVALIDREQUEST = "InvalidParameterValue.InvalidRequest" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) CreateOwaspWhiteRule(request *CreateOwaspWhiteRuleRequest) (response *CreateOwaspWhiteRuleResponse, err error) { + return c.CreateOwaspWhiteRuleWithContext(context.Background(), request) +} + +// CreateOwaspWhiteRule +// 添加规则引擎白名单 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// INVALIDPARAMETERVALUE_INVALIDREQUEST = "InvalidParameterValue.InvalidRequest" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) CreateOwaspWhiteRuleWithContext(ctx context.Context, request *CreateOwaspWhiteRuleRequest) (response *CreateOwaspWhiteRuleResponse, err error) { + if request == nil { + request = NewCreateOwaspWhiteRuleRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreateOwaspWhiteRule") + + if c.GetCredential() == nil { + return nil, errors.New("CreateOwaspWhiteRule require credential") + } + + request.SetContext(ctx) + + response = NewCreateOwaspWhiteRuleResponse() + err = c.Send(request, response) + return +} + func NewCreatePostCKafkaFlowRequest() (request *CreatePostCKafkaFlowRequest) { request = &CreatePostCKafkaFlowRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -1152,6 +1386,7 @@ func (c *Client) CreatePostCKafkaFlowWithContext(ctx context.Context, request *C if request == nil { request = NewCreatePostCKafkaFlowRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreatePostCKafkaFlow") if c.GetCredential() == nil { return nil, errors.New("CreatePostCKafkaFlow require credential") @@ -1235,6 +1470,7 @@ func (c *Client) CreatePostCLSFlowWithContext(ctx context.Context, request *Crea if request == nil { request = NewCreatePostCLSFlowRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "CreatePostCLSFlow") if c.GetCredential() == nil { return nil, errors.New("CreatePostCLSFlow require credential") @@ -1322,6 +1558,7 @@ func (c *Client) DeleteAccessExportWithContext(ctx context.Context, request *Del if request == nil { request = NewDeleteAccessExportRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteAccessExport") if c.GetCredential() == nil { return nil, errors.New("DeleteAccessExport require credential") @@ -1375,6 +1612,7 @@ func (c *Client) DeleteAntiFakeUrlWithContext(ctx context.Context, request *Dele if request == nil { request = NewDeleteAntiFakeUrlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteAntiFakeUrl") if c.GetCredential() == nil { return nil, errors.New("DeleteAntiFakeUrl require credential") @@ -1426,6 +1664,7 @@ func (c *Client) DeleteAntiInfoLeakRuleWithContext(ctx context.Context, request if request == nil { request = NewDeleteAntiInfoLeakRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteAntiInfoLeakRule") if c.GetCredential() == nil { return nil, errors.New("DeleteAntiInfoLeakRule require credential") @@ -1481,6 +1720,7 @@ func (c *Client) DeleteAttackDownloadRecordWithContext(ctx context.Context, requ if request == nil { request = NewDeleteAttackDownloadRecordRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteAttackDownloadRecord") if c.GetCredential() == nil { return nil, errors.New("DeleteAttackDownloadRecord require credential") @@ -1568,6 +1808,7 @@ func (c *Client) DeleteAttackWhiteRuleWithContext(ctx context.Context, request * if request == nil { request = NewDeleteAttackWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteAttackWhiteRule") if c.GetCredential() == nil { return nil, errors.New("DeleteAttackWhiteRule require credential") @@ -1580,6 +1821,64 @@ func (c *Client) DeleteAttackWhiteRuleWithContext(ctx context.Context, request * return } +func NewDeleteBatchIpAccessControlRequest() (request *DeleteBatchIpAccessControlRequest) { + request = &DeleteBatchIpAccessControlRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DeleteBatchIpAccessControl") + + + return +} + +func NewDeleteBatchIpAccessControlResponse() (response *DeleteBatchIpAccessControlResponse) { + response = &DeleteBatchIpAccessControlResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DeleteBatchIpAccessControl +// 批量黑白名单删除接口 +// +// 可能返回的错误码: +// FAILEDOPERATION_THENUMBEROFONETIMEDELETIONSREACHEDTHEUPPERLIMIT = "FailedOperation.TheNumberOfOneTimeDeletionsReachedTheUpperLimit" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// INVALIDPARAMETER = "InvalidParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteBatchIpAccessControl(request *DeleteBatchIpAccessControlRequest) (response *DeleteBatchIpAccessControlResponse, err error) { + return c.DeleteBatchIpAccessControlWithContext(context.Background(), request) +} + +// DeleteBatchIpAccessControl +// 批量黑白名单删除接口 +// +// 可能返回的错误码: +// FAILEDOPERATION_THENUMBEROFONETIMEDELETIONSREACHEDTHEUPPERLIMIT = "FailedOperation.TheNumberOfOneTimeDeletionsReachedTheUpperLimit" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// INVALIDPARAMETER = "InvalidParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteBatchIpAccessControlWithContext(ctx context.Context, request *DeleteBatchIpAccessControlRequest) (response *DeleteBatchIpAccessControlResponse, err error) { + if request == nil { + request = NewDeleteBatchIpAccessControlRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteBatchIpAccessControl") + + if c.GetCredential() == nil { + return nil, errors.New("DeleteBatchIpAccessControl require credential") + } + + request.SetContext(ctx) + + response = NewDeleteBatchIpAccessControlResponse() + err = c.Send(request, response) + return +} + func NewDeleteBotSceneUCBRuleRequest() (request *DeleteBotSceneUCBRuleRequest) { request = &DeleteBotSceneUCBRuleRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -1617,6 +1916,7 @@ func (c *Client) DeleteBotSceneUCBRuleWithContext(ctx context.Context, request * if request == nil { request = NewDeleteBotSceneUCBRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteBotSceneUCBRule") if c.GetCredential() == nil { return nil, errors.New("DeleteBotSceneUCBRule require credential") @@ -1670,6 +1970,7 @@ func (c *Client) DeleteCCRuleWithContext(ctx context.Context, request *DeleteCCR if request == nil { request = NewDeleteCCRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteCCRule") if c.GetCredential() == nil { return nil, errors.New("DeleteCCRule require credential") @@ -1721,6 +2022,7 @@ func (c *Client) DeleteCustomRuleWithContext(ctx context.Context, request *Delet if request == nil { request = NewDeleteCustomRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteCustomRule") if c.GetCredential() == nil { return nil, errors.New("DeleteCustomRule require credential") @@ -1774,6 +2076,7 @@ func (c *Client) DeleteCustomWhiteRuleWithContext(ctx context.Context, request * if request == nil { request = NewDeleteCustomWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteCustomWhiteRule") if c.GetCredential() == nil { return nil, errors.New("DeleteCustomWhiteRule require credential") @@ -1831,6 +2134,7 @@ func (c *Client) DeleteDomainWhiteRulesWithContext(ctx context.Context, request if request == nil { request = NewDeleteDomainWhiteRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteDomainWhiteRules") if c.GetCredential() == nil { return nil, errors.New("DeleteDomainWhiteRules require credential") @@ -1843,6 +2147,72 @@ func (c *Client) DeleteDomainWhiteRulesWithContext(ctx context.Context, request return } +func NewDeleteExportRequest() (request *DeleteExportRequest) { + request = &DeleteExportRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DeleteExport") + + + return +} + +func NewDeleteExportResponse() (response *DeleteExportResponse) { + response = &DeleteExportResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DeleteExport +// 本接口用于删除日志下载任务 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// RESOURCENOTFOUND_EXPORTNOTEXIST = "ResourceNotFound.ExportNotExist" +func (c *Client) DeleteExport(request *DeleteExportRequest) (response *DeleteExportResponse, err error) { + return c.DeleteExportWithContext(context.Background(), request) +} + +// DeleteExport +// 本接口用于删除日志下载任务 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// RESOURCENOTFOUND_EXPORTNOTEXIST = "ResourceNotFound.ExportNotExist" +func (c *Client) DeleteExportWithContext(ctx context.Context, request *DeleteExportRequest) (response *DeleteExportResponse, err error) { + if request == nil { + request = NewDeleteExportRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteExport") + + if c.GetCredential() == nil { + return nil, errors.New("DeleteExport require credential") + } + + request.SetContext(ctx) + + response = NewDeleteExportResponse() + err = c.Send(request, response) + return +} + func NewDeleteHostRequest() (request *DeleteHostRequest) { request = &DeleteHostRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -1904,6 +2274,7 @@ func (c *Client) DeleteHostWithContext(ctx context.Context, request *DeleteHostR if request == nil { request = NewDeleteHostRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteHost") if c.GetCredential() == nil { return nil, errors.New("DeleteHost require credential") @@ -1961,6 +2332,7 @@ func (c *Client) DeleteIpAccessControlWithContext(ctx context.Context, request * if request == nil { request = NewDeleteIpAccessControlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteIpAccessControl") if c.GetCredential() == nil { return nil, errors.New("DeleteIpAccessControl require credential") @@ -2022,6 +2394,7 @@ func (c *Client) DeleteIpAccessControlV2WithContext(ctx context.Context, request if request == nil { request = NewDeleteIpAccessControlV2Request() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteIpAccessControlV2") if c.GetCredential() == nil { return nil, errors.New("DeleteIpAccessControlV2 require credential") @@ -2034,30 +2407,180 @@ func (c *Client) DeleteIpAccessControlV2WithContext(ctx context.Context, request return } -func NewDeleteSessionRequest() (request *DeleteSessionRequest) { - request = &DeleteSessionRequest{ +func NewDeleteOwaspRuleStatusRequest() (request *DeleteOwaspRuleStatusRequest) { + request = &DeleteOwaspRuleStatusRequest{ BaseRequest: &tchttp.BaseRequest{}, } - request.Init().WithApiInfo("waf", APIVersion, "DeleteSession") + request.Init().WithApiInfo("waf", APIVersion, "DeleteOwaspRuleStatus") return } -func NewDeleteSessionResponse() (response *DeleteSessionResponse) { - response = &DeleteSessionResponse{ +func NewDeleteOwaspRuleStatusResponse() (response *DeleteOwaspRuleStatusResponse) { + response = &DeleteOwaspRuleStatusResponse{ BaseResponse: &tchttp.BaseResponse{}, } return } -// DeleteSession -// 删除CC攻击的session设置 +// DeleteOwaspRuleStatus +// 解除门神规则的状态锁 // // 可能返回的错误码: -// FAILEDOPERATION_SESSIONINUSED = "FailedOperation.SessionInUsed" +// FAILEDOPERATION_THENUMBEROFONETIMEDELETIONSREACHEDTHEUPPERLIMIT = "FailedOperation.TheNumberOfOneTimeDeletionsReachedTheUpperLimit" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND = "ResourceNotFound" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteOwaspRuleStatus(request *DeleteOwaspRuleStatusRequest) (response *DeleteOwaspRuleStatusResponse, err error) { + return c.DeleteOwaspRuleStatusWithContext(context.Background(), request) +} + +// DeleteOwaspRuleStatus +// 解除门神规则的状态锁 +// +// 可能返回的错误码: +// FAILEDOPERATION_THENUMBEROFONETIMEDELETIONSREACHEDTHEUPPERLIMIT = "FailedOperation.TheNumberOfOneTimeDeletionsReachedTheUpperLimit" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND = "ResourceNotFound" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteOwaspRuleStatusWithContext(ctx context.Context, request *DeleteOwaspRuleStatusRequest) (response *DeleteOwaspRuleStatusResponse, err error) { + if request == nil { + request = NewDeleteOwaspRuleStatusRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteOwaspRuleStatus") + + if c.GetCredential() == nil { + return nil, errors.New("DeleteOwaspRuleStatus require credential") + } + + request.SetContext(ctx) + + response = NewDeleteOwaspRuleStatusResponse() + err = c.Send(request, response) + return +} + +func NewDeleteOwaspWhiteRuleRequest() (request *DeleteOwaspWhiteRuleRequest) { + request = &DeleteOwaspWhiteRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DeleteOwaspWhiteRule") + + + return +} + +func NewDeleteOwaspWhiteRuleResponse() (response *DeleteOwaspWhiteRuleResponse) { + response = &DeleteOwaspWhiteRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DeleteOwaspWhiteRule +// 删除用户规则引擎白名单 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteOwaspWhiteRule(request *DeleteOwaspWhiteRuleRequest) (response *DeleteOwaspWhiteRuleResponse, err error) { + return c.DeleteOwaspWhiteRuleWithContext(context.Background(), request) +} + +// DeleteOwaspWhiteRule +// 删除用户规则引擎白名单 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DeleteOwaspWhiteRuleWithContext(ctx context.Context, request *DeleteOwaspWhiteRuleRequest) (response *DeleteOwaspWhiteRuleResponse, err error) { + if request == nil { + request = NewDeleteOwaspWhiteRuleRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteOwaspWhiteRule") + + if c.GetCredential() == nil { + return nil, errors.New("DeleteOwaspWhiteRule require credential") + } + + request.SetContext(ctx) + + response = NewDeleteOwaspWhiteRuleResponse() + err = c.Send(request, response) + return +} + +func NewDeleteSessionRequest() (request *DeleteSessionRequest) { + request = &DeleteSessionRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DeleteSession") + + + return +} + +func NewDeleteSessionResponse() (response *DeleteSessionResponse) { + response = &DeleteSessionResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DeleteSession +// 删除CC攻击的session设置 +// +// 可能返回的错误码: +// FAILEDOPERATION_SESSIONINUSED = "FailedOperation.SessionInUsed" // INTERNALERROR = "InternalError" // INTERNALERROR_DBERR = "InternalError.DBErr" // UNSUPPORTEDOPERATION = "UnsupportedOperation" @@ -2077,6 +2600,7 @@ func (c *Client) DeleteSessionWithContext(ctx context.Context, request *DeleteSe if request == nil { request = NewDeleteSessionRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteSession") if c.GetCredential() == nil { return nil, errors.New("DeleteSession require credential") @@ -2132,6 +2656,7 @@ func (c *Client) DeleteSpartaProtectionWithContext(ctx context.Context, request if request == nil { request = NewDeleteSpartaProtectionRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DeleteSpartaProtection") if c.GetCredential() == nil { return nil, errors.New("DeleteSpartaProtection require credential") @@ -2219,6 +2744,7 @@ func (c *Client) DescribeAccessExportsWithContext(ctx context.Context, request * if request == nil { request = NewDescribeAccessExportsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAccessExports") if c.GetCredential() == nil { return nil, errors.New("DescribeAccessExports require credential") @@ -2306,6 +2832,7 @@ func (c *Client) DescribeAccessFastAnalysisWithContext(ctx context.Context, requ if request == nil { request = NewDescribeAccessFastAnalysisRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAccessFastAnalysis") if c.GetCredential() == nil { return nil, errors.New("DescribeAccessFastAnalysis require credential") @@ -2403,6 +2930,7 @@ func (c *Client) DescribeAccessHistogramWithContext(ctx context.Context, request if request == nil { request = NewDescribeAccessHistogramRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAccessHistogram") if c.GetCredential() == nil { return nil, errors.New("DescribeAccessHistogram require credential") @@ -2490,6 +3018,7 @@ func (c *Client) DescribeAccessIndexWithContext(ctx context.Context, request *De if request == nil { request = NewDescribeAccessIndexRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAccessIndex") if c.GetCredential() == nil { return nil, errors.New("DescribeAccessIndex require credential") @@ -2541,6 +3070,7 @@ func (c *Client) DescribeAntiFakeRulesWithContext(ctx context.Context, request * if request == nil { request = NewDescribeAntiFakeRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAntiFakeRules") if c.GetCredential() == nil { return nil, errors.New("DescribeAntiFakeRules require credential") @@ -2592,6 +3122,7 @@ func (c *Client) DescribeAntiInfoLeakageRulesWithContext(ctx context.Context, re if request == nil { request = NewDescribeAntiInfoLeakageRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAntiInfoLeakageRules") if c.GetCredential() == nil { return nil, errors.New("DescribeAntiInfoLeakageRules require credential") @@ -2641,6 +3172,7 @@ func (c *Client) DescribeApiDetailWithContext(ctx context.Context, request *Desc if request == nil { request = NewDescribeApiDetailRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeApiDetail") if c.GetCredential() == nil { return nil, errors.New("DescribeApiDetail require credential") @@ -2692,6 +3224,7 @@ func (c *Client) DescribeApiListVersionTwoWithContext(ctx context.Context, reque if request == nil { request = NewDescribeApiListVersionTwoRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeApiListVersionTwo") if c.GetCredential() == nil { return nil, errors.New("DescribeApiListVersionTwo require credential") @@ -2743,6 +3276,7 @@ func (c *Client) DescribeAreaBanAreasWithContext(ctx context.Context, request *D if request == nil { request = NewDescribeAreaBanAreasRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAreaBanAreas") if c.GetCredential() == nil { return nil, errors.New("DescribeAreaBanAreas require credential") @@ -2794,6 +3328,7 @@ func (c *Client) DescribeAreaBanRuleWithContext(ctx context.Context, request *De if request == nil { request = NewDescribeAreaBanRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAreaBanRule") if c.GetCredential() == nil { return nil, errors.New("DescribeAreaBanRule require credential") @@ -2843,6 +3378,7 @@ func (c *Client) DescribeAreaBanSupportAreasWithContext(ctx context.Context, req if request == nil { request = NewDescribeAreaBanSupportAreasRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAreaBanSupportAreas") if c.GetCredential() == nil { return nil, errors.New("DescribeAreaBanSupportAreas require credential") @@ -2930,6 +3466,7 @@ func (c *Client) DescribeAttackOverviewWithContext(ctx context.Context, request if request == nil { request = NewDescribeAttackOverviewRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAttackOverview") if c.GetCredential() == nil { return nil, errors.New("DescribeAttackOverview require credential") @@ -2987,6 +3524,7 @@ func (c *Client) DescribeAttackTypeWithContext(ctx context.Context, request *Des if request == nil { request = NewDescribeAttackTypeRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAttackType") if c.GetCredential() == nil { return nil, errors.New("DescribeAttackType require credential") @@ -3076,6 +3614,7 @@ func (c *Client) DescribeAttackWhiteRuleWithContext(ctx context.Context, request if request == nil { request = NewDescribeAttackWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAttackWhiteRule") if c.GetCredential() == nil { return nil, errors.New("DescribeAttackWhiteRule require credential") @@ -3127,6 +3666,7 @@ func (c *Client) DescribeAutoDenyIPWithContext(ctx context.Context, request *Des if request == nil { request = NewDescribeAutoDenyIPRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeAutoDenyIP") if c.GetCredential() == nil { return nil, errors.New("DescribeAutoDenyIP require credential") @@ -3182,6 +3722,7 @@ func (c *Client) DescribeBatchIpAccessControlWithContext(ctx context.Context, re if request == nil { request = NewDescribeBatchIpAccessControlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeBatchIpAccessControl") if c.GetCredential() == nil { return nil, errors.New("DescribeBatchIpAccessControl require credential") @@ -3239,6 +3780,7 @@ func (c *Client) DescribeBotSceneListWithContext(ctx context.Context, request *D if request == nil { request = NewDescribeBotSceneListRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeBotSceneList") if c.GetCredential() == nil { return nil, errors.New("DescribeBotSceneList require credential") @@ -3292,6 +3834,7 @@ func (c *Client) DescribeBotSceneOverviewWithContext(ctx context.Context, reques if request == nil { request = NewDescribeBotSceneOverviewRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeBotSceneOverview") if c.GetCredential() == nil { return nil, errors.New("DescribeBotSceneOverview require credential") @@ -3351,6 +3894,7 @@ func (c *Client) DescribeBotSceneUCBRuleWithContext(ctx context.Context, request if request == nil { request = NewDescribeBotSceneUCBRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeBotSceneUCBRule") if c.GetCredential() == nil { return nil, errors.New("DescribeBotSceneUCBRule require credential") @@ -3402,6 +3946,7 @@ func (c *Client) DescribeCCAutoStatusWithContext(ctx context.Context, request *D if request == nil { request = NewDescribeCCAutoStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeCCAutoStatus") if c.GetCredential() == nil { return nil, errors.New("DescribeCCAutoStatus require credential") @@ -3451,6 +3996,7 @@ func (c *Client) DescribeCCRuleWithContext(ctx context.Context, request *Describ if request == nil { request = NewDescribeCCRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeCCRule") if c.GetCredential() == nil { return nil, errors.New("DescribeCCRule require credential") @@ -3502,6 +4048,7 @@ func (c *Client) DescribeCCRuleListWithContext(ctx context.Context, request *Des if request == nil { request = NewDescribeCCRuleListRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeCCRuleList") if c.GetCredential() == nil { return nil, errors.New("DescribeCCRuleList require credential") @@ -3571,6 +4118,7 @@ func (c *Client) DescribeCertificateVerifyResultWithContext(ctx context.Context, if request == nil { request = NewDescribeCertificateVerifyResultRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeCertificateVerifyResult") if c.GetCredential() == nil { return nil, errors.New("DescribeCertificateVerifyResult require credential") @@ -3658,6 +4206,7 @@ func (c *Client) DescribeCiphersDetailWithContext(ctx context.Context, request * if request == nil { request = NewDescribeCiphersDetailRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeCiphersDetail") if c.GetCredential() == nil { return nil, errors.New("DescribeCiphersDetail require credential") @@ -3713,6 +4262,7 @@ func (c *Client) DescribeCustomRuleListWithContext(ctx context.Context, request if request == nil { request = NewDescribeCustomRuleListRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeCustomRuleList") if c.GetCredential() == nil { return nil, errors.New("DescribeCustomRuleList require credential") @@ -3768,6 +4318,7 @@ func (c *Client) DescribeCustomWhiteRuleWithContext(ctx context.Context, request if request == nil { request = NewDescribeCustomWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeCustomWhiteRule") if c.GetCredential() == nil { return nil, errors.New("DescribeCustomWhiteRule require credential") @@ -3855,6 +4406,7 @@ func (c *Client) DescribeDomainCountInfoWithContext(ctx context.Context, request if request == nil { request = NewDescribeDomainCountInfoRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeDomainCountInfo") if c.GetCredential() == nil { return nil, errors.New("DescribeDomainCountInfo require credential") @@ -3942,6 +4494,7 @@ func (c *Client) DescribeDomainDetailsClbWithContext(ctx context.Context, reques if request == nil { request = NewDescribeDomainDetailsClbRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeDomainDetailsClb") if c.GetCredential() == nil { return nil, errors.New("DescribeDomainDetailsClb require credential") @@ -4031,6 +4584,7 @@ func (c *Client) DescribeDomainDetailsSaasWithContext(ctx context.Context, reque if request == nil { request = NewDescribeDomainDetailsSaasRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeDomainDetailsSaas") if c.GetCredential() == nil { return nil, errors.New("DescribeDomainDetailsSaas require credential") @@ -4086,6 +4640,7 @@ func (c *Client) DescribeDomainRulesWithContext(ctx context.Context, request *De if request == nil { request = NewDescribeDomainRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeDomainRules") if c.GetCredential() == nil { return nil, errors.New("DescribeDomainRules require credential") @@ -4147,6 +4702,7 @@ func (c *Client) DescribeDomainVerifyResultWithContext(ctx context.Context, requ if request == nil { request = NewDescribeDomainVerifyResultRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeDomainVerifyResult") if c.GetCredential() == nil { return nil, errors.New("DescribeDomainVerifyResult require credential") @@ -4200,6 +4756,7 @@ func (c *Client) DescribeDomainWhiteRulesWithContext(ctx context.Context, reques if request == nil { request = NewDescribeDomainWhiteRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeDomainWhiteRules") if c.GetCredential() == nil { return nil, errors.New("DescribeDomainWhiteRules require credential") @@ -4287,6 +4844,7 @@ func (c *Client) DescribeDomainsWithContext(ctx context.Context, request *Descri if request == nil { request = NewDescribeDomainsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeDomains") if c.GetCredential() == nil { return nil, errors.New("DescribeDomains require credential") @@ -4299,6 +4857,78 @@ func (c *Client) DescribeDomainsWithContext(ctx context.Context, request *Descri return } +func NewDescribeExportsRequest() (request *DescribeExportsRequest) { + request = &DescribeExportsRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DescribeExports") + + + return +} + +func NewDescribeExportsResponse() (response *DescribeExportsResponse) { + response = &DescribeExportsResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DescribeExports +// 本接口用于获取日志下载任务列表 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_TOPICCLOSED = "FailedOperation.TopicClosed" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// RESOURCENOTFOUND_EXPORTNOTEXIST = "ResourceNotFound.ExportNotExist" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeExports(request *DescribeExportsRequest) (response *DescribeExportsResponse, err error) { + return c.DescribeExportsWithContext(context.Background(), request) +} + +// DescribeExports +// 本接口用于获取日志下载任务列表 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_TOPICCLOSED = "FailedOperation.TopicClosed" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// RESOURCENOTFOUND_EXPORTNOTEXIST = "ResourceNotFound.ExportNotExist" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeExportsWithContext(ctx context.Context, request *DescribeExportsRequest) (response *DescribeExportsResponse, err error) { + if request == nil { + request = NewDescribeExportsRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeExports") + + if c.GetCredential() == nil { + return nil, errors.New("DescribeExports require credential") + } + + request.SetContext(ctx) + + response = NewDescribeExportsResponse() + err = c.Send(request, response) + return +} + func NewDescribeFindDomainListRequest() (request *DescribeFindDomainListRequest) { request = &DescribeFindDomainListRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -4374,6 +5004,7 @@ func (c *Client) DescribeFindDomainListWithContext(ctx context.Context, request if request == nil { request = NewDescribeFindDomainListRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeFindDomainList") if c.GetCredential() == nil { return nil, errors.New("DescribeFindDomainList require credential") @@ -4435,6 +5066,7 @@ func (c *Client) DescribeFlowTrendWithContext(ctx context.Context, request *Desc if request == nil { request = NewDescribeFlowTrendRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeFlowTrend") if c.GetCredential() == nil { return nil, errors.New("DescribeFlowTrend require credential") @@ -4492,6 +5124,7 @@ func (c *Client) DescribeHistogramWithContext(ctx context.Context, request *Desc if request == nil { request = NewDescribeHistogramRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeHistogram") if c.GetCredential() == nil { return nil, errors.New("DescribeHistogram require credential") @@ -4565,6 +5198,7 @@ func (c *Client) DescribeHostWithContext(ctx context.Context, request *DescribeH if request == nil { request = NewDescribeHostRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeHost") if c.GetCredential() == nil { return nil, errors.New("DescribeHost require credential") @@ -4638,6 +5272,7 @@ func (c *Client) DescribeHostLimitWithContext(ctx context.Context, request *Desc if request == nil { request = NewDescribeHostLimitRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeHostLimit") if c.GetCredential() == nil { return nil, errors.New("DescribeHostLimit require credential") @@ -4711,6 +5346,7 @@ func (c *Client) DescribeHostsWithContext(ctx context.Context, request *Describe if request == nil { request = NewDescribeHostsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeHosts") if c.GetCredential() == nil { return nil, errors.New("DescribeHosts require credential") @@ -4798,6 +5434,7 @@ func (c *Client) DescribeInstancesWithContext(ctx context.Context, request *Desc if request == nil { request = NewDescribeInstancesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeInstances") if c.GetCredential() == nil { return nil, errors.New("DescribeInstances require credential") @@ -4853,6 +5490,7 @@ func (c *Client) DescribeIpAccessControlWithContext(ctx context.Context, request if request == nil { request = NewDescribeIpAccessControlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeIpAccessControl") if c.GetCredential() == nil { return nil, errors.New("DescribeIpAccessControl require credential") @@ -4906,6 +5544,7 @@ func (c *Client) DescribeIpHitItemsWithContext(ctx context.Context, request *Des if request == nil { request = NewDescribeIpHitItemsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeIpHitItems") if c.GetCredential() == nil { return nil, errors.New("DescribeIpHitItems require credential") @@ -4918,6 +5557,96 @@ func (c *Client) DescribeIpHitItemsWithContext(ctx context.Context, request *Des return } +func NewDescribeLogHistogramRequest() (request *DescribeLogHistogramRequest) { + request = &DescribeLogHistogramRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DescribeLogHistogram") + + + return +} + +func NewDescribeLogHistogramResponse() (response *DescribeLogHistogramResponse) { + response = &DescribeLogHistogramResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DescribeLogHistogram +// 本接口用于构建日志数量直方图 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CLSRESOURCESNOTFOUND = "FailedOperation.CLSResourcesNotFound" +// FAILEDOPERATION_INVALIDCONTEXT = "FailedOperation.InvalidContext" +// FAILEDOPERATION_QUERYERROR = "FailedOperation.QueryError" +// FAILEDOPERATION_SEARCHTIMEOUT = "FailedOperation.SearchTimeout" +// FAILEDOPERATION_SYNTAXERROR = "FailedOperation.SyntaxError" +// FAILEDOPERATION_TAGQPSLIMIT = "FailedOperation.TagQpsLimit" +// FAILEDOPERATION_TOPICISOLATED = "FailedOperation.TopicIsolated" +// INTERNALERROR = "InternalError" +// INTERNALERROR_SEARCHERROR = "InternalError.SearchError" +// INTERNALERROR_SEARCHFAILED = "InternalError.SearchFailed" +// INTERNALERROR_SERVERBUSY = "InternalError.ServerBusy" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_LOGSEARCH = "LimitExceeded.LogSearch" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// OPERATIONDENIED_NEWSYNTAXNOTSUPPORTED = "OperationDenied.NewSyntaxNotSupported" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +func (c *Client) DescribeLogHistogram(request *DescribeLogHistogramRequest) (response *DescribeLogHistogramResponse, err error) { + return c.DescribeLogHistogramWithContext(context.Background(), request) +} + +// DescribeLogHistogram +// 本接口用于构建日志数量直方图 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CLSRESOURCESNOTFOUND = "FailedOperation.CLSResourcesNotFound" +// FAILEDOPERATION_INVALIDCONTEXT = "FailedOperation.InvalidContext" +// FAILEDOPERATION_QUERYERROR = "FailedOperation.QueryError" +// FAILEDOPERATION_SEARCHTIMEOUT = "FailedOperation.SearchTimeout" +// FAILEDOPERATION_SYNTAXERROR = "FailedOperation.SyntaxError" +// FAILEDOPERATION_TAGQPSLIMIT = "FailedOperation.TagQpsLimit" +// FAILEDOPERATION_TOPICISOLATED = "FailedOperation.TopicIsolated" +// INTERNALERROR = "InternalError" +// INTERNALERROR_SEARCHERROR = "InternalError.SearchError" +// INTERNALERROR_SEARCHFAILED = "InternalError.SearchFailed" +// INTERNALERROR_SERVERBUSY = "InternalError.ServerBusy" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_LOGSEARCH = "LimitExceeded.LogSearch" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// OPERATIONDENIED_NEWSYNTAXNOTSUPPORTED = "OperationDenied.NewSyntaxNotSupported" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +func (c *Client) DescribeLogHistogramWithContext(ctx context.Context, request *DescribeLogHistogramRequest) (response *DescribeLogHistogramResponse, err error) { + if request == nil { + request = NewDescribeLogHistogramRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeLogHistogram") + + if c.GetCredential() == nil { + return nil, errors.New("DescribeLogHistogram require credential") + } + + request.SetContext(ctx) + + response = NewDescribeLogHistogramResponse() + err = c.Send(request, response) + return +} + func NewDescribeModuleStatusRequest() (request *DescribeModuleStatusRequest) { request = &DescribeModuleStatusRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -4959,6 +5688,7 @@ func (c *Client) DescribeModuleStatusWithContext(ctx context.Context, request *D if request == nil { request = NewDescribeModuleStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeModuleStatus") if c.GetCredential() == nil { return nil, errors.New("DescribeModuleStatus require credential") @@ -5012,6 +5742,7 @@ func (c *Client) DescribeObjectsWithContext(ctx context.Context, request *Descri if request == nil { request = NewDescribeObjectsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeObjects") if c.GetCredential() == nil { return nil, errors.New("DescribeObjects require credential") @@ -5024,32 +5755,86 @@ func (c *Client) DescribeObjectsWithContext(ctx context.Context, request *Descri return } -func NewDescribePeakPointsRequest() (request *DescribePeakPointsRequest) { - request = &DescribePeakPointsRequest{ +func NewDescribeOwaspRuleTypesRequest() (request *DescribeOwaspRuleTypesRequest) { + request = &DescribeOwaspRuleTypesRequest{ BaseRequest: &tchttp.BaseRequest{}, } - request.Init().WithApiInfo("waf", APIVersion, "DescribePeakPoints") + request.Init().WithApiInfo("waf", APIVersion, "DescribeOwaspRuleTypes") return } -func NewDescribePeakPointsResponse() (response *DescribePeakPointsResponse) { - response = &DescribePeakPointsResponse{ +func NewDescribeOwaspRuleTypesResponse() (response *DescribeOwaspRuleTypesResponse) { + response = &DescribeOwaspRuleTypesResponse{ BaseResponse: &tchttp.BaseResponse{}, } return } -// DescribePeakPoints -// 查询业务和攻击概要趋势 +// DescribeOwaspRuleTypes +// 查询规则引擎的规则类型列表 +// +// 可能返回的错误码: +// INTERNALERROR_UNKNOWN = "InternalError.Unknown" +// INVALIDPARAMETERVALUE_INVALIDREQUEST = "InvalidParameterValue.InvalidRequest" +// RESOURCENOTFOUND_NOTFOUND = "ResourceNotFound.NotFound" +func (c *Client) DescribeOwaspRuleTypes(request *DescribeOwaspRuleTypesRequest) (response *DescribeOwaspRuleTypesResponse, err error) { + return c.DescribeOwaspRuleTypesWithContext(context.Background(), request) +} + +// DescribeOwaspRuleTypes +// 查询规则引擎的规则类型列表 +// +// 可能返回的错误码: +// INTERNALERROR_UNKNOWN = "InternalError.Unknown" +// INVALIDPARAMETERVALUE_INVALIDREQUEST = "InvalidParameterValue.InvalidRequest" +// RESOURCENOTFOUND_NOTFOUND = "ResourceNotFound.NotFound" +func (c *Client) DescribeOwaspRuleTypesWithContext(ctx context.Context, request *DescribeOwaspRuleTypesRequest) (response *DescribeOwaspRuleTypesResponse, err error) { + if request == nil { + request = NewDescribeOwaspRuleTypesRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeOwaspRuleTypes") + + if c.GetCredential() == nil { + return nil, errors.New("DescribeOwaspRuleTypes require credential") + } + + request.SetContext(ctx) + + response = NewDescribeOwaspRuleTypesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeOwaspRulesRequest() (request *DescribeOwaspRulesRequest) { + request = &DescribeOwaspRulesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DescribeOwaspRules") + + + return +} + +func NewDescribeOwaspRulesResponse() (response *DescribeOwaspRulesResponse) { + response = &DescribeOwaspRulesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DescribeOwaspRules +// 查询规则引擎的规则列表 // // 可能返回的错误码: // AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" // FAILEDOPERATION = "FailedOperation" -// FAILEDOPERATION_CLSINTERNALERROR = "FailedOperation.CLSInternalError" // INTERNALERROR = "InternalError" // INVALIDPARAMETER = "InvalidParameter" // INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" @@ -5067,12 +5852,190 @@ func NewDescribePeakPointsResponse() (response *DescribePeakPointsResponse) { // UNAUTHORIZEDOPERATION = "UnauthorizedOperation" // UNKNOWNPARAMETER = "UnknownParameter" // UNSUPPORTEDOPERATION = "UnsupportedOperation" -func (c *Client) DescribePeakPoints(request *DescribePeakPointsRequest) (response *DescribePeakPointsResponse, err error) { - return c.DescribePeakPointsWithContext(context.Background(), request) +func (c *Client) DescribeOwaspRules(request *DescribeOwaspRulesRequest) (response *DescribeOwaspRulesResponse, err error) { + return c.DescribeOwaspRulesWithContext(context.Background(), request) } -// DescribePeakPoints -// 查询业务和攻击概要趋势 +// DescribeOwaspRules +// 查询规则引擎的规则列表 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeOwaspRulesWithContext(ctx context.Context, request *DescribeOwaspRulesRequest) (response *DescribeOwaspRulesResponse, err error) { + if request == nil { + request = NewDescribeOwaspRulesRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeOwaspRules") + + if c.GetCredential() == nil { + return nil, errors.New("DescribeOwaspRules require credential") + } + + request.SetContext(ctx) + + response = NewDescribeOwaspRulesResponse() + err = c.Send(request, response) + return +} + +func NewDescribeOwaspWhiteRulesRequest() (request *DescribeOwaspWhiteRulesRequest) { + request = &DescribeOwaspWhiteRulesRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DescribeOwaspWhiteRules") + + + return +} + +func NewDescribeOwaspWhiteRulesResponse() (response *DescribeOwaspWhiteRulesResponse) { + response = &DescribeOwaspWhiteRulesResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DescribeOwaspWhiteRules +// 获取规则引擎白名单列表 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeOwaspWhiteRules(request *DescribeOwaspWhiteRulesRequest) (response *DescribeOwaspWhiteRulesResponse, err error) { + return c.DescribeOwaspWhiteRulesWithContext(context.Background(), request) +} + +// DescribeOwaspWhiteRules +// 获取规则引擎白名单列表 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeOwaspWhiteRulesWithContext(ctx context.Context, request *DescribeOwaspWhiteRulesRequest) (response *DescribeOwaspWhiteRulesResponse, err error) { + if request == nil { + request = NewDescribeOwaspWhiteRulesRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeOwaspWhiteRules") + + if c.GetCredential() == nil { + return nil, errors.New("DescribeOwaspWhiteRules require credential") + } + + request.SetContext(ctx) + + response = NewDescribeOwaspWhiteRulesResponse() + err = c.Send(request, response) + return +} + +func NewDescribePeakPointsRequest() (request *DescribePeakPointsRequest) { + request = &DescribePeakPointsRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DescribePeakPoints") + + + return +} + +func NewDescribePeakPointsResponse() (response *DescribePeakPointsResponse) { + response = &DescribePeakPointsResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DescribePeakPoints +// 查询业务和攻击概要趋势 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CLSINTERNALERROR = "FailedOperation.CLSInternalError" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribePeakPoints(request *DescribePeakPointsRequest) (response *DescribePeakPointsResponse, err error) { + return c.DescribePeakPointsWithContext(context.Background(), request) +} + +// DescribePeakPoints +// 查询业务和攻击概要趋势 // // 可能返回的错误码: // AUTHFAILURE = "AuthFailure" @@ -5099,6 +6062,7 @@ func (c *Client) DescribePeakPointsWithContext(ctx context.Context, request *Des if request == nil { request = NewDescribePeakPointsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribePeakPoints") if c.GetCredential() == nil { return nil, errors.New("DescribePeakPoints require credential") @@ -5186,6 +6150,7 @@ func (c *Client) DescribePeakValueWithContext(ctx context.Context, request *Desc if request == nil { request = NewDescribePeakValueRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribePeakValue") if c.GetCredential() == nil { return nil, errors.New("DescribePeakValue require credential") @@ -5237,6 +6202,7 @@ func (c *Client) DescribePolicyStatusWithContext(ctx context.Context, request *D if request == nil { request = NewDescribePolicyStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribePolicyStatus") if c.GetCredential() == nil { return nil, errors.New("DescribePolicyStatus require credential") @@ -5286,6 +6252,7 @@ func (c *Client) DescribePortsWithContext(ctx context.Context, request *Describe if request == nil { request = NewDescribePortsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribePorts") if c.GetCredential() == nil { return nil, errors.New("DescribePorts require credential") @@ -5369,6 +6336,7 @@ func (c *Client) DescribePostCKafkaFlowsWithContext(ctx context.Context, request if request == nil { request = NewDescribePostCKafkaFlowsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribePostCKafkaFlows") if c.GetCredential() == nil { return nil, errors.New("DescribePostCKafkaFlows require credential") @@ -5452,6 +6420,7 @@ func (c *Client) DescribePostCLSFlowsWithContext(ctx context.Context, request *D if request == nil { request = NewDescribePostCLSFlowsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribePostCLSFlows") if c.GetCredential() == nil { return nil, errors.New("DescribePostCLSFlows require credential") @@ -5535,6 +6504,7 @@ func (c *Client) DescribeProtectionModesWithContext(ctx context.Context, request if request == nil { request = NewDescribeProtectionModesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeProtectionModes") if c.GetCredential() == nil { return nil, errors.New("DescribeProtectionModes require credential") @@ -5588,6 +6558,7 @@ func (c *Client) DescribeRuleLimitWithContext(ctx context.Context, request *Desc if request == nil { request = NewDescribeRuleLimitRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeRuleLimit") if c.GetCredential() == nil { return nil, errors.New("DescribeRuleLimit require credential") @@ -5637,6 +6608,7 @@ func (c *Client) DescribeScanIpWithContext(ctx context.Context, request *Describ if request == nil { request = NewDescribeScanIpRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeScanIp") if c.GetCredential() == nil { return nil, errors.New("DescribeScanIp require credential") @@ -5688,6 +6660,7 @@ func (c *Client) DescribeSessionWithContext(ctx context.Context, request *Descri if request == nil { request = NewDescribeSessionRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeSession") if c.GetCredential() == nil { return nil, errors.New("DescribeSession require credential") @@ -5737,6 +6710,7 @@ func (c *Client) DescribeSpartaProtectionInfoWithContext(ctx context.Context, re if request == nil { request = NewDescribeSpartaProtectionInfoRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeSpartaProtectionInfo") if c.GetCredential() == nil { return nil, errors.New("DescribeSpartaProtectionInfo require credential") @@ -5822,6 +6796,7 @@ func (c *Client) DescribeTlsVersionWithContext(ctx context.Context, request *Des if request == nil { request = NewDescribeTlsVersionRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeTlsVersion") if c.GetCredential() == nil { return nil, errors.New("DescribeTlsVersion require credential") @@ -5875,6 +6850,7 @@ func (c *Client) DescribeTopAttackDomainWithContext(ctx context.Context, request if request == nil { request = NewDescribeTopAttackDomainRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeTopAttackDomain") if c.GetCredential() == nil { return nil, errors.New("DescribeTopAttackDomain require credential") @@ -5887,6 +6863,86 @@ func (c *Client) DescribeTopAttackDomainWithContext(ctx context.Context, request return } +func NewDescribeTopicsRequest() (request *DescribeTopicsRequest) { + request = &DescribeTopicsRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "DescribeTopics") + + + return +} + +func NewDescribeTopicsResponse() (response *DescribeTopicsResponse) { + response = &DescribeTopicsResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// DescribeTopics +// 本接口用于获取日志主题列表,支持分页 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CLSRESOURCESNOTFOUND = "FailedOperation.CLSResourcesNotFound" +// FAILEDOPERATION_TAGQPSLIMIT = "FailedOperation.TagQpsLimit" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACLFAILED = "OperationDenied.ACLFailed" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// OPERATIONDENIED_ANALYSISSWITCHCLOSE = "OperationDenied.AnalysisSwitchClose" +// RESOURCENOTFOUND_LOGSETNOTEXIST = "ResourceNotFound.LogsetNotExist" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeTopics(request *DescribeTopicsRequest) (response *DescribeTopicsResponse, err error) { + return c.DescribeTopicsWithContext(context.Background(), request) +} + +// DescribeTopics +// 本接口用于获取日志主题列表,支持分页 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CLSRESOURCESNOTFOUND = "FailedOperation.CLSResourcesNotFound" +// FAILEDOPERATION_TAGQPSLIMIT = "FailedOperation.TagQpsLimit" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACLFAILED = "OperationDenied.ACLFailed" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// OPERATIONDENIED_ANALYSISSWITCHCLOSE = "OperationDenied.AnalysisSwitchClose" +// RESOURCENOTFOUND_LOGSETNOTEXIST = "ResourceNotFound.LogsetNotExist" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) DescribeTopicsWithContext(ctx context.Context, request *DescribeTopicsRequest) (response *DescribeTopicsResponse, err error) { + if request == nil { + request = NewDescribeTopicsRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeTopics") + + if c.GetCredential() == nil { + return nil, errors.New("DescribeTopics require credential") + } + + request.SetContext(ctx) + + response = NewDescribeTopicsResponse() + err = c.Send(request, response) + return +} + func NewDescribeUserCdcClbWafRegionsRequest() (request *DescribeUserCdcClbWafRegionsRequest) { request = &DescribeUserCdcClbWafRegionsRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -5911,8 +6967,21 @@ func NewDescribeUserCdcClbWafRegionsResponse() (response *DescribeUserCdcClbWafR // // 可能返回的错误码: // FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CLSRESOURCESNOTFOUND = "FailedOperation.CLSResourcesNotFound" +// FAILEDOPERATION_TAGQPSLIMIT = "FailedOperation.TagQpsLimit" // INTERNALERROR = "InternalError" // INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACLFAILED = "OperationDenied.ACLFailed" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// OPERATIONDENIED_ANALYSISSWITCHCLOSE = "OperationDenied.AnalysisSwitchClose" +// RESOURCENOTFOUND_LOGSETNOTEXIST = "ResourceNotFound.LogsetNotExist" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" func (c *Client) DescribeUserCdcClbWafRegions(request *DescribeUserCdcClbWafRegionsRequest) (response *DescribeUserCdcClbWafRegionsResponse, err error) { return c.DescribeUserCdcClbWafRegionsWithContext(context.Background(), request) } @@ -5922,12 +6991,26 @@ func (c *Client) DescribeUserCdcClbWafRegions(request *DescribeUserCdcClbWafRegi // // 可能返回的错误码: // FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CLSRESOURCESNOTFOUND = "FailedOperation.CLSResourcesNotFound" +// FAILEDOPERATION_TAGQPSLIMIT = "FailedOperation.TagQpsLimit" // INTERNALERROR = "InternalError" // INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACLFAILED = "OperationDenied.ACLFailed" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// OPERATIONDENIED_ANALYSISSWITCHCLOSE = "OperationDenied.AnalysisSwitchClose" +// RESOURCENOTFOUND_LOGSETNOTEXIST = "ResourceNotFound.LogsetNotExist" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" func (c *Client) DescribeUserCdcClbWafRegionsWithContext(ctx context.Context, request *DescribeUserCdcClbWafRegionsRequest) (response *DescribeUserCdcClbWafRegionsResponse, err error) { if request == nil { request = NewDescribeUserCdcClbWafRegionsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeUserCdcClbWafRegions") if c.GetCredential() == nil { return nil, errors.New("DescribeUserCdcClbWafRegions require credential") @@ -6005,6 +7088,7 @@ func (c *Client) DescribeUserClbWafRegionsWithContext(ctx context.Context, reque if request == nil { request = NewDescribeUserClbWafRegionsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeUserClbWafRegions") if c.GetCredential() == nil { return nil, errors.New("DescribeUserClbWafRegions require credential") @@ -6092,6 +7176,7 @@ func (c *Client) DescribeUserDomainInfoWithContext(ctx context.Context, request if request == nil { request = NewDescribeUserDomainInfoRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeUserDomainInfo") if c.GetCredential() == nil { return nil, errors.New("DescribeUserDomainInfo require credential") @@ -6155,6 +7240,7 @@ func (c *Client) DescribeUserLevelWithContext(ctx context.Context, request *Desc if request == nil { request = NewDescribeUserLevelRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeUserLevel") if c.GetCredential() == nil { return nil, errors.New("DescribeUserLevel require credential") @@ -6218,6 +7304,7 @@ func (c *Client) DescribeUserSignatureClassWithContext(ctx context.Context, requ if request == nil { request = NewDescribeUserSignatureClassRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeUserSignatureClass") if c.GetCredential() == nil { return nil, errors.New("DescribeUserSignatureClass require credential") @@ -6305,6 +7392,7 @@ func (c *Client) DescribeUserSignatureRuleWithContext(ctx context.Context, reque if request == nil { request = NewDescribeUserSignatureRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeUserSignatureRule") if c.GetCredential() == nil { return nil, errors.New("DescribeUserSignatureRule require credential") @@ -6392,6 +7480,7 @@ func (c *Client) DescribeUserSignatureRuleV2WithContext(ctx context.Context, req if request == nil { request = NewDescribeUserSignatureRuleV2Request() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeUserSignatureRuleV2") if c.GetCredential() == nil { return nil, errors.New("DescribeUserSignatureRuleV2 require credential") @@ -6479,6 +7568,7 @@ func (c *Client) DescribeVipInfoWithContext(ctx context.Context, request *Descri if request == nil { request = NewDescribeVipInfoRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeVipInfo") if c.GetCredential() == nil { return nil, errors.New("DescribeVipInfo require credential") @@ -6530,6 +7620,7 @@ func (c *Client) DescribeWafAutoDenyRulesWithContext(ctx context.Context, reques if request == nil { request = NewDescribeWafAutoDenyRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeWafAutoDenyRules") if c.GetCredential() == nil { return nil, errors.New("DescribeWafAutoDenyRules require credential") @@ -6589,6 +7680,7 @@ func (c *Client) DescribeWafAutoDenyStatusWithContext(ctx context.Context, reque if request == nil { request = NewDescribeWafAutoDenyStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeWafAutoDenyStatus") if c.GetCredential() == nil { return nil, errors.New("DescribeWafAutoDenyStatus require credential") @@ -6642,6 +7734,7 @@ func (c *Client) DescribeWafThreatenIntelligenceWithContext(ctx context.Context, if request == nil { request = NewDescribeWafThreatenIntelligenceRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeWafThreatenIntelligence") if c.GetCredential() == nil { return nil, errors.New("DescribeWafThreatenIntelligence require credential") @@ -6717,6 +7810,7 @@ func (c *Client) DescribeWebshellStatusWithContext(ctx context.Context, request if request == nil { request = NewDescribeWebshellStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DescribeWebshellStatus") if c.GetCredential() == nil { return nil, errors.New("DescribeWebshellStatus require credential") @@ -6800,6 +7894,7 @@ func (c *Client) DestroyPostCKafkaFlowWithContext(ctx context.Context, request * if request == nil { request = NewDestroyPostCKafkaFlowRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DestroyPostCKafkaFlow") if c.GetCredential() == nil { return nil, errors.New("DestroyPostCKafkaFlow require credential") @@ -6883,6 +7978,7 @@ func (c *Client) DestroyPostCLSFlowWithContext(ctx context.Context, request *Des if request == nil { request = NewDestroyPostCLSFlowRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "DestroyPostCLSFlow") if c.GetCredential() == nil { return nil, errors.New("DestroyPostCLSFlow require credential") @@ -6932,6 +8028,7 @@ func (c *Client) FreshAntiFakeUrlWithContext(ctx context.Context, request *Fresh if request == nil { request = NewFreshAntiFakeUrlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "FreshAntiFakeUrl") if c.GetCredential() == nil { return nil, errors.New("FreshAntiFakeUrl require credential") @@ -7021,6 +8118,7 @@ func (c *Client) GenerateDealsAndPayNewWithContext(ctx context.Context, request if request == nil { request = NewGenerateDealsAndPayNewRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "GenerateDealsAndPayNew") if c.GetCredential() == nil { return nil, errors.New("GenerateDealsAndPayNew require credential") @@ -7076,6 +8174,7 @@ func (c *Client) GetAttackDownloadRecordsWithContext(ctx context.Context, reques if request == nil { request = NewGetAttackDownloadRecordsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "GetAttackDownloadRecords") if c.GetCredential() == nil { return nil, errors.New("GetAttackDownloadRecords require credential") @@ -7141,6 +8240,7 @@ func (c *Client) GetAttackHistogramWithContext(ctx context.Context, request *Get if request == nil { request = NewGetAttackHistogramRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "GetAttackHistogram") if c.GetCredential() == nil { return nil, errors.New("GetAttackHistogram require credential") @@ -7206,6 +8306,7 @@ func (c *Client) GetAttackTotalCountWithContext(ctx context.Context, request *Ge if request == nil { request = NewGetAttackTotalCountRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "GetAttackTotalCount") if c.GetCredential() == nil { return nil, errors.New("GetAttackTotalCount require credential") @@ -7271,6 +8372,7 @@ func (c *Client) GetInstanceQpsLimitWithContext(ctx context.Context, request *Ge if request == nil { request = NewGetInstanceQpsLimitRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "GetInstanceQpsLimit") if c.GetCredential() == nil { return nil, errors.New("GetInstanceQpsLimit require credential") @@ -7336,6 +8438,7 @@ func (c *Client) ImportIpAccessControlWithContext(ctx context.Context, request * if request == nil { request = NewImportIpAccessControlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ImportIpAccessControl") if c.GetCredential() == nil { return nil, errors.New("ImportIpAccessControl require credential") @@ -7385,6 +8488,7 @@ func (c *Client) ModifyAntiFakeUrlWithContext(ctx context.Context, request *Modi if request == nil { request = NewModifyAntiFakeUrlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyAntiFakeUrl") if c.GetCredential() == nil { return nil, errors.New("ModifyAntiFakeUrl require credential") @@ -7438,6 +8542,7 @@ func (c *Client) ModifyAntiFakeUrlStatusWithContext(ctx context.Context, request if request == nil { request = NewModifyAntiFakeUrlStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyAntiFakeUrlStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyAntiFakeUrlStatus require credential") @@ -7487,6 +8592,7 @@ func (c *Client) ModifyAntiInfoLeakRuleStatusWithContext(ctx context.Context, re if request == nil { request = NewModifyAntiInfoLeakRuleStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyAntiInfoLeakRuleStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyAntiInfoLeakRuleStatus require credential") @@ -7536,6 +8642,7 @@ func (c *Client) ModifyAntiInfoLeakRulesWithContext(ctx context.Context, request if request == nil { request = NewModifyAntiInfoLeakRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyAntiInfoLeakRules") if c.GetCredential() == nil { return nil, errors.New("ModifyAntiInfoLeakRules require credential") @@ -7585,6 +8692,7 @@ func (c *Client) ModifyApiAnalyzeStatusWithContext(ctx context.Context, request if request == nil { request = NewModifyApiAnalyzeStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyApiAnalyzeStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyApiAnalyzeStatus require credential") @@ -7634,6 +8742,7 @@ func (c *Client) ModifyApiSecEventChangeWithContext(ctx context.Context, request if request == nil { request = NewModifyApiSecEventChangeRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyApiSecEventChange") if c.GetCredential() == nil { return nil, errors.New("ModifyApiSecEventChange require credential") @@ -7709,6 +8818,7 @@ func (c *Client) ModifyAreaBanAreasWithContext(ctx context.Context, request *Mod if request == nil { request = NewModifyAreaBanAreasRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyAreaBanAreas") if c.GetCredential() == nil { return nil, errors.New("ModifyAreaBanAreas require credential") @@ -7786,6 +8896,7 @@ func (c *Client) ModifyAreaBanRuleWithContext(ctx context.Context, request *Modi if request == nil { request = NewModifyAreaBanRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyAreaBanRule") if c.GetCredential() == nil { return nil, errors.New("ModifyAreaBanRule require credential") @@ -7835,6 +8946,7 @@ func (c *Client) ModifyAreaBanStatusWithContext(ctx context.Context, request *Mo if request == nil { request = NewModifyAreaBanStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyAreaBanStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyAreaBanStatus require credential") @@ -7924,6 +9036,7 @@ func (c *Client) ModifyAttackWhiteRuleWithContext(ctx context.Context, request * if request == nil { request = NewModifyAttackWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyAttackWhiteRule") if c.GetCredential() == nil { return nil, errors.New("ModifyAttackWhiteRule require credential") @@ -7936,6 +9049,66 @@ func (c *Client) ModifyAttackWhiteRuleWithContext(ctx context.Context, request * return } +func NewModifyBatchIpAccessControlRequest() (request *ModifyBatchIpAccessControlRequest) { + request = &ModifyBatchIpAccessControlRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "ModifyBatchIpAccessControl") + + + return +} + +func NewModifyBatchIpAccessControlResponse() (response *ModifyBatchIpAccessControlResponse) { + response = &ModifyBatchIpAccessControlResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyBatchIpAccessControl +// 批量IP黑白名单新增接口 +// +// 可能返回的错误码: +// FAILEDOPERATION_THENUMBEROFADDEDBLACKANDWHITELISTEXCEEDSTHEUPPERLIMIT = "FailedOperation.TheNumberOfAddedBlackAndWhiteListExceedsTheUpperLimit" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// LIMITEXCEEDED = "LimitExceeded" +// LIMITEXCEEDED_SPECIFICATIONERR = "LimitExceeded.SpecificationErr" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) ModifyBatchIpAccessControl(request *ModifyBatchIpAccessControlRequest) (response *ModifyBatchIpAccessControlResponse, err error) { + return c.ModifyBatchIpAccessControlWithContext(context.Background(), request) +} + +// ModifyBatchIpAccessControl +// 批量IP黑白名单新增接口 +// +// 可能返回的错误码: +// FAILEDOPERATION_THENUMBEROFADDEDBLACKANDWHITELISTEXCEEDSTHEUPPERLIMIT = "FailedOperation.TheNumberOfAddedBlackAndWhiteListExceedsTheUpperLimit" +// INTERNALERROR = "InternalError" +// INTERNALERROR_DBERR = "InternalError.DBErr" +// LIMITEXCEEDED = "LimitExceeded" +// LIMITEXCEEDED_SPECIFICATIONERR = "LimitExceeded.SpecificationErr" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) ModifyBatchIpAccessControlWithContext(ctx context.Context, request *ModifyBatchIpAccessControlRequest) (response *ModifyBatchIpAccessControlResponse, err error) { + if request == nil { + request = NewModifyBatchIpAccessControlRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyBatchIpAccessControl") + + if c.GetCredential() == nil { + return nil, errors.New("ModifyBatchIpAccessControl require credential") + } + + request.SetContext(ctx) + + response = NewModifyBatchIpAccessControlResponse() + err = c.Send(request, response) + return +} + func NewModifyBotSceneStatusRequest() (request *ModifyBotSceneStatusRequest) { request = &ModifyBotSceneStatusRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -7979,6 +9152,7 @@ func (c *Client) ModifyBotSceneStatusWithContext(ctx context.Context, request *M if request == nil { request = NewModifyBotSceneStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyBotSceneStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyBotSceneStatus require credential") @@ -8030,6 +9204,7 @@ func (c *Client) ModifyBotSceneUCBRuleWithContext(ctx context.Context, request * if request == nil { request = NewModifyBotSceneUCBRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyBotSceneUCBRule") if c.GetCredential() == nil { return nil, errors.New("ModifyBotSceneUCBRule require credential") @@ -8083,6 +9258,7 @@ func (c *Client) ModifyBotStatusWithContext(ctx context.Context, request *Modify if request == nil { request = NewModifyBotStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyBotStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyBotStatus require credential") @@ -8164,6 +9340,7 @@ func (c *Client) ModifyCustomRuleWithContext(ctx context.Context, request *Modif if request == nil { request = NewModifyCustomRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyCustomRule") if c.GetCredential() == nil { return nil, errors.New("ModifyCustomRule require credential") @@ -8217,6 +9394,7 @@ func (c *Client) ModifyCustomRuleStatusWithContext(ctx context.Context, request if request == nil { request = NewModifyCustomRuleStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyCustomRuleStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyCustomRuleStatus require credential") @@ -8272,6 +9450,7 @@ func (c *Client) ModifyCustomWhiteRuleWithContext(ctx context.Context, request * if request == nil { request = NewModifyCustomWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyCustomWhiteRule") if c.GetCredential() == nil { return nil, errors.New("ModifyCustomWhiteRule require credential") @@ -8325,6 +9504,7 @@ func (c *Client) ModifyCustomWhiteRuleStatusWithContext(ctx context.Context, req if request == nil { request = NewModifyCustomWhiteRuleStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyCustomWhiteRuleStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyCustomWhiteRuleStatus require credential") @@ -8414,6 +9594,7 @@ func (c *Client) ModifyDomainIpv6StatusWithContext(ctx context.Context, request if request == nil { request = NewModifyDomainIpv6StatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyDomainIpv6Status") if c.GetCredential() == nil { return nil, errors.New("ModifyDomainIpv6Status require credential") @@ -8499,6 +9680,7 @@ func (c *Client) ModifyDomainPostActionWithContext(ctx context.Context, request if request == nil { request = NewModifyDomainPostActionRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyDomainPostAction") if c.GetCredential() == nil { return nil, errors.New("ModifyDomainPostAction require credential") @@ -8531,7 +9713,7 @@ func NewModifyDomainWhiteRuleResponse() (response *ModifyDomainWhiteRuleResponse } // ModifyDomainWhiteRule -// 更改某一条规则 +// 修改域名规则白名单 // // 可能返回的错误码: // FAILEDOPERATION = "FailedOperation" @@ -8544,7 +9726,7 @@ func (c *Client) ModifyDomainWhiteRule(request *ModifyDomainWhiteRuleRequest) (r } // ModifyDomainWhiteRule -// 更改某一条规则 +// 修改域名规则白名单 // // 可能返回的错误码: // FAILEDOPERATION = "FailedOperation" @@ -8556,6 +9738,7 @@ func (c *Client) ModifyDomainWhiteRuleWithContext(ctx context.Context, request * if request == nil { request = NewModifyDomainWhiteRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyDomainWhiteRule") if c.GetCredential() == nil { return nil, errors.New("ModifyDomainWhiteRule require credential") @@ -8645,6 +9828,7 @@ func (c *Client) ModifyDomainsCLSStatusWithContext(ctx context.Context, request if request == nil { request = NewModifyDomainsCLSStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyDomainsCLSStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyDomainsCLSStatus require credential") @@ -8677,7 +9861,7 @@ func NewModifyGenerateDealsResponse() (response *ModifyGenerateDealsResponse) { } // ModifyGenerateDeals -// 提供给clb等使用的waf实例下单接口,目前只支持clb旗舰版实例的下单,该接口会进行入参校验,然后调用是否为收购用户,然后调用计费接口下单。目前只支持预付费下单,计费侧接口:https://tcb.woa.com/magical-brush/docs/754661947 +// 提供给clb等使用的waf实例下单接口,目前只支持clb旗舰版实例的下单,该接口会进行入参校验,然后调用是否为收购用户,然后调用计费接口下单。目前只支持预付费下单 // // 可能返回的错误码: // AUTHFAILURE = "AuthFailure" @@ -8706,7 +9890,7 @@ func (c *Client) ModifyGenerateDeals(request *ModifyGenerateDealsRequest) (respo } // ModifyGenerateDeals -// 提供给clb等使用的waf实例下单接口,目前只支持clb旗舰版实例的下单,该接口会进行入参校验,然后调用是否为收购用户,然后调用计费接口下单。目前只支持预付费下单,计费侧接口:https://tcb.woa.com/magical-brush/docs/754661947 +// 提供给clb等使用的waf实例下单接口,目前只支持clb旗舰版实例的下单,该接口会进行入参校验,然后调用是否为收购用户,然后调用计费接口下单。目前只支持预付费下单 // // 可能返回的错误码: // AUTHFAILURE = "AuthFailure" @@ -8734,6 +9918,7 @@ func (c *Client) ModifyGenerateDealsWithContext(ctx context.Context, request *Mo if request == nil { request = NewModifyGenerateDealsRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyGenerateDeals") if c.GetCredential() == nil { return nil, errors.New("ModifyGenerateDeals require credential") @@ -8809,6 +9994,7 @@ func (c *Client) ModifyHostWithContext(ctx context.Context, request *ModifyHostR if request == nil { request = NewModifyHostRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyHost") if c.GetCredential() == nil { return nil, errors.New("ModifyHost require credential") @@ -8882,6 +10068,7 @@ func (c *Client) ModifyHostFlowModeWithContext(ctx context.Context, request *Mod if request == nil { request = NewModifyHostFlowModeRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyHostFlowMode") if c.GetCredential() == nil { return nil, errors.New("ModifyHostFlowMode require credential") @@ -8957,6 +10144,7 @@ func (c *Client) ModifyHostModeWithContext(ctx context.Context, request *ModifyH if request == nil { request = NewModifyHostModeRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyHostMode") if c.GetCredential() == nil { return nil, errors.New("ModifyHostMode require credential") @@ -9034,6 +10222,7 @@ func (c *Client) ModifyHostStatusWithContext(ctx context.Context, request *Modif if request == nil { request = NewModifyHostStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyHostStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyHostStatus require credential") @@ -9107,6 +10296,7 @@ func (c *Client) ModifyInstanceAttackLogPostWithContext(ctx context.Context, req if request == nil { request = NewModifyInstanceAttackLogPostRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyInstanceAttackLogPost") if c.GetCredential() == nil { return nil, errors.New("ModifyInstanceAttackLogPost require credential") @@ -9194,6 +10384,7 @@ func (c *Client) ModifyInstanceElasticModeWithContext(ctx context.Context, reque if request == nil { request = NewModifyInstanceElasticModeRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyInstanceElasticMode") if c.GetCredential() == nil { return nil, errors.New("ModifyInstanceElasticMode require credential") @@ -9253,6 +10444,7 @@ func (c *Client) ModifyInstanceNameWithContext(ctx context.Context, request *Mod if request == nil { request = NewModifyInstanceNameRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyInstanceName") if c.GetCredential() == nil { return nil, errors.New("ModifyInstanceName require credential") @@ -9312,6 +10504,7 @@ func (c *Client) ModifyInstanceQpsLimitWithContext(ctx context.Context, request if request == nil { request = NewModifyInstanceQpsLimitRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyInstanceQpsLimit") if c.GetCredential() == nil { return nil, errors.New("ModifyInstanceQpsLimit require credential") @@ -9399,6 +10592,7 @@ func (c *Client) ModifyInstanceRenewFlagWithContext(ctx context.Context, request if request == nil { request = NewModifyInstanceRenewFlagRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyInstanceRenewFlag") if c.GetCredential() == nil { return nil, errors.New("ModifyInstanceRenewFlag require credential") @@ -9458,6 +10652,7 @@ func (c *Client) ModifyIpAccessControlWithContext(ctx context.Context, request * if request == nil { request = NewModifyIpAccessControlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyIpAccessControl") if c.GetCredential() == nil { return nil, errors.New("ModifyIpAccessControl require credential") @@ -9507,6 +10702,7 @@ func (c *Client) ModifyModuleStatusWithContext(ctx context.Context, request *Mod if request == nil { request = NewModifyModuleStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyModuleStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyModuleStatus require credential") @@ -9564,6 +10760,7 @@ func (c *Client) ModifyObjectWithContext(ctx context.Context, request *ModifyObj if request == nil { request = NewModifyObjectRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyObject") if c.GetCredential() == nil { return nil, errors.New("ModifyObject require credential") @@ -9576,8 +10773,358 @@ func (c *Client) ModifyObjectWithContext(ctx context.Context, request *ModifyObj return } -func NewModifyProtectionStatusRequest() (request *ModifyProtectionStatusRequest) { - request = &ModifyProtectionStatusRequest{ +func NewModifyOwaspRuleStatusRequest() (request *ModifyOwaspRuleStatusRequest) { + request = &ModifyOwaspRuleStatusRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "ModifyOwaspRuleStatus") + + + return +} + +func NewModifyOwaspRuleStatusResponse() (response *ModifyOwaspRuleStatusResponse) { + response = &ModifyOwaspRuleStatusResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyOwaspRuleStatus +// 更新规则的开关 +// +// 可能返回的错误码: +// INTERNALERROR_DBERR = "InternalError.DBErr" +func (c *Client) ModifyOwaspRuleStatus(request *ModifyOwaspRuleStatusRequest) (response *ModifyOwaspRuleStatusResponse, err error) { + return c.ModifyOwaspRuleStatusWithContext(context.Background(), request) +} + +// ModifyOwaspRuleStatus +// 更新规则的开关 +// +// 可能返回的错误码: +// INTERNALERROR_DBERR = "InternalError.DBErr" +func (c *Client) ModifyOwaspRuleStatusWithContext(ctx context.Context, request *ModifyOwaspRuleStatusRequest) (response *ModifyOwaspRuleStatusResponse, err error) { + if request == nil { + request = NewModifyOwaspRuleStatusRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyOwaspRuleStatus") + + if c.GetCredential() == nil { + return nil, errors.New("ModifyOwaspRuleStatus require credential") + } + + request.SetContext(ctx) + + response = NewModifyOwaspRuleStatusResponse() + err = c.Send(request, response) + return +} + +func NewModifyOwaspRuleTypeActionRequest() (request *ModifyOwaspRuleTypeActionRequest) { + request = &ModifyOwaspRuleTypeActionRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "ModifyOwaspRuleTypeAction") + + + return +} + +func NewModifyOwaspRuleTypeActionResponse() (response *ModifyOwaspRuleTypeActionResponse) { + response = &ModifyOwaspRuleTypeActionResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyOwaspRuleTypeAction +// 更新规则类型的防护模式 +// +// 可能返回的错误码: +// INTERNALERROR_DBERR = "InternalError.DBErr" +func (c *Client) ModifyOwaspRuleTypeAction(request *ModifyOwaspRuleTypeActionRequest) (response *ModifyOwaspRuleTypeActionResponse, err error) { + return c.ModifyOwaspRuleTypeActionWithContext(context.Background(), request) +} + +// ModifyOwaspRuleTypeAction +// 更新规则类型的防护模式 +// +// 可能返回的错误码: +// INTERNALERROR_DBERR = "InternalError.DBErr" +func (c *Client) ModifyOwaspRuleTypeActionWithContext(ctx context.Context, request *ModifyOwaspRuleTypeActionRequest) (response *ModifyOwaspRuleTypeActionResponse, err error) { + if request == nil { + request = NewModifyOwaspRuleTypeActionRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyOwaspRuleTypeAction") + + if c.GetCredential() == nil { + return nil, errors.New("ModifyOwaspRuleTypeAction require credential") + } + + request.SetContext(ctx) + + response = NewModifyOwaspRuleTypeActionResponse() + err = c.Send(request, response) + return +} + +func NewModifyOwaspRuleTypeLevelRequest() (request *ModifyOwaspRuleTypeLevelRequest) { + request = &ModifyOwaspRuleTypeLevelRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "ModifyOwaspRuleTypeLevel") + + + return +} + +func NewModifyOwaspRuleTypeLevelResponse() (response *ModifyOwaspRuleTypeLevelResponse) { + response = &ModifyOwaspRuleTypeLevelResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyOwaspRuleTypeLevel +// 更新规则类型的防护等级 +// +// 可能返回的错误码: +// INTERNALERROR_DBERR = "InternalError.DBErr" +func (c *Client) ModifyOwaspRuleTypeLevel(request *ModifyOwaspRuleTypeLevelRequest) (response *ModifyOwaspRuleTypeLevelResponse, err error) { + return c.ModifyOwaspRuleTypeLevelWithContext(context.Background(), request) +} + +// ModifyOwaspRuleTypeLevel +// 更新规则类型的防护等级 +// +// 可能返回的错误码: +// INTERNALERROR_DBERR = "InternalError.DBErr" +func (c *Client) ModifyOwaspRuleTypeLevelWithContext(ctx context.Context, request *ModifyOwaspRuleTypeLevelRequest) (response *ModifyOwaspRuleTypeLevelResponse, err error) { + if request == nil { + request = NewModifyOwaspRuleTypeLevelRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyOwaspRuleTypeLevel") + + if c.GetCredential() == nil { + return nil, errors.New("ModifyOwaspRuleTypeLevel require credential") + } + + request.SetContext(ctx) + + response = NewModifyOwaspRuleTypeLevelResponse() + err = c.Send(request, response) + return +} + +func NewModifyOwaspRuleTypeStatusRequest() (request *ModifyOwaspRuleTypeStatusRequest) { + request = &ModifyOwaspRuleTypeStatusRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "ModifyOwaspRuleTypeStatus") + + + return +} + +func NewModifyOwaspRuleTypeStatusResponse() (response *ModifyOwaspRuleTypeStatusResponse) { + response = &ModifyOwaspRuleTypeStatusResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyOwaspRuleTypeStatus +// 更新规则类型的开关 +// +// 可能返回的错误码: +// INTERNALERROR_DBERR = "InternalError.DBErr" +func (c *Client) ModifyOwaspRuleTypeStatus(request *ModifyOwaspRuleTypeStatusRequest) (response *ModifyOwaspRuleTypeStatusResponse, err error) { + return c.ModifyOwaspRuleTypeStatusWithContext(context.Background(), request) +} + +// ModifyOwaspRuleTypeStatus +// 更新规则类型的开关 +// +// 可能返回的错误码: +// INTERNALERROR_DBERR = "InternalError.DBErr" +func (c *Client) ModifyOwaspRuleTypeStatusWithContext(ctx context.Context, request *ModifyOwaspRuleTypeStatusRequest) (response *ModifyOwaspRuleTypeStatusResponse, err error) { + if request == nil { + request = NewModifyOwaspRuleTypeStatusRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyOwaspRuleTypeStatus") + + if c.GetCredential() == nil { + return nil, errors.New("ModifyOwaspRuleTypeStatus require credential") + } + + request.SetContext(ctx) + + response = NewModifyOwaspRuleTypeStatusResponse() + err = c.Send(request, response) + return +} + +func NewModifyOwaspWhiteRuleRequest() (request *ModifyOwaspWhiteRuleRequest) { + request = &ModifyOwaspWhiteRuleRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "ModifyOwaspWhiteRule") + + + return +} + +func NewModifyOwaspWhiteRuleResponse() (response *ModifyOwaspWhiteRuleResponse) { + response = &ModifyOwaspWhiteRuleResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyOwaspWhiteRule +// 编辑规则引擎白名单 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// INVALIDPARAMETERVALUE_INVALIDREQUEST = "InvalidParameterValue.InvalidRequest" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) ModifyOwaspWhiteRule(request *ModifyOwaspWhiteRuleRequest) (response *ModifyOwaspWhiteRuleResponse, err error) { + return c.ModifyOwaspWhiteRuleWithContext(context.Background(), request) +} + +// ModifyOwaspWhiteRule +// 编辑规则引擎白名单 +// +// 可能返回的错误码: +// AUTHFAILURE = "AuthFailure" +// DRYRUNOPERATION = "DryRunOperation" +// FAILEDOPERATION = "FailedOperation" +// INTERNALERROR = "InternalError" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETER_INVALIDCERTIFICATE = "InvalidParameter.InvalidCertificate" +// INVALIDPARAMETER_QUERYCERTBYSSLIDFAILED = "InvalidParameter.QueryCertBySSLIDFailed" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// INVALIDPARAMETERVALUE_INVALIDREQUEST = "InvalidParameterValue.InvalidRequest" +// LIMITEXCEEDED = "LimitExceeded" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// REQUESTLIMITEXCEEDED = "RequestLimitExceeded" +// RESOURCEINUSE = "ResourceInUse" +// RESOURCEINSUFFICIENT = "ResourceInsufficient" +// RESOURCENOTFOUND = "ResourceNotFound" +// RESOURCEUNAVAILABLE = "ResourceUnavailable" +// RESOURCESSOLDOUT = "ResourcesSoldOut" +// UNAUTHORIZEDOPERATION = "UnauthorizedOperation" +// UNKNOWNPARAMETER = "UnknownParameter" +// UNSUPPORTEDOPERATION = "UnsupportedOperation" +func (c *Client) ModifyOwaspWhiteRuleWithContext(ctx context.Context, request *ModifyOwaspWhiteRuleRequest) (response *ModifyOwaspWhiteRuleResponse, err error) { + if request == nil { + request = NewModifyOwaspWhiteRuleRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyOwaspWhiteRule") + + if c.GetCredential() == nil { + return nil, errors.New("ModifyOwaspWhiteRule require credential") + } + + request.SetContext(ctx) + + response = NewModifyOwaspWhiteRuleResponse() + err = c.Send(request, response) + return +} + +func NewModifyProtectionLevelRequest() (request *ModifyProtectionLevelRequest) { + request = &ModifyProtectionLevelRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "ModifyProtectionLevel") + + + return +} + +func NewModifyProtectionLevelResponse() (response *ModifyProtectionLevelResponse) { + response = &ModifyProtectionLevelResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// ModifyProtectionLevel +// 更改防护等级 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_MYSQLDBOPERATIONFAILED = "FailedOperation.MysqlDBOperationFailed" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND = "ResourceNotFound" +// UNSUPPORTEDOPERATION_INVALIDREQUEST = "UnsupportedOperation.InvalidRequest" +func (c *Client) ModifyProtectionLevel(request *ModifyProtectionLevelRequest) (response *ModifyProtectionLevelResponse, err error) { + return c.ModifyProtectionLevelWithContext(context.Background(), request) +} + +// ModifyProtectionLevel +// 更改防护等级 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_MYSQLDBOPERATIONFAILED = "FailedOperation.MysqlDBOperationFailed" +// INVALIDPARAMETER = "InvalidParameter" +// INVALIDPARAMETERVALUE = "InvalidParameterValue" +// RESOURCENOTFOUND = "ResourceNotFound" +// UNSUPPORTEDOPERATION_INVALIDREQUEST = "UnsupportedOperation.InvalidRequest" +func (c *Client) ModifyProtectionLevelWithContext(ctx context.Context, request *ModifyProtectionLevelRequest) (response *ModifyProtectionLevelResponse, err error) { + if request == nil { + request = NewModifyProtectionLevelRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyProtectionLevel") + + if c.GetCredential() == nil { + return nil, errors.New("ModifyProtectionLevel require credential") + } + + request.SetContext(ctx) + + response = NewModifyProtectionLevelResponse() + err = c.Send(request, response) + return +} + +func NewModifyProtectionStatusRequest() (request *ModifyProtectionStatusRequest) { + request = &ModifyProtectionStatusRequest{ BaseRequest: &tchttp.BaseRequest{}, } @@ -9619,6 +11166,7 @@ func (c *Client) ModifyProtectionStatusWithContext(ctx context.Context, request if request == nil { request = NewModifyProtectionStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyProtectionStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyProtectionStatus require credential") @@ -9708,6 +11256,7 @@ func (c *Client) ModifySpartaProtectionWithContext(ctx context.Context, request if request == nil { request = NewModifySpartaProtectionRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifySpartaProtection") if c.GetCredential() == nil { return nil, errors.New("ModifySpartaProtection require credential") @@ -9787,6 +11336,7 @@ func (c *Client) ModifySpartaProtectionModeWithContext(ctx context.Context, requ if request == nil { request = NewModifySpartaProtectionModeRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifySpartaProtectionMode") if c.GetCredential() == nil { return nil, errors.New("ModifySpartaProtectionMode require credential") @@ -9850,6 +11400,7 @@ func (c *Client) ModifyUserLevelWithContext(ctx context.Context, request *Modify if request == nil { request = NewModifyUserLevelRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyUserLevel") if c.GetCredential() == nil { return nil, errors.New("ModifyUserLevel require credential") @@ -9913,6 +11464,7 @@ func (c *Client) ModifyUserSignatureClassWithContext(ctx context.Context, reques if request == nil { request = NewModifyUserSignatureClassRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyUserSignatureClass") if c.GetCredential() == nil { return nil, errors.New("ModifyUserSignatureClass require credential") @@ -9978,6 +11530,7 @@ func (c *Client) ModifyUserSignatureRuleWithContext(ctx context.Context, request if request == nil { request = NewModifyUserSignatureRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyUserSignatureRule") if c.GetCredential() == nil { return nil, errors.New("ModifyUserSignatureRule require credential") @@ -10043,6 +11596,7 @@ func (c *Client) ModifyUserSignatureRuleV2WithContext(ctx context.Context, reque if request == nil { request = NewModifyUserSignatureRuleV2Request() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyUserSignatureRuleV2") if c.GetCredential() == nil { return nil, errors.New("ModifyUserSignatureRuleV2 require credential") @@ -10092,6 +11646,7 @@ func (c *Client) ModifyWafAutoDenyRulesWithContext(ctx context.Context, request if request == nil { request = NewModifyWafAutoDenyRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyWafAutoDenyRules") if c.GetCredential() == nil { return nil, errors.New("ModifyWafAutoDenyRules require credential") @@ -10153,6 +11708,7 @@ func (c *Client) ModifyWafThreatenIntelligenceWithContext(ctx context.Context, r if request == nil { request = NewModifyWafThreatenIntelligenceRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyWafThreatenIntelligence") if c.GetCredential() == nil { return nil, errors.New("ModifyWafThreatenIntelligence require credential") @@ -10228,6 +11784,7 @@ func (c *Client) ModifyWebshellStatusWithContext(ctx context.Context, request *M if request == nil { request = NewModifyWebshellStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "ModifyWebshellStatus") if c.GetCredential() == nil { return nil, errors.New("ModifyWebshellStatus require credential") @@ -10283,6 +11840,7 @@ func (c *Client) PostAttackDownloadTaskWithContext(ctx context.Context, request if request == nil { request = NewPostAttackDownloadTaskRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "PostAttackDownloadTask") if c.GetCredential() == nil { return nil, errors.New("PostAttackDownloadTask require credential") @@ -10338,6 +11896,7 @@ func (c *Client) RefreshAccessCheckResultWithContext(ctx context.Context, reques if request == nil { request = NewRefreshAccessCheckResultRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "RefreshAccessCheckResult") if c.GetCredential() == nil { return nil, errors.New("RefreshAccessCheckResult require credential") @@ -10435,6 +11994,7 @@ func (c *Client) SearchAccessLogWithContext(ctx context.Context, request *Search if request == nil { request = NewSearchAccessLogRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "SearchAccessLog") if c.GetCredential() == nil { return nil, errors.New("SearchAccessLog require credential") @@ -10500,6 +12060,7 @@ func (c *Client) SearchAttackLogWithContext(ctx context.Context, request *Search if request == nil { request = NewSearchAttackLogRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "SearchAttackLog") if c.GetCredential() == nil { return nil, errors.New("SearchAttackLog require credential") @@ -10512,6 +12073,114 @@ func (c *Client) SearchAttackLogWithContext(ctx context.Context, request *Search return } +func NewSearchLogRequest() (request *SearchLogRequest) { + request = &SearchLogRequest{ + BaseRequest: &tchttp.BaseRequest{}, + } + + request.Init().WithApiInfo("waf", APIVersion, "SearchLog") + + + return +} + +func NewSearchLogResponse() (response *SearchLogResponse) { + response = &SearchLogResponse{ + BaseResponse: &tchttp.BaseResponse{}, + } + return + +} + +// SearchLog +// 本接口用于检索分析日志,使用该接口时请注意如下事项: +// +// 1. 该接口除受默认接口请求频率限制外,针对单个日志主题,查询并发数不能超过15。 +// +// 2. 检索语法建议使用CQL语法规则,请使用SyntaxRule参数,将值设置为1。 +// +// 3. API返回数据包最大49MB,建议启用 gzip 压缩(HTTP Request Header Accept-Encoding:gzip)。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CLSRESOURCESNOTFOUND = "FailedOperation.CLSResourcesNotFound" +// FAILEDOPERATION_INVALIDCONTEXT = "FailedOperation.InvalidContext" +// FAILEDOPERATION_QUERYERROR = "FailedOperation.QueryError" +// FAILEDOPERATION_SEARCHTIMEOUT = "FailedOperation.SearchTimeout" +// FAILEDOPERATION_SYNTAXERROR = "FailedOperation.SyntaxError" +// FAILEDOPERATION_TIMEOUT = "FailedOperation.Timeout" +// FAILEDOPERATION_TOPICISOLATED = "FailedOperation.TopicIsolated" +// INTERNALERROR = "InternalError" +// INTERNALERROR_SEARCHERROR = "InternalError.SearchError" +// INTERNALERROR_SEARCHFAILED = "InternalError.SearchFailed" +// INTERNALERROR_SERVERBUSY = "InternalError.ServerBusy" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_LOGSEARCH = "LimitExceeded.LogSearch" +// LIMITEXCEEDED_SEARCHRESOURCES = "LimitExceeded.SearchResources" +// LIMITEXCEEDED_SEARCHRESULTTOOLARGE = "LimitExceeded.SearchResultTooLarge" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// OPERATIONDENIED_NEWSYNTAXNOTSUPPORTED = "OperationDenied.NewSyntaxNotSupported" +// OPERATIONDENIED_OPERATIONNOTSUPPORTINSEARCHLOW = "OperationDenied.OperationNotSupportInSearchLow" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +func (c *Client) SearchLog(request *SearchLogRequest) (response *SearchLogResponse, err error) { + return c.SearchLogWithContext(context.Background(), request) +} + +// SearchLog +// 本接口用于检索分析日志,使用该接口时请注意如下事项: +// +// 1. 该接口除受默认接口请求频率限制外,针对单个日志主题,查询并发数不能超过15。 +// +// 2. 检索语法建议使用CQL语法规则,请使用SyntaxRule参数,将值设置为1。 +// +// 3. API返回数据包最大49MB,建议启用 gzip 压缩(HTTP Request Header Accept-Encoding:gzip)。 +// +// 可能返回的错误码: +// FAILEDOPERATION = "FailedOperation" +// FAILEDOPERATION_CLSRESOURCESNOTFOUND = "FailedOperation.CLSResourcesNotFound" +// FAILEDOPERATION_INVALIDCONTEXT = "FailedOperation.InvalidContext" +// FAILEDOPERATION_QUERYERROR = "FailedOperation.QueryError" +// FAILEDOPERATION_SEARCHTIMEOUT = "FailedOperation.SearchTimeout" +// FAILEDOPERATION_SYNTAXERROR = "FailedOperation.SyntaxError" +// FAILEDOPERATION_TIMEOUT = "FailedOperation.Timeout" +// FAILEDOPERATION_TOPICISOLATED = "FailedOperation.TopicIsolated" +// INTERNALERROR = "InternalError" +// INTERNALERROR_SEARCHERROR = "InternalError.SearchError" +// INTERNALERROR_SEARCHFAILED = "InternalError.SearchFailed" +// INTERNALERROR_SERVERBUSY = "InternalError.ServerBusy" +// INVALIDPARAMETER = "InvalidParameter" +// LIMITEXCEEDED_LOGSEARCH = "LimitExceeded.LogSearch" +// LIMITEXCEEDED_SEARCHRESOURCES = "LimitExceeded.SearchResources" +// LIMITEXCEEDED_SEARCHRESULTTOOLARGE = "LimitExceeded.SearchResultTooLarge" +// MISSINGPARAMETER = "MissingParameter" +// OPERATIONDENIED = "OperationDenied" +// OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" +// OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" +// OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" +// OPERATIONDENIED_NEWSYNTAXNOTSUPPORTED = "OperationDenied.NewSyntaxNotSupported" +// OPERATIONDENIED_OPERATIONNOTSUPPORTINSEARCHLOW = "OperationDenied.OperationNotSupportInSearchLow" +// RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" +func (c *Client) SearchLogWithContext(ctx context.Context, request *SearchLogRequest) (response *SearchLogResponse, err error) { + if request == nil { + request = NewSearchLogRequest() + } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "SearchLog") + + if c.GetCredential() == nil { + return nil, errors.New("SearchLog require credential") + } + + request.SetContext(ctx) + + response = NewSearchLogResponse() + err = c.Send(request, response) + return +} + func NewSwitchDomainRulesRequest() (request *SwitchDomainRulesRequest) { request = &SwitchDomainRulesRequest{ BaseRequest: &tchttp.BaseRequest{}, @@ -10561,6 +12230,7 @@ func (c *Client) SwitchDomainRulesWithContext(ctx context.Context, request *Swit if request == nil { request = NewSwitchDomainRulesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "SwitchDomainRules") if c.GetCredential() == nil { return nil, errors.New("SwitchDomainRules require credential") @@ -10616,6 +12286,7 @@ func (c *Client) SwitchElasticModeWithContext(ctx context.Context, request *Swit if request == nil { request = NewSwitchElasticModeRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "SwitchElasticMode") if c.GetCredential() == nil { return nil, errors.New("SwitchElasticMode require credential") @@ -10671,6 +12342,7 @@ func (c *Client) UpdateProtectionModesWithContext(ctx context.Context, request * if request == nil { request = NewUpdateProtectionModesRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "UpdateProtectionModes") if c.GetCredential() == nil { return nil, errors.New("UpdateProtectionModes require credential") @@ -10724,6 +12396,7 @@ func (c *Client) UpsertCCAutoStatusWithContext(ctx context.Context, request *Ups if request == nil { request = NewUpsertCCAutoStatusRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "UpsertCCAutoStatus") if c.GetCredential() == nil { return nil, errors.New("UpsertCCAutoStatus require credential") @@ -10777,6 +12450,7 @@ func (c *Client) UpsertCCRuleWithContext(ctx context.Context, request *UpsertCCR if request == nil { request = NewUpsertCCRuleRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "UpsertCCRule") if c.GetCredential() == nil { return nil, errors.New("UpsertCCRule require credential") @@ -10836,6 +12510,7 @@ func (c *Client) UpsertIpAccessControlWithContext(ctx context.Context, request * if request == nil { request = NewUpsertIpAccessControlRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "UpsertIpAccessControl") if c.GetCredential() == nil { return nil, errors.New("UpsertIpAccessControl require credential") @@ -10887,6 +12562,7 @@ func (c *Client) UpsertSessionWithContext(ctx context.Context, request *UpsertSe if request == nil { request = NewUpsertSessionRequest() } + c.InitBaseRequest(&request.BaseRequest, "waf", APIVersion, "UpsertSession") if c.GetCredential() == nil { return nil, errors.New("UpsertSession require credential") diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/errors.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/errors.go index edeaa4317f..1ea4d95e3f 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/errors.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved. +// Copyright (c) 2017-2025 Tencent. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -38,30 +38,57 @@ const ( // CLS内部错误。 FAILEDOPERATION_CLSINTERNALERROR = "FailedOperation.CLSInternalError" + // 日志主题正在清空中 + FAILEDOPERATION_CLSRESOURCESNOTFOUND = "FailedOperation.CLSResourcesNotFound" + // 证书不存在 FAILEDOPERATION_CERTIFICATENOTFOUND = "FailedOperation.CertificateNotFound" // 操作CH数据库失败 FAILEDOPERATION_CLICKHOUSEOPERATIONFAILED = "FailedOperation.ClickHouseOperationFailed" + // FailedOperation.InvalidContext + FAILEDOPERATION_INVALIDCONTEXT = "FailedOperation.InvalidContext" + // 操作Mongo数据库失败 FAILEDOPERATION_MONGOOPERATIONFAILED = "FailedOperation.MongoOperationFailed" // 操作Mysql数据库失败 FAILEDOPERATION_MYSQLDBOPERATIONFAILED = "FailedOperation.MysqlDBOperationFailed" + // FailedOperation.QueryError + FAILEDOPERATION_QUERYERROR = "FailedOperation.QueryError" + // 操作Redis数据库失败 FAILEDOPERATION_REDISOPERATIONFAILED = "FailedOperation.RedisOperationFailed" + // FailedOperation.SearchTimeout + FAILEDOPERATION_SEARCHTIMEOUT = "FailedOperation.SearchTimeout" + // 删除的Session正在被启用 FAILEDOPERATION_SESSIONINUSED = "FailedOperation.SessionInUsed" + // FailedOperation.SyntaxError + FAILEDOPERATION_SYNTAXERROR = "FailedOperation.SyntaxError" + + // FailedOperation.TagQpsLimit + FAILEDOPERATION_TAGQPSLIMIT = "FailedOperation.TagQpsLimit" + // 黑白名单添加数超过上限 FAILEDOPERATION_THENUMBEROFADDEDBLACKANDWHITELISTEXCEEDSTHEUPPERLIMIT = "FailedOperation.TheNumberOfAddedBlackAndWhiteListExceedsTheUpperLimit" // 一次性删除数量达到上限 FAILEDOPERATION_THENUMBEROFONETIMEDELETIONSREACHEDTHEUPPERLIMIT = "FailedOperation.TheNumberOfOneTimeDeletionsReachedTheUpperLimit" + // FailedOperation.Timeout + FAILEDOPERATION_TIMEOUT = "FailedOperation.Timeout" + + // FailedOperation.TopicClosed + FAILEDOPERATION_TOPICCLOSED = "FailedOperation.TopicClosed" + + // FailedOperation.TopicIsolated + FAILEDOPERATION_TOPICISOLATED = "FailedOperation.TopicIsolated" + // 内部错误。 INTERNALERROR = "InternalError" @@ -74,6 +101,18 @@ const ( // 调用SSL证书接口发生内部错误 INTERNALERROR_SSLCALLFAILED = "InternalError.SSLCallFailed" + // InternalError.SearchError + INTERNALERROR_SEARCHERROR = "InternalError.SearchError" + + // InternalError.SearchFailed + INTERNALERROR_SEARCHFAILED = "InternalError.SearchFailed" + + // InternalError.ServerBusy + INTERNALERROR_SERVERBUSY = "InternalError.ServerBusy" + + // InternalError.Unknown + INTERNALERROR_UNKNOWN = "InternalError.Unknown" + // 存在内部错误,请联系我们 INTERNALERROR_UNKNOWNERR = "InternalError.UnknownErr" @@ -155,6 +194,18 @@ const ( // 超过配额限制。 LIMITEXCEEDED = "LimitExceeded" + // LimitExceeded.Export + LIMITEXCEEDED_EXPORT = "LimitExceeded.Export" + + // LimitExceeded.LogSearch + LIMITEXCEEDED_LOGSEARCH = "LimitExceeded.LogSearch" + + // LimitExceeded.SearchResources + LIMITEXCEEDED_SEARCHRESOURCES = "LimitExceeded.SearchResources" + + // LimitExceeded.SearchResultTooLarge + LIMITEXCEEDED_SEARCHRESULTTOOLARGE = "LimitExceeded.SearchResultTooLarge" + // SpecificationErr LIMITEXCEEDED_SPECIFICATIONERR = "LimitExceeded.SpecificationErr" @@ -164,6 +215,27 @@ const ( // 操作被拒绝。 OPERATIONDENIED = "OperationDenied" + // OperationDenied.ACLFailed + OPERATIONDENIED_ACLFAILED = "OperationDenied.ACLFailed" + + // OperationDenied.AccountDestroy + OPERATIONDENIED_ACCOUNTDESTROY = "OperationDenied.AccountDestroy" + + // OperationDenied.AccountIsolate + OPERATIONDENIED_ACCOUNTISOLATE = "OperationDenied.AccountIsolate" + + // OperationDenied.AccountNotExists + OPERATIONDENIED_ACCOUNTNOTEXISTS = "OperationDenied.AccountNotExists" + + // OperationDenied.AnalysisSwitchClose + OPERATIONDENIED_ANALYSISSWITCHCLOSE = "OperationDenied.AnalysisSwitchClose" + + // OperationDenied.NewSyntaxNotSupported + OPERATIONDENIED_NEWSYNTAXNOTSUPPORTED = "OperationDenied.NewSyntaxNotSupported" + + // OperationDenied.OperationNotSupportInSearchLow + OPERATIONDENIED_OPERATIONNOTSUPPORTINSEARCHLOW = "OperationDenied.OperationNotSupportInSearchLow" + // 请求的次数超过了频率限制。 REQUESTLIMITEXCEEDED = "RequestLimitExceeded" @@ -179,6 +251,18 @@ const ( // 资源不存在。 RESOURCENOTFOUND = "ResourceNotFound" + // ResourceNotFound.ExportNotExist + RESOURCENOTFOUND_EXPORTNOTEXIST = "ResourceNotFound.ExportNotExist" + + // ResourceNotFound.LogsetNotExist + RESOURCENOTFOUND_LOGSETNOTEXIST = "ResourceNotFound.LogsetNotExist" + + // ResourceNotFound.NotFound + RESOURCENOTFOUND_NOTFOUND = "ResourceNotFound.NotFound" + + // ResourceNotFound.TopicNotExist + RESOURCENOTFOUND_TOPICNOTEXIST = "ResourceNotFound.TopicNotExist" + // 资源不可用。 RESOURCEUNAVAILABLE = "ResourceUnavailable" diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/models.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/models.go index 4e4f648739..6198fec510 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/models.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125/models.go @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved. +// Copyright (c) 2017-2025 Tencent. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -557,6 +557,9 @@ type AddCustomRuleRequestParams struct { // 匹配条件的逻辑关系,支持and、or,分别表示多个逻辑匹配条件是与、或的关系 LogicalOp *string `json:"LogicalOp,omitnil,omitempty" name:"LogicalOp"` + + // 按照动作灰度的比例,默认是100 + ActionRatio *uint64 `json:"ActionRatio,omitnil,omitempty" name:"ActionRatio"` } type AddCustomRuleRequest struct { @@ -612,6 +615,9 @@ type AddCustomRuleRequest struct { // 匹配条件的逻辑关系,支持and、or,分别表示多个逻辑匹配条件是与、或的关系 LogicalOp *string `json:"LogicalOp,omitnil,omitempty" name:"LogicalOp"` + + // 按照动作灰度的比例,默认是100 + ActionRatio *uint64 `json:"ActionRatio,omitnil,omitempty" name:"ActionRatio"` } func (r *AddCustomRuleRequest) ToJsonString() string { @@ -643,6 +649,7 @@ func (r *AddCustomRuleRequest) FromJsonString(s string) error { delete(f, "Status") delete(f, "PageId") delete(f, "LogicalOp") + delete(f, "ActionRatio") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AddCustomRuleRequest has unknown keys!", "") } @@ -928,6 +935,18 @@ type AddSpartaProtectionRequestParams struct { // 必填项,域名所属实例id InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"` + // 是否开启HTTP强制跳转到HTTPS。0:不强制跳转1:开启强制跳转 + HttpsRewrite *int64 `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"` + + // 是否开启HTTP2,需要开启HTTPS协议支持。0:关闭1:开启 + IsHttp2 *int64 `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"` + + // 是否开启主动健康检测。0:不开启1:开启 + ActiveCheck *int64 `json:"ActiveCheck,omitnil,omitempty" name:"ActiveCheck"` + + // 加密套件模板。0:不支持选择,使用默认模板 1:通用型模板 2:安全型模板3:自定义模板 + CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"` + // CertType为1时,需要填充此参数,表示自有证书的证书链 Cert *string `json:"Cert,omitnil,omitempty" name:"Cert"` @@ -937,7 +956,9 @@ type AddSpartaProtectionRequestParams struct { // CertType为2时,需要填充此参数,表示腾讯云SSL平台托管的证书id SSLId *string `json:"SSLId,omitnil,omitempty" name:"SSLId"` - // 待废弃,可不填。Waf的资源ID。 + // Waf的资源ID。 + // + // Deprecated: ResourceId is deprecated. ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"` // IsCdn为3时,需要填此参数,表示自定义header @@ -951,58 +972,47 @@ type AddSpartaProtectionRequestParams struct { // HTTPS回源端口,仅UpstreamScheme为http时需要填当前字段 HttpsUpstreamPort *string `json:"HttpsUpstreamPort,omitnil,omitempty" name:"HttpsUpstreamPort"` - // 待废弃,可不填。是否开启灰度,0表示不开启灰度。 + // 是否开启灰度,0表示不开启灰度。 + // + // Deprecated: IsGray is deprecated. IsGray *int64 `json:"IsGray,omitnil,omitempty" name:"IsGray"` - // 待废弃,可不填。灰度的地区 + // 灰度的地区 + // + // Deprecated: GrayAreas is deprecated. GrayAreas []*string `json:"GrayAreas,omitnil,omitempty" name:"GrayAreas"` - // 必填项,是否开启HTTP强制跳转到HTTPS。 - // 0:不强制跳转 - // 1:开启强制跳转 - HttpsRewrite *int64 `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"` - // 域名回源时的回源域名。UpstreamType为1时,需要填充此字段 UpstreamDomain *string `json:"UpstreamDomain,omitnil,omitempty" name:"UpstreamDomain"` // IP回源时的回源IP列表。UpstreamType为0时,需要填充此字段 SrcList []*string `json:"SrcList,omitnil,omitempty" name:"SrcList"` - // 必填项,是否开启HTTP2,需要开启HTTPS协议支持。 - // 0:关闭 - // 1:开启 - IsHttp2 *int64 `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"` - - // 待废弃,可不填。WAF实例类型。 + // WAF实例类型。 // sparta-waf:SAAS型WAF // clb-waf:负载均衡型WAF // cdn-waf:CDN上的Web防护能力 + // + // Deprecated: Edition is deprecated. Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"` - // 待废弃,目前填0即可。anycast IP类型开关: 0 普通IP 1 Anycast IP + // 目前填0即可。anycast IP类型开关: 0 普通IP 1 Anycast IP + // + // Deprecated: Anycast is deprecated. Anycast *int64 `json:"Anycast,omitnil,omitempty" name:"Anycast"` // 回源IP列表各IP的权重,和SrcList一一对应。当且仅当UpstreamType为0,并且SrcList有多个IP,并且LoadBalance为2时需要填写,否则填 [] Weights []*int64 `json:"Weights,omitnil,omitempty" name:"Weights"` - // 必填项,是否开启主动健康检测。 - // 0:不开启 - // 1:开启 - ActiveCheck *int64 `json:"ActiveCheck,omitnil,omitempty" name:"ActiveCheck"` - // TLS版本信息 TLSVersion *int64 `json:"TLSVersion,omitnil,omitempty" name:"TLSVersion"` - // 必填项,加密套件模板。 - // 0:不支持选择,使用默认模板 - // 1:通用型模板 - // 2:安全型模板 - // 3:自定义模板 - CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"` - // 自定义的加密套件列表。CipherTemplate为3时需要填此字段,表示自定义的加密套件,值通过DescribeCiphersDetail接口获取。 Ciphers []*int64 `json:"Ciphers,omitnil,omitempty" name:"Ciphers"` + // WAF与源站的连接超时,默认10s。 + ProxyConnectTimeout *int64 `json:"ProxyConnectTimeout,omitnil,omitempty" name:"ProxyConnectTimeout"` + // WAF与源站的读超时时间,默认300s。 ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"` @@ -1060,6 +1070,12 @@ type AddSpartaProtectionRequestParams struct { // 分流回源时生效,分流回源的规则。 UpstreamRules []*UpstreamRule `json:"UpstreamRules,omitnil,omitempty" name:"UpstreamRules"` + + // 业务场景。0:默认值,表示常规业务场景 1:大模型业务场景 + UseCase *int64 `json:"UseCase,omitnil,omitempty" name:"UseCase"` + + // gzip开关。0:关闭 1:默认值,打开。 + Gzip *int64 `json:"Gzip,omitnil,omitempty" name:"Gzip"` } type AddSpartaProtectionRequest struct { @@ -1113,6 +1129,18 @@ type AddSpartaProtectionRequest struct { // 必填项,域名所属实例id InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"` + // 是否开启HTTP强制跳转到HTTPS。0:不强制跳转1:开启强制跳转 + HttpsRewrite *int64 `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"` + + // 是否开启HTTP2,需要开启HTTPS协议支持。0:关闭1:开启 + IsHttp2 *int64 `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"` + + // 是否开启主动健康检测。0:不开启1:开启 + ActiveCheck *int64 `json:"ActiveCheck,omitnil,omitempty" name:"ActiveCheck"` + + // 加密套件模板。0:不支持选择,使用默认模板 1:通用型模板 2:安全型模板3:自定义模板 + CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"` + // CertType为1时,需要填充此参数,表示自有证书的证书链 Cert *string `json:"Cert,omitnil,omitempty" name:"Cert"` @@ -1122,7 +1150,7 @@ type AddSpartaProtectionRequest struct { // CertType为2时,需要填充此参数,表示腾讯云SSL平台托管的证书id SSLId *string `json:"SSLId,omitnil,omitempty" name:"SSLId"` - // 待废弃,可不填。Waf的资源ID。 + // Waf的资源ID。 ResourceId *string `json:"ResourceId,omitnil,omitempty" name:"ResourceId"` // IsCdn为3时,需要填此参数,表示自定义header @@ -1136,58 +1164,39 @@ type AddSpartaProtectionRequest struct { // HTTPS回源端口,仅UpstreamScheme为http时需要填当前字段 HttpsUpstreamPort *string `json:"HttpsUpstreamPort,omitnil,omitempty" name:"HttpsUpstreamPort"` - // 待废弃,可不填。是否开启灰度,0表示不开启灰度。 + // 是否开启灰度,0表示不开启灰度。 IsGray *int64 `json:"IsGray,omitnil,omitempty" name:"IsGray"` - // 待废弃,可不填。灰度的地区 + // 灰度的地区 GrayAreas []*string `json:"GrayAreas,omitnil,omitempty" name:"GrayAreas"` - // 必填项,是否开启HTTP强制跳转到HTTPS。 - // 0:不强制跳转 - // 1:开启强制跳转 - HttpsRewrite *int64 `json:"HttpsRewrite,omitnil,omitempty" name:"HttpsRewrite"` - // 域名回源时的回源域名。UpstreamType为1时,需要填充此字段 UpstreamDomain *string `json:"UpstreamDomain,omitnil,omitempty" name:"UpstreamDomain"` // IP回源时的回源IP列表。UpstreamType为0时,需要填充此字段 SrcList []*string `json:"SrcList,omitnil,omitempty" name:"SrcList"` - // 必填项,是否开启HTTP2,需要开启HTTPS协议支持。 - // 0:关闭 - // 1:开启 - IsHttp2 *int64 `json:"IsHttp2,omitnil,omitempty" name:"IsHttp2"` - - // 待废弃,可不填。WAF实例类型。 + // WAF实例类型。 // sparta-waf:SAAS型WAF // clb-waf:负载均衡型WAF // cdn-waf:CDN上的Web防护能力 Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"` - // 待废弃,目前填0即可。anycast IP类型开关: 0 普通IP 1 Anycast IP + // 目前填0即可。anycast IP类型开关: 0 普通IP 1 Anycast IP Anycast *int64 `json:"Anycast,omitnil,omitempty" name:"Anycast"` // 回源IP列表各IP的权重,和SrcList一一对应。当且仅当UpstreamType为0,并且SrcList有多个IP,并且LoadBalance为2时需要填写,否则填 [] Weights []*int64 `json:"Weights,omitnil,omitempty" name:"Weights"` - // 必填项,是否开启主动健康检测。 - // 0:不开启 - // 1:开启 - ActiveCheck *int64 `json:"ActiveCheck,omitnil,omitempty" name:"ActiveCheck"` - // TLS版本信息 TLSVersion *int64 `json:"TLSVersion,omitnil,omitempty" name:"TLSVersion"` - // 必填项,加密套件模板。 - // 0:不支持选择,使用默认模板 - // 1:通用型模板 - // 2:安全型模板 - // 3:自定义模板 - CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"` - // 自定义的加密套件列表。CipherTemplate为3时需要填此字段,表示自定义的加密套件,值通过DescribeCiphersDetail接口获取。 Ciphers []*int64 `json:"Ciphers,omitnil,omitempty" name:"Ciphers"` + // WAF与源站的连接超时,默认10s。 + ProxyConnectTimeout *int64 `json:"ProxyConnectTimeout,omitnil,omitempty" name:"ProxyConnectTimeout"` + // WAF与源站的读超时时间,默认300s。 ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"` @@ -1245,6 +1254,12 @@ type AddSpartaProtectionRequest struct { // 分流回源时生效,分流回源的规则。 UpstreamRules []*UpstreamRule `json:"UpstreamRules,omitnil,omitempty" name:"UpstreamRules"` + + // 业务场景。0:默认值,表示常规业务场景 1:大模型业务场景 + UseCase *int64 `json:"UseCase,omitnil,omitempty" name:"UseCase"` + + // gzip开关。0:关闭 1:默认值,打开。 + Gzip *int64 `json:"Gzip,omitnil,omitempty" name:"Gzip"` } func (r *AddSpartaProtectionRequest) ToJsonString() string { @@ -1268,6 +1283,10 @@ func (r *AddSpartaProtectionRequest) FromJsonString(s string) error { delete(f, "Ports") delete(f, "IsKeepAlive") delete(f, "InstanceID") + delete(f, "HttpsRewrite") + delete(f, "IsHttp2") + delete(f, "ActiveCheck") + delete(f, "CipherTemplate") delete(f, "Cert") delete(f, "PrivateKey") delete(f, "SSLId") @@ -1277,17 +1296,14 @@ func (r *AddSpartaProtectionRequest) FromJsonString(s string) error { delete(f, "HttpsUpstreamPort") delete(f, "IsGray") delete(f, "GrayAreas") - delete(f, "HttpsRewrite") delete(f, "UpstreamDomain") delete(f, "SrcList") - delete(f, "IsHttp2") delete(f, "Edition") delete(f, "Anycast") delete(f, "Weights") - delete(f, "ActiveCheck") delete(f, "TLSVersion") - delete(f, "CipherTemplate") delete(f, "Ciphers") + delete(f, "ProxyConnectTimeout") delete(f, "ProxyReadTimeout") delete(f, "ProxySendTimeout") delete(f, "SniType") @@ -1306,6 +1322,8 @@ func (r *AddSpartaProtectionRequest) FromJsonString(s string) error { delete(f, "GmSSLId") delete(f, "UpstreamPolicy") delete(f, "UpstreamRules") + delete(f, "UseCase") + delete(f, "Gzip") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "AddSpartaProtectionRequest has unknown keys!", "") } @@ -1334,6 +1352,14 @@ func (r *AddSpartaProtectionResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +type AnonymousInfo struct { + // 操作列表,支持trackLog(JS/HTTP上传日志 )和realtimeProducer(kafka协议上传日志) + Operations []*string `json:"Operations,omitnil,omitempty" name:"Operations"` + + // 条件列表 + Conditions []*ConditionInfo `json:"Conditions,omitnil,omitempty" name:"Conditions"` +} + type ApiAsset struct { // 域名 Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` @@ -1393,6 +1419,9 @@ type ApiDataFilter struct { // 日期,手机号,邮箱等 Value *string `json:"Value,omitnil,omitempty" name:"Value"` + + // 风险等级 + ValueList []*string `json:"ValueList,omitnil,omitempty" name:"ValueList"` } type ApiDetailSampleHistory struct { @@ -1546,6 +1575,14 @@ type AutoDenyDetail struct { LastUpdateTime *string `json:"LastUpdateTime,omitnil,omitempty" name:"LastUpdateTime"` } +type BatchDomainResult struct { + // 批量操作中失败的域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 操作失败的原因 + Message *string `json:"Message,omitnil,omitempty" name:"Message"` +} + type BatchIpAccessControlData struct { // 总数 TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"` @@ -1986,6 +2023,9 @@ type BotToken struct { // 优先级 Priority *int64 `json:"Priority,omitnil,omitempty" name:"Priority"` + + // token有效性配置信息 + TokenValidation *TokenValidation `json:"TokenValidation,omitnil,omitempty" name:"TokenValidation"` } type CCRuleData struct { @@ -2083,7 +2123,7 @@ type CCRuleItems struct { // 版本 TsVersion *uint64 `json:"TsVersion,omitnil,omitempty" name:"TsVersion"` - // 规则详情 + // key为匹配字段;args为base64编码后的参数,等于号前为匹配参数,等于号后为匹配内容;match为逻辑符号;encodeflag为参数内容是否编码 Options *string `json:"Options,omitnil,omitempty" name:"Options"` // 规则ID @@ -2106,6 +2146,12 @@ type CCRuleItems struct { // 逻辑操作符 LogicalOp *string `json:"LogicalOp,omitnil,omitempty" name:"LogicalOp"` + + // 页面ID + PageId *string `json:"PageId,omitnil,omitempty" name:"PageId"` + + // 动作灰度比例,默认值100 + ActionRatio *uint64 `json:"ActionRatio,omitnil,omitempty" name:"ActionRatio"` } type CCRuleLists struct { @@ -2203,6 +2249,9 @@ type ClbDomainsInfo struct { // 域名标签 Labels []*string `json:"Labels,omitnil,omitempty" name:"Labels"` + + // clbwaf接入状态,0代表“尚无流量接入”,1代表“流量接入”,2代表“CLB监听器已注销”,3代表“配置生效中”,4代表“配置下发失败中” + AccessStatus *int64 `json:"AccessStatus,omitnil,omitempty" name:"AccessStatus"` } type ClbObject struct { @@ -2296,6 +2345,14 @@ type ClbWafRegionItem struct { Code *string `json:"Code,omitnil,omitempty" name:"Code"` } +type Column struct { + // 列的名字 + Name *string `json:"Name,omitnil,omitempty" name:"Name"` + + // 列的属性 + Type *string `json:"Type,omitnil,omitempty" name:"Type"` +} + type CommonRspData struct { // 操作结果 Code *int64 `json:"Code,omitnil,omitempty" name:"Code"` @@ -2304,6 +2361,17 @@ type CommonRspData struct { Msg *string `json:"Msg,omitnil,omitempty" name:"Msg"` } +type ConditionInfo struct { + // 条件属性,目前只支持VpcID + Attributes *string `json:"Attributes,omitnil,omitempty" name:"Attributes"` + + // 条件规则,1:等于,2:不等于 + Rule *uint64 `json:"Rule,omitnil,omitempty" name:"Rule"` + + // 对应条件属性的值 + ConditionValue *string `json:"ConditionValue,omitnil,omitempty" name:"ConditionValue"` +} + // Predefined struct for user type CreateAccessExportRequestParams struct { // 客户要查询的日志主题ID,每个客户都有对应的一个主题 @@ -2485,6 +2553,108 @@ func (r *CreateAreaBanRuleResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +// Predefined struct for user +type CreateBatchIpAccessControlRequestParams struct { + // IP参数列表 + IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"` + + // 规则执行的方式,TimedJob为定时执行,CronJob为周期执行 + JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"` + + // 定时任务配置 + JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"` + + // 42为黑名单,40为白名单 + ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"` + + // 防护对象组ID列表,如果绑定的是防护对象组,和Domains参数二选一 + GroupIds []*uint64 `json:"GroupIds,omitnil,omitempty" name:"GroupIds"` + + // 域名列表,如果绑定的是批量域名,和GroupIds参数二选一 + Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"` + + // 备注 + Note *string `json:"Note,omitnil,omitempty" name:"Note"` +} + +type CreateBatchIpAccessControlRequest struct { + *tchttp.BaseRequest + + // IP参数列表 + IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"` + + // 规则执行的方式,TimedJob为定时执行,CronJob为周期执行 + JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"` + + // 定时任务配置 + JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"` + + // 42为黑名单,40为白名单 + ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"` + + // 防护对象组ID列表,如果绑定的是防护对象组,和Domains参数二选一 + GroupIds []*uint64 `json:"GroupIds,omitnil,omitempty" name:"GroupIds"` + + // 域名列表,如果绑定的是批量域名,和GroupIds参数二选一 + Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"` + + // 备注 + Note *string `json:"Note,omitnil,omitempty" name:"Note"` +} + +func (r *CreateBatchIpAccessControlRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateBatchIpAccessControlRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "IpList") + delete(f, "JobType") + delete(f, "JobDateTime") + delete(f, "ActionType") + delete(f, "GroupIds") + delete(f, "Domains") + delete(f, "Note") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateBatchIpAccessControlRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateBatchIpAccessControlResponseParams struct { + // 添加失败的域名列表,如果非空则表示有域名添加失败,整个批量规则添加失败,否则则表示批量规则添加成功。 + Failed []*BatchDomainResult `json:"Failed,omitnil,omitempty" name:"Failed"` + + // 添加成功的批量规则ID + RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type CreateBatchIpAccessControlResponse struct { + *tchttp.BaseResponse + Response *CreateBatchIpAccessControlResponseParams `json:"Response"` +} + +func (r *CreateBatchIpAccessControlResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateBatchIpAccessControlResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + type CreateDealsGoods struct { // 商品数量 GoodsNum *int64 `json:"GoodsNum,omitnil,omitempty" name:"GoodsNum"` @@ -2653,74 +2823,189 @@ func (r *CreateDealsResponse) FromJsonString(s string) error { } // Predefined struct for user -type CreateHostRequestParams struct { - // 防护域名配置信息。内网负载均衡器必须携带对应的NumericalVpcId。 - Host *HostRecord `json:"Host,omitnil,omitempty" name:"Host"` +type CreateExportRequestParams struct { + // 日志主题ID,可以通过DescribeTopics接口获取,访问日志主题ID和攻击日志主题ID方式不同,注意DescribeTopics接口使用方法 + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` - // 实例id - InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"` + // 日志导出数量, 最大值5000万 + Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"` + + // 日志导出检索语句,需要进行base64编码,不支持[SQL语句] + Query *string `json:"Query,omitnil,omitempty" name:"Query"` + + // 日志导出起始时间,毫秒时间戳 + From *int64 `json:"From,omitnil,omitempty" name:"From"` + + // 日志导出结束时间,毫秒时间戳 + To *int64 `json:"To,omitnil,omitempty" name:"To"` + + // 日志导出时间排序。desc,asc,默认为desc + Order *string `json:"Order,omitnil,omitempty" name:"Order"` + + // 日志导出数据格式。json,csv,默认为json + Format *string `json:"Format,omitnil,omitempty" name:"Format"` + + // 语法规则, 默认值为0。 + // 0:Lucene语法,1:CQL语法。 + SyntaxRule *uint64 `json:"SyntaxRule,omitnil,omitempty" name:"SyntaxRule"` + + // 导出字段 + DerivedFields []*string `json:"DerivedFields,omitnil,omitempty" name:"DerivedFields"` } -type CreateHostRequest struct { +type CreateExportRequest struct { *tchttp.BaseRequest - // 防护域名配置信息。内网负载均衡器必须携带对应的NumericalVpcId。 - Host *HostRecord `json:"Host,omitnil,omitempty" name:"Host"` + // 日志主题ID,可以通过DescribeTopics接口获取,访问日志主题ID和攻击日志主题ID方式不同,注意DescribeTopics接口使用方法 + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` - // 实例id - InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"` + // 日志导出数量, 最大值5000万 + Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"` + + // 日志导出检索语句,需要进行base64编码,不支持[SQL语句] + Query *string `json:"Query,omitnil,omitempty" name:"Query"` + + // 日志导出起始时间,毫秒时间戳 + From *int64 `json:"From,omitnil,omitempty" name:"From"` + + // 日志导出结束时间,毫秒时间戳 + To *int64 `json:"To,omitnil,omitempty" name:"To"` + + // 日志导出时间排序。desc,asc,默认为desc + Order *string `json:"Order,omitnil,omitempty" name:"Order"` + + // 日志导出数据格式。json,csv,默认为json + Format *string `json:"Format,omitnil,omitempty" name:"Format"` + + // 语法规则, 默认值为0。 + // 0:Lucene语法,1:CQL语法。 + SyntaxRule *uint64 `json:"SyntaxRule,omitnil,omitempty" name:"SyntaxRule"` + + // 导出字段 + DerivedFields []*string `json:"DerivedFields,omitnil,omitempty" name:"DerivedFields"` } -func (r *CreateHostRequest) ToJsonString() string { +func (r *CreateExportRequest) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *CreateHostRequest) FromJsonString(s string) error { +func (r *CreateExportRequest) FromJsonString(s string) error { f := make(map[string]interface{}) if err := json.Unmarshal([]byte(s), &f); err != nil { return err } - delete(f, "Host") - delete(f, "InstanceID") + delete(f, "TopicId") + delete(f, "Count") + delete(f, "Query") + delete(f, "From") + delete(f, "To") + delete(f, "Order") + delete(f, "Format") + delete(f, "SyntaxRule") + delete(f, "DerivedFields") if len(f) > 0 { - return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateHostRequest has unknown keys!", "") + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateExportRequest has unknown keys!", "") } return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type CreateHostResponseParams struct { - // 新增防护域名ID - DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"` +type CreateExportResponseParams struct { + // 日志导出ID。 + ExportId *string `json:"ExportId,omitnil,omitempty" name:"ExportId"` // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` } -type CreateHostResponse struct { +type CreateExportResponse struct { *tchttp.BaseResponse - Response *CreateHostResponseParams `json:"Response"` + Response *CreateExportResponseParams `json:"Response"` } -func (r *CreateHostResponse) ToJsonString() string { +func (r *CreateExportResponse) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *CreateHostResponse) FromJsonString(s string) error { +func (r *CreateExportResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type CreateIpAccessControlRequestParams struct { - // 具体域名如:test.qcloudwaf.com - // 全局域名为:global - Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` +type CreateHostRequestParams struct { + // 防护域名配置信息。内网负载均衡器必须携带对应的NumericalVpcId。 + Host *HostRecord `json:"Host,omitnil,omitempty" name:"Host"` + + // 实例id + InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"` +} + +type CreateHostRequest struct { + *tchttp.BaseRequest + + // 防护域名配置信息。内网负载均衡器必须携带对应的NumericalVpcId。 + Host *HostRecord `json:"Host,omitnil,omitempty" name:"Host"` + + // 实例id + InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"` +} + +func (r *CreateHostRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateHostRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Host") + delete(f, "InstanceID") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateHostRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateHostResponseParams struct { + // 新增防护域名ID + DomainId *string `json:"DomainId,omitnil,omitempty" name:"DomainId"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type CreateHostResponse struct { + *tchttp.BaseResponse + Response *CreateHostResponseParams `json:"Response"` +} + +func (r *CreateHostResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateHostResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateIpAccessControlRequestParams struct { + // 具体域名如:test.qcloudwaf.com + // 全局域名为:global + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` // ip参数列表 IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"` @@ -2840,6 +3125,119 @@ func (r *CreateIpAccessControlResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +// Predefined struct for user +type CreateOwaspWhiteRuleRequestParams struct { + // 规则名称 + Name *string `json:"Name,omitnil,omitempty" name:"Name"` + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则匹配策略列表 + Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"` + + // 加白的规则ID列表 + Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"` + + // 加白的类型,0:按照特定规则ID加白, 1:按照规则类型加白 + Type *int64 `json:"Type,omitnil,omitempty" name:"Type"` + + // 规则执行的方式,TimedJob为定时执行,CronJob为周期执行 + JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"` + + // 定时任务配置 + JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"` + + // 如果没有设置JobDateTime字段则用此字段,0表示永久生效,其它表示定时生效的截止时间(单位为秒) + ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"` + + // 规则状态,0:关闭、1:开启,默认为开启 + Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"` +} + +type CreateOwaspWhiteRuleRequest struct { + *tchttp.BaseRequest + + // 规则名称 + Name *string `json:"Name,omitnil,omitempty" name:"Name"` + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则匹配策略列表 + Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"` + + // 加白的规则ID列表 + Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"` + + // 加白的类型,0:按照特定规则ID加白, 1:按照规则类型加白 + Type *int64 `json:"Type,omitnil,omitempty" name:"Type"` + + // 规则执行的方式,TimedJob为定时执行,CronJob为周期执行 + JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"` + + // 定时任务配置 + JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"` + + // 如果没有设置JobDateTime字段则用此字段,0表示永久生效,其它表示定时生效的截止时间(单位为秒) + ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"` + + // 规则状态,0:关闭、1:开启,默认为开启 + Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"` +} + +func (r *CreateOwaspWhiteRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateOwaspWhiteRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Name") + delete(f, "Domain") + delete(f, "Strategies") + delete(f, "Ids") + delete(f, "Type") + delete(f, "JobType") + delete(f, "JobDateTime") + delete(f, "ExpireTime") + delete(f, "Status") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateOwaspWhiteRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type CreateOwaspWhiteRuleResponseParams struct { + // 规则ID + RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type CreateOwaspWhiteRuleResponse struct { + *tchttp.BaseResponse + Response *CreateOwaspWhiteRuleResponseParams `json:"Response"` +} + +func (r *CreateOwaspWhiteRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *CreateOwaspWhiteRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + // Predefined struct for user type CreatePostCKafkaFlowRequestParams struct { // 投递的CKafka所在区域 @@ -3369,6 +3767,60 @@ func (r *DeleteAttackWhiteRuleResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +// Predefined struct for user +type DeleteBatchIpAccessControlRequestParams struct { + // 规则ID列表,支持批量删除 + Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"` +} + +type DeleteBatchIpAccessControlRequest struct { + *tchttp.BaseRequest + + // 规则ID列表,支持批量删除 + Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"` +} + +func (r *DeleteBatchIpAccessControlRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteBatchIpAccessControlRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Ids") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteBatchIpAccessControlRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteBatchIpAccessControlResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DeleteBatchIpAccessControlResponse struct { + *tchttp.BaseResponse + Response *DeleteBatchIpAccessControlResponseParams `json:"Response"` +} + +func (r *DeleteBatchIpAccessControlResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteBatchIpAccessControlResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + // Predefined struct for user type DeleteBotSceneUCBRuleRequestParams struct { // 域名 @@ -3727,6 +4179,60 @@ func (r *DeleteDomainWhiteRulesResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +// Predefined struct for user +type DeleteExportRequestParams struct { + // 日志导出ID + ExportId *string `json:"ExportId,omitnil,omitempty" name:"ExportId"` +} + +type DeleteExportRequest struct { + *tchttp.BaseRequest + + // 日志导出ID + ExportId *string `json:"ExportId,omitnil,omitempty" name:"ExportId"` +} + +func (r *DeleteExportRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteExportRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "ExportId") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteExportRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteExportResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DeleteExportResponse struct { + *tchttp.BaseResponse + Response *DeleteExportResponseParams `json:"Response"` +} + +func (r *DeleteExportResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteExportResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + // Predefined struct for user type DeleteHostRequestParams struct { // 删除的域名列表 @@ -3965,12 +4471,134 @@ func (r *DeleteIpAccessControlV2Response) FromJsonString(s string) error { } // Predefined struct for user -type DeleteSessionRequestParams struct { +type DeleteOwaspRuleStatusRequestParams struct { // 域名 Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` - // clb-waf 或者 sprta-waf - Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"` + // 规则ID列表 + RuleIDs []*string `json:"RuleIDs,omitnil,omitempty" name:"RuleIDs"` +} + +type DeleteOwaspRuleStatusRequest struct { + *tchttp.BaseRequest + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则ID列表 + RuleIDs []*string `json:"RuleIDs,omitnil,omitempty" name:"RuleIDs"` +} + +func (r *DeleteOwaspRuleStatusRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteOwaspRuleStatusRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "RuleIDs") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteOwaspRuleStatusRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteOwaspRuleStatusResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DeleteOwaspRuleStatusResponse struct { + *tchttp.BaseResponse + Response *DeleteOwaspRuleStatusResponseParams `json:"Response"` +} + +func (r *DeleteOwaspRuleStatusResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteOwaspRuleStatusResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteOwaspWhiteRuleRequestParams struct { + // 规则白名单ID列表 + Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"` + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` +} + +type DeleteOwaspWhiteRuleRequest struct { + *tchttp.BaseRequest + + // 规则白名单ID列表 + Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"` + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` +} + +func (r *DeleteOwaspWhiteRuleRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteOwaspWhiteRuleRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Ids") + delete(f, "Domain") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteOwaspWhiteRuleRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteOwaspWhiteRuleResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DeleteOwaspWhiteRuleResponse struct { + *tchttp.BaseResponse + Response *DeleteOwaspWhiteRuleResponseParams `json:"Response"` +} + +func (r *DeleteOwaspWhiteRuleResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DeleteOwaspWhiteRuleResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DeleteSessionRequestParams struct { + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // clb-waf 或者 sprta-waf + Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"` // 要删除的SessionID SessionID *int64 `json:"SessionID,omitnil,omitempty" name:"SessionID"` @@ -4040,11 +4668,11 @@ type DeleteSpartaProtectionRequestParams struct { // 域名列表 Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"` - // 实例类型 - Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"` - // 必填项。域名所属实例ID InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"` + + // 实例类型 + Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"` } type DeleteSpartaProtectionRequest struct { @@ -4053,11 +4681,11 @@ type DeleteSpartaProtectionRequest struct { // 域名列表 Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"` - // 实例类型 - Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"` - // 必填项。域名所属实例ID InstanceID *string `json:"InstanceID,omitnil,omitempty" name:"InstanceID"` + + // 实例类型 + Edition *string `json:"Edition,omitnil,omitempty" name:"Edition"` } func (r *DeleteSpartaProtectionRequest) ToJsonString() string { @@ -4073,8 +4701,8 @@ func (r *DeleteSpartaProtectionRequest) FromJsonString(s string) error { return err } delete(f, "Domains") - delete(f, "Edition") delete(f, "InstanceID") + delete(f, "Edition") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteSpartaProtectionRequest has unknown keys!", "") } @@ -5755,6 +6383,9 @@ type DescribeBotSceneOverviewResponseParams struct { // 自定义规则总数,不包括BOT白名单 CustomRuleNums *int64 `json:"CustomRuleNums,omitnil,omitempty" name:"CustomRuleNums"` + // 图灵盾开关状态 + TldStatus *bool `json:"TldStatus,omitnil,omitempty" name:"TldStatus"` + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` } @@ -6512,6 +7143,9 @@ type DescribeCustomRulesRspRuleListItem struct { // 匹配条件的逻辑关系,支持and、or,分别表示多个逻辑匹配条件是与、或的关系 LogicalOp *string `json:"LogicalOp,omitnil,omitempty" name:"LogicalOp"` + + // 规则灰度的比例,默认是100,不灰度 + ActionRatio *uint64 `json:"ActionRatio,omitnil,omitempty" name:"ActionRatio"` } // Predefined struct for user @@ -7110,6 +7744,80 @@ func (r *DescribeDomainsResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +// Predefined struct for user +type DescribeExportsRequestParams struct { + // 日志主题ID,可以通过DescribeTopics接口获取,访问日志主题ID和攻击日志主题ID方式不同,注意DescribeTopics接口使用方法 + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` + + // 分页的偏移量,默认值为0 + Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 分页单页限制数目,默认值为20,最大值100 + Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"` +} + +type DescribeExportsRequest struct { + *tchttp.BaseRequest + + // 日志主题ID,可以通过DescribeTopics接口获取,访问日志主题ID和攻击日志主题ID方式不同,注意DescribeTopics接口使用方法 + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` + + // 分页的偏移量,默认值为0 + Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 分页单页限制数目,默认值为20,最大值100 + Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"` +} + +func (r *DescribeExportsRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeExportsRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "TopicId") + delete(f, "Offset") + delete(f, "Limit") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeExportsRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeExportsResponseParams struct { + // 日志导出列表 + Exports []*ExportInfo `json:"Exports,omitnil,omitempty" name:"Exports"` + + // 总数目 + TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DescribeExportsResponse struct { + *tchttp.BaseResponse + Response *DescribeExportsResponseParams `json:"Response"` +} + +func (r *DescribeExportsResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeExportsResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + // Predefined struct for user type DescribeFindDomainListRequestParams struct { // 分页 @@ -8021,6 +8729,108 @@ func (r *DescribeIpHitItemsResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } +// Predefined struct for user +type DescribeLogHistogramRequestParams struct { + // 要查询的日志的起始时间,Unix时间戳,单位ms + From *int64 `json:"From,omitnil,omitempty" name:"From"` + + // 要查询的日志的结束时间,Unix时间戳,单位ms + To *int64 `json:"To,omitnil,omitempty" name:"To"` + + // 查询语句,进行base64编码 + Query *string `json:"Query,omitnil,omitempty" name:"Query"` + + // 日志主题ID,可以通过DescribeTopics接口获取,访问日志主题ID和攻击日志主题ID方式不同,注意DescribeTopics接口使用方法 + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` + + // 时间间隔: 单位ms 限制性条件:(To-From) / interval <= 200 + Interval *int64 `json:"Interval,omitnil,omitempty" name:"Interval"` + + // 检索语法规则,默认值为0。 + // 0:Lucene语法,1:CQL语法。 + // 详细说明参见检索条件语法规则 + SyntaxRule *uint64 `json:"SyntaxRule,omitnil,omitempty" name:"SyntaxRule"` +} + +type DescribeLogHistogramRequest struct { + *tchttp.BaseRequest + + // 要查询的日志的起始时间,Unix时间戳,单位ms + From *int64 `json:"From,omitnil,omitempty" name:"From"` + + // 要查询的日志的结束时间,Unix时间戳,单位ms + To *int64 `json:"To,omitnil,omitempty" name:"To"` + + // 查询语句,进行base64编码 + Query *string `json:"Query,omitnil,omitempty" name:"Query"` + + // 日志主题ID,可以通过DescribeTopics接口获取,访问日志主题ID和攻击日志主题ID方式不同,注意DescribeTopics接口使用方法 + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` + + // 时间间隔: 单位ms 限制性条件:(To-From) / interval <= 200 + Interval *int64 `json:"Interval,omitnil,omitempty" name:"Interval"` + + // 检索语法规则,默认值为0。 + // 0:Lucene语法,1:CQL语法。 + // 详细说明参见检索条件语法规则 + SyntaxRule *uint64 `json:"SyntaxRule,omitnil,omitempty" name:"SyntaxRule"` +} + +func (r *DescribeLogHistogramRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLogHistogramRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "From") + delete(f, "To") + delete(f, "Query") + delete(f, "TopicId") + delete(f, "Interval") + delete(f, "SyntaxRule") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeLogHistogramRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeLogHistogramResponseParams struct { + // 统计周期: 单位ms + Interval *int64 `json:"Interval,omitnil,omitempty" name:"Interval"` + + // 命中关键字的日志总条数 + TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"` + + // 周期内统计结果详情 + HistogramInfos []*HistogramInfo `json:"HistogramInfos,omitnil,omitempty" name:"HistogramInfos"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DescribeLogHistogramResponse struct { + *tchttp.BaseResponse + Response *DescribeLogHistogramResponseParams `json:"Response"` +} + +func (r *DescribeLogHistogramResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeLogHistogramResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + // Predefined struct for user type DescribeModuleStatusRequestParams struct { // 要查询状态的域名 @@ -8076,6 +8886,9 @@ type DescribeModuleStatusResponseParams struct { // 限流模块开关 RateLimit *uint64 `json:"RateLimit,omitnil,omitempty" name:"RateLimit"` + // gzip 开关 + GzipAnalysis *uint64 `json:"GzipAnalysis,omitnil,omitempty" name:"GzipAnalysis"` + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` } @@ -8168,12 +8981,283 @@ func (r *DescribeObjectsResponse) FromJsonString(s string) error { } // Predefined struct for user -type DescribePeakPointsRequestParams struct { - // 查询起始时间 - FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"` +type DescribeOwaspRuleTypesRequestParams struct { + // 查询域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` - // 查询终止时间 - ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"` + // 分页页数,默认为0 + Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 每页容量,默认为10 + Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 筛选条件,支持 RuleId:规则ID、CveID:CVE编号、Desc:描述 + Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"` +} + +type DescribeOwaspRuleTypesRequest struct { + *tchttp.BaseRequest + + // 查询域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 分页页数,默认为0 + Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 每页容量,默认为10 + Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 筛选条件,支持 RuleId:规则ID、CveID:CVE编号、Desc:描述 + Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"` +} + +func (r *DescribeOwaspRuleTypesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeOwaspRuleTypesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "Offset") + delete(f, "Limit") + delete(f, "Filters") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeOwaspRuleTypesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeOwaspRuleTypesResponseParams struct { + // 规则类型数量 + Total *int64 `json:"Total,omitnil,omitempty" name:"Total"` + + // 规则类型列表及信息 + List []*OwaspRuleType `json:"List,omitnil,omitempty" name:"List"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DescribeOwaspRuleTypesResponse struct { + *tchttp.BaseResponse + Response *DescribeOwaspRuleTypesResponseParams `json:"Response"` +} + +func (r *DescribeOwaspRuleTypesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeOwaspRuleTypesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeOwaspRulesRequestParams struct { + // 需要查询的域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 分页页数,默认为0 + Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 每页容量,默认为10 + Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 排序字段,支持 RuleId, UpdateTime + By *string `json:"By,omitnil,omitempty" name:"By"` + + // 排序方式,支持asc、desc + Order *string `json:"Order,omitnil,omitempty" name:"Order"` + + // 筛选条件,支持 RuleId:规则ID、TypeId:规则类型、Desc:规则描述 、CveID:CVE编号、Status:规则状态、VulLevel:威胁等级 + Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"` +} + +type DescribeOwaspRulesRequest struct { + *tchttp.BaseRequest + + // 需要查询的域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 分页页数,默认为0 + Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 每页容量,默认为10 + Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 排序字段,支持 RuleId, UpdateTime + By *string `json:"By,omitnil,omitempty" name:"By"` + + // 排序方式,支持asc、desc + Order *string `json:"Order,omitnil,omitempty" name:"Order"` + + // 筛选条件,支持 RuleId:规则ID、TypeId:规则类型、Desc:规则描述 、CveID:CVE编号、Status:规则状态、VulLevel:威胁等级 + Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"` +} + +func (r *DescribeOwaspRulesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeOwaspRulesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "Offset") + delete(f, "Limit") + delete(f, "By") + delete(f, "Order") + delete(f, "Filters") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeOwaspRulesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeOwaspRulesResponseParams struct { + // 规则总数 + Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"` + + // 规则列表 + List []*OwaspRule `json:"List,omitnil,omitempty" name:"List"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DescribeOwaspRulesResponse struct { + *tchttp.BaseResponse + Response *DescribeOwaspRulesResponseParams `json:"Response"` +} + +func (r *DescribeOwaspRulesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeOwaspRulesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeOwaspWhiteRulesRequestParams struct { + // 需要查询的域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 分页分页,默认为0 + Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 每页容量,默认为10 + Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 排序的字段,支持CreateTime:新建时间、UpdateTime:修改时间 + By *string `json:"By,omitnil,omitempty" name:"By"` + + // 排序方式,支持asc、desc + Order *string `json:"Order,omitnil,omitempty" name:"Order"` + + // 筛选条件,支持RuleId:加白规则ID、 Name:规则名称、RuleType:加白的规则类型、Status:规则开关状态、ValidStatus:规则生效状态、TimerType:生效方式、ID:具体的加白id,根据RuleType来判断是规则id还是类型id + Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"` +} + +type DescribeOwaspWhiteRulesRequest struct { + *tchttp.BaseRequest + + // 需要查询的域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 分页分页,默认为0 + Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 每页容量,默认为10 + Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 排序的字段,支持CreateTime:新建时间、UpdateTime:修改时间 + By *string `json:"By,omitnil,omitempty" name:"By"` + + // 排序方式,支持asc、desc + Order *string `json:"Order,omitnil,omitempty" name:"Order"` + + // 筛选条件,支持RuleId:加白规则ID、 Name:规则名称、RuleType:加白的规则类型、Status:规则开关状态、ValidStatus:规则生效状态、TimerType:生效方式、ID:具体的加白id,根据RuleType来判断是规则id还是类型id + Filters []*FiltersItemNew `json:"Filters,omitnil,omitempty" name:"Filters"` +} + +func (r *DescribeOwaspWhiteRulesRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeOwaspWhiteRulesRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "Offset") + delete(f, "Limit") + delete(f, "By") + delete(f, "Order") + delete(f, "Filters") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeOwaspWhiteRulesRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeOwaspWhiteRulesResponseParams struct { + // 规则总数 + Total *uint64 `json:"Total,omitnil,omitempty" name:"Total"` + + // 规则白名单列表 + List []*OwaspWhiteRule `json:"List,omitnil,omitempty" name:"List"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DescribeOwaspWhiteRulesResponse struct { + *tchttp.BaseResponse + Response *DescribeOwaspWhiteRulesResponseParams `json:"Response"` +} + +func (r *DescribeOwaspWhiteRulesResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeOwaspWhiteRulesResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribePeakPointsRequestParams struct { + // 查询起始时间 + FromTime *string `json:"FromTime,omitnil,omitempty" name:"FromTime"` + + // 查询终止时间 + ToTime *string `json:"ToTime,omitnil,omitempty" name:"ToTime"` // 查询的域名,如果查询所有域名数据,该参数不填写 Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` @@ -9213,73 +10297,173 @@ func (r *DescribeTopAttackDomainResponse) FromJsonString(s string) error { } // Predefined struct for user -type DescribeUserCdcClbWafRegionsRequestParams struct { +type DescribeTopicsRequestParams struct { + // 注意:每次请求的 Filters 的上限为10,Filter.Values 的上限为100。 + Filters []*FilterCls `json:"Filters,omitnil,omitempty" name:"Filters"` + // 分页的偏移量,默认值为0。 + Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 分页单页限制数目,默认值为20,最大值100。 + Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 控制Filters相关字段是否为精确匹配。 + // + PreciseSearch *uint64 `json:"PreciseSearch,omitnil,omitempty" name:"PreciseSearch"` + + // 主题类型 + // + BizType *uint64 `json:"BizType,omitnil,omitempty" name:"BizType"` } -type DescribeUserCdcClbWafRegionsRequest struct { +type DescribeTopicsRequest struct { *tchttp.BaseRequest + // 注意:每次请求的 Filters 的上限为10,Filter.Values 的上限为100。 + Filters []*FilterCls `json:"Filters,omitnil,omitempty" name:"Filters"` + + // 分页的偏移量,默认值为0。 + Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 分页单页限制数目,默认值为20,最大值100。 + Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 控制Filters相关字段是否为精确匹配。 + // + PreciseSearch *uint64 `json:"PreciseSearch,omitnil,omitempty" name:"PreciseSearch"` + + // 主题类型 + // + BizType *uint64 `json:"BizType,omitnil,omitempty" name:"BizType"` } -func (r *DescribeUserCdcClbWafRegionsRequest) ToJsonString() string { +func (r *DescribeTopicsRequest) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *DescribeUserCdcClbWafRegionsRequest) FromJsonString(s string) error { +func (r *DescribeTopicsRequest) FromJsonString(s string) error { f := make(map[string]interface{}) if err := json.Unmarshal([]byte(s), &f); err != nil { return err } - + delete(f, "Filters") + delete(f, "Offset") + delete(f, "Limit") + delete(f, "PreciseSearch") + delete(f, "BizType") if len(f) > 0 { - return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeUserCdcClbWafRegionsRequest has unknown keys!", "") + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeTopicsRequest has unknown keys!", "") } return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type DescribeUserCdcClbWafRegionsResponseParams struct { - // CdcRegion的类型描述 - Data []*CdcRegion `json:"Data,omitnil,omitempty" name:"Data"` +type DescribeTopicsResponseParams struct { + // 日志主题列表 + Topics []*TopicInfo `json:"Topics,omitnil,omitempty" name:"Topics"` + + // 总数目 + TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"` // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` } -type DescribeUserCdcClbWafRegionsResponse struct { +type DescribeTopicsResponse struct { *tchttp.BaseResponse - Response *DescribeUserCdcClbWafRegionsResponseParams `json:"Response"` + Response *DescribeTopicsResponseParams `json:"Response"` } -func (r *DescribeUserCdcClbWafRegionsResponse) ToJsonString() string { +func (r *DescribeTopicsResponse) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *DescribeUserCdcClbWafRegionsResponse) FromJsonString(s string) error { +func (r *DescribeTopicsResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type DescribeUserClbWafRegionsRequestParams struct { - // 流量来源,不填默认clb。clb:负载均衡器,tsegw:云原生API网关,scf:云函数,apisix:腾讯云上其他网关 - AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"` +type DescribeUserCdcClbWafRegionsRequestParams struct { + } -type DescribeUserClbWafRegionsRequest struct { +type DescribeUserCdcClbWafRegionsRequest struct { *tchttp.BaseRequest - // 流量来源,不填默认clb。clb:负载均衡器,tsegw:云原生API网关,scf:云函数,apisix:腾讯云上其他网关 - AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"` } -func (r *DescribeUserClbWafRegionsRequest) ToJsonString() string { +func (r *DescribeUserCdcClbWafRegionsRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeUserCdcClbWafRegionsRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeUserCdcClbWafRegionsRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeUserCdcClbWafRegionsResponseParams struct { + // CdcRegion的类型描述 + Data []*CdcRegion `json:"Data,omitnil,omitempty" name:"Data"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type DescribeUserCdcClbWafRegionsResponse struct { + *tchttp.BaseResponse + Response *DescribeUserCdcClbWafRegionsResponseParams `json:"Response"` +} + +func (r *DescribeUserCdcClbWafRegionsResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *DescribeUserCdcClbWafRegionsResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type DescribeUserClbWafRegionsRequestParams struct { + // 流量来源,不填默认clb。clb:负载均衡器,tsegw:云原生API网关,scf:云函数,apisix:腾讯云上其他网关 + AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"` +} + +type DescribeUserClbWafRegionsRequest struct { + *tchttp.BaseRequest + + // 流量来源,不填默认clb。clb:负载均衡器,tsegw:云原生API网关,scf:云函数,apisix:腾讯云上其他网关 + AlbType *string `json:"AlbType,omitnil,omitempty" name:"AlbType"` +} + +func (r *DescribeUserClbWafRegionsRequest) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } @@ -10293,7 +11477,7 @@ type DomainInfo struct { // 安全组ID SgID *string `json:"SgID,omitnil,omitempty" name:"SgID"` - // clbwaf接入状态 + // clbwaf接入状态,0代表“尚无流量接入”,1代表“流量接入”,2代表“CLB监听器已注销”,3代表“配置生效中”,4代表“配置下发失败中” AccessStatus *int64 `json:"AccessStatus,omitnil,omitempty" name:"AccessStatus"` // 域名标签 @@ -10383,7 +11567,9 @@ type DomainsPartInfo struct { // 3:有部署代理服务,waf将使用ip_headers中的自定义header获取客户端IP IsCdn *uint64 `json:"IsCdn,omitnil,omitempty" name:"IsCdn"` - // 是否开启灰度,已废弃。 + // 是否开启灰度。 + // + // Deprecated: IsGray is deprecated. IsGray *uint64 `json:"IsGray,omitnil,omitempty" name:"IsGray"` // 是否开启HTTP2,需要开启HTTPS协议支持。 @@ -10469,6 +11655,9 @@ type DomainsPartInfo struct { // 3:自定义模板 CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"` + // WAF与源站的连接超时,默认10s。 + ProxyConnectTimeout *int64 `json:"ProxyConnectTimeout,omitnil,omitempty" name:"ProxyConnectTimeout"` + // WAF与源站的读超时时间,默认300s。 ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"` @@ -10542,6 +11731,12 @@ type DomainsPartInfo struct { // 分流回源策略 UpstreamRules []*UpstreamRule `json:"UpstreamRules,omitnil,omitempty" name:"UpstreamRules"` + + // 业务场景。0:默认值,表示常规业务场景 1:大模型业务场景 + UseCase *int64 `json:"UseCase,omitnil,omitempty" name:"UseCase"` + + // gzip开关。0:关闭 1:默认值,打开。 + Gzip *int64 `json:"Gzip,omitnil,omitempty" name:"Gzip"` } type DownloadAttackRecordInfo struct { @@ -10617,6 +11812,55 @@ type ExportAccessInfo struct { CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"` } +type ExportInfo struct { + // 日志主题ID + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` + + // 日志导出任务ID + ExportId *string `json:"ExportId,omitnil,omitempty" name:"ExportId"` + + // 日志导出查询语句 + Query *string `json:"Query,omitnil,omitempty" name:"Query"` + + // 日志导出文件名 + FileName *string `json:"FileName,omitnil,omitempty" name:"FileName"` + + // 日志文件大小 + FileSize *uint64 `json:"FileSize,omitnil,omitempty" name:"FileSize"` + + // 日志导出时间排序 + Order *string `json:"Order,omitnil,omitempty" name:"Order"` + + // 日志导出格式 + Format *string `json:"Format,omitnil,omitempty" name:"Format"` + + // 日志导出数量 + Count *uint64 `json:"Count,omitnil,omitempty" name:"Count"` + + // 日志下载状态。Processing:导出正在进行中,Completed:导出完成,Failed:导出失败,Expired:日志导出已过期(三天有效期), Queuing 排队中 + Status *string `json:"Status,omitnil,omitempty" name:"Status"` + + // 日志导出起始时间 + From *int64 `json:"From,omitnil,omitempty" name:"From"` + + // 日志导出结束时间 + To *int64 `json:"To,omitnil,omitempty" name:"To"` + + // 日志导出路径,有效期一个小时,请尽快使用该路径下载。 + CosPath *string `json:"CosPath,omitnil,omitempty" name:"CosPath"` + + // 日志导出创建时间 + CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"` + + // 语法规则。 默认值为0。 + // 0:Lucene语法,1:CQL语法。 + SyntaxRule *uint64 `json:"SyntaxRule,omitnil,omitempty" name:"SyntaxRule"` + + // 导出字段 + // 注意:此字段可能返回 null,表示取不到有效值。 + DerivedFields []*string `json:"DerivedFields,omitnil,omitempty" name:"DerivedFields"` +} + type FieldWriteConfig struct { // 1:开启 0:不开启 EnableHeaders *int64 `json:"EnableHeaders,omitnil,omitempty" name:"EnableHeaders"` @@ -10628,6 +11872,14 @@ type FieldWriteConfig struct { EnableBot *int64 `json:"EnableBot,omitnil,omitempty" name:"EnableBot"` } +type FilterCls struct { + // 需要过滤的字段。 + Key *string `json:"Key,omitnil,omitempty" name:"Key"` + + // 需要过滤的值。 + Values []*string `json:"Values,omitnil,omitempty" name:"Values"` +} + type FiltersItemNew struct { // 字段名; 过滤 // 子订单号过滤通过name 为:DealName; value为子订单号 @@ -11296,6 +12548,14 @@ type GoodsDetailNew struct { MicroVersion *string `json:"MicroVersion,omitnil,omitempty" name:"MicroVersion"` } +type HistogramInfo struct { + // 统计周期内的日志条数 + Count *int64 `json:"Count,omitnil,omitempty" name:"Count"` + + // 按 period 取整后的 unix timestamp: 单位毫秒 + BTime *int64 `json:"BTime,omitnil,omitempty" name:"BTime"` +} + type HostDel struct { // 域名 Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` @@ -11767,6 +13027,22 @@ type InstanceInfo struct { // 1是基础2025版本;0不是 BasicFlag *uint64 `json:"BasicFlag,omitnil,omitempty" name:"BasicFlag"` + + // 实例的网络配置 + NetworkConfig *NetworkConfig `json:"NetworkConfig,omitnil,omitempty" name:"NetworkConfig"` + + // RCE设备安全信息包 + RCEPkg *RCEPkg `json:"RCEPkg,omitnil,omitempty" name:"RCEPkg"` + + // 超量策略。0:超量沙箱 + // 1:超量限流 + ExceedPolicy *int64 `json:"ExceedPolicy,omitnil,omitempty" name:"ExceedPolicy"` + + // 大模型安全信息包 + LLMPkg *LLMPkg `json:"LLMPkg,omitnil,omitempty" name:"LLMPkg"` + + // 弹性资源Id + ElasticResourceId *string `json:"ElasticResourceId,omitnil,omitempty" name:"ElasticResourceId"` } type IpAccessControlData struct { @@ -11863,6 +13139,14 @@ type IpHitItemsData struct { TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"` } +type JWTConfig struct { + // 密钥信息 + SecretInfo *SecretInfo `json:"SecretInfo,omitnil,omitempty" name:"SecretInfo"` + + // Payload校验规则集合 + PayloadRule []*TokenRuleEntry `json:"PayloadRule,omitnil,omitempty" name:"PayloadRule"` +} + type JobDateTime struct { // 定时执行的时间参数 Timed []*TimedJob `json:"Timed,omitnil,omitempty" name:"Timed"` @@ -11882,6 +13166,26 @@ type KVInt struct { Value *uint64 `json:"Value,omitnil,omitempty" name:"Value"` } +type LLMPkg struct { + // 资源id + ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"` + + // 状态 + Status *int64 `json:"Status,omitnil,omitempty" name:"Status"` + + // 地域 + Region *int64 `json:"Region,omitnil,omitempty" name:"Region"` + + // 开始时间 + BeginTime *string `json:"BeginTime,omitnil,omitempty" name:"BeginTime"` + + // 结束时间 + EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"` + + // 计费项 + InquireKey *string `json:"InquireKey,omitnil,omitempty" name:"InquireKey"` +} + type LoadBalancer struct { // 负载均衡LD的ID LoadBalancerId *string `json:"LoadBalancerId,omitnil,omitempty" name:"LoadBalancerId"` @@ -11937,7 +13241,7 @@ type LoadBalancerPackageNew struct { Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"` // 地区 - // "多伦多": "ca", + // "多伦多": "ca", // "广州": "gz", // "成都": "cd", // "福州": "fzec", @@ -11964,7 +13268,8 @@ type LoadBalancerPackageNew struct { // "首尔": "kr", // "上海": "sh", // "新加坡": "sg", - // "清远": "qy" + // "清远": "qy", + // "雅加达": "jkt" Region *string `json:"Region,omitnil,omitempty" name:"Region"` // 接入IP @@ -11994,6 +13299,58 @@ type LogHistogramInfo struct { TimeStamp *int64 `json:"TimeStamp,omitnil,omitempty" name:"TimeStamp"` } +type LogInfo struct { + // 日志时间,单位ms + Time *int64 `json:"Time,omitnil,omitempty" name:"Time"` + + // 日志主题ID + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` + + // 日志主题名称 + TopicName *string `json:"TopicName,omitnil,omitempty" name:"TopicName"` + + // 日志来源IP + Source *string `json:"Source,omitnil,omitempty" name:"Source"` + + // 日志文件名称 + FileName *string `json:"FileName,omitnil,omitempty" name:"FileName"` + + // 日志上报请求包的ID + PkgId *string `json:"PkgId,omitnil,omitempty" name:"PkgId"` + + // 请求包内日志的ID + PkgLogId *string `json:"PkgLogId,omitnil,omitempty" name:"PkgLogId"` + + // 日志内容的Json序列化字符串 + // 注意:此字段可能返回 null,表示取不到有效值。 + LogJson *string `json:"LogJson,omitnil,omitempty" name:"LogJson"` + + // 日志来源主机名称 + // 注意:此字段可能返回 null,表示取不到有效值。 + HostName *string `json:"HostName,omitnil,omitempty" name:"HostName"` + + // 原始日志(仅在日志创建索引异常时有值) + // 注意:此字段可能返回 null,表示取不到有效值。 + RawLog *string `json:"RawLog,omitnil,omitempty" name:"RawLog"` + + // 日志创建索引异常原因(仅在日志创建索引异常时有值) + // 注意:此字段可能返回 null,表示取不到有效值。 + IndexStatus *string `json:"IndexStatus,omitnil,omitempty" name:"IndexStatus"` +} + +type LogItem struct { + // 日志Key + Key *string `json:"Key,omitnil,omitempty" name:"Key"` + + // 日志Value + Value *string `json:"Value,omitnil,omitempty" name:"Value"` +} + +type LogItems struct { + // 分析结果返回的KV数据对 + Data []*LogItem `json:"Data,omitnil,omitempty" name:"Data"` +} + type MajorEventsPkg struct { // 资源id ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"` @@ -12915,86 +14272,192 @@ func (r *ModifyAttackWhiteRuleResponse) FromJsonString(s string) error { } // Predefined struct for user -type ModifyBotSceneStatusRequestParams struct { - // 域名 - Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` +type ModifyBatchIpAccessControlRequestParams struct { + // 编辑的批量规则ID + RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"` - // 场景ID - SceneId *string `json:"SceneId,omitnil,omitempty" name:"SceneId"` + // IP参数列表 + IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"` - // true-开启 false-关闭 - Status *bool `json:"Status,omitnil,omitempty" name:"Status"` + // 规则执行的方式,TimedJob为定时执行,CronJob为周期执行 + JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"` + + // 定时任务配置 + JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"` + + // 42为黑名单,40为白名单 + ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"` + + // 防护对象组ID列表,如果绑定的是防护对象组,和Domains参数二选一 + GroupIds []*uint64 `json:"GroupIds,omitnil,omitempty" name:"GroupIds"` + + // 域名列表,如果绑定的是批量域名,和GroupIds参数二选一 + Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"` + + // 备注 + Note *string `json:"Note,omitnil,omitempty" name:"Note"` } -type ModifyBotSceneStatusRequest struct { +type ModifyBatchIpAccessControlRequest struct { *tchttp.BaseRequest - // 域名 - Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + // 编辑的批量规则ID + RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"` - // 场景ID - SceneId *string `json:"SceneId,omitnil,omitempty" name:"SceneId"` + // IP参数列表 + IpList []*string `json:"IpList,omitnil,omitempty" name:"IpList"` - // true-开启 false-关闭 - Status *bool `json:"Status,omitnil,omitempty" name:"Status"` + // 规则执行的方式,TimedJob为定时执行,CronJob为周期执行 + JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"` + + // 定时任务配置 + JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"` + + // 42为黑名单,40为白名单 + ActionType *int64 `json:"ActionType,omitnil,omitempty" name:"ActionType"` + + // 防护对象组ID列表,如果绑定的是防护对象组,和Domains参数二选一 + GroupIds []*uint64 `json:"GroupIds,omitnil,omitempty" name:"GroupIds"` + + // 域名列表,如果绑定的是批量域名,和GroupIds参数二选一 + Domains []*string `json:"Domains,omitnil,omitempty" name:"Domains"` + + // 备注 + Note *string `json:"Note,omitnil,omitempty" name:"Note"` } -func (r *ModifyBotSceneStatusRequest) ToJsonString() string { +func (r *ModifyBatchIpAccessControlRequest) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *ModifyBotSceneStatusRequest) FromJsonString(s string) error { +func (r *ModifyBatchIpAccessControlRequest) FromJsonString(s string) error { f := make(map[string]interface{}) if err := json.Unmarshal([]byte(s), &f); err != nil { return err } - delete(f, "Domain") - delete(f, "SceneId") - delete(f, "Status") + delete(f, "RuleId") + delete(f, "IpList") + delete(f, "JobType") + delete(f, "JobDateTime") + delete(f, "ActionType") + delete(f, "GroupIds") + delete(f, "Domains") + delete(f, "Note") if len(f) > 0 { - return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyBotSceneStatusRequest has unknown keys!", "") + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyBatchIpAccessControlRequest has unknown keys!", "") } return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type ModifyBotSceneStatusResponseParams struct { +type ModifyBatchIpAccessControlResponseParams struct { + // 编辑失败的域名列表,如果非空则表示有域名编辑失败,整个批量规则编辑失败,否则则表示批量规则编辑成功。 + Failed []*BatchDomainResult `json:"Failed,omitnil,omitempty" name:"Failed"` + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` } -type ModifyBotSceneStatusResponse struct { +type ModifyBatchIpAccessControlResponse struct { *tchttp.BaseResponse - Response *ModifyBotSceneStatusResponseParams `json:"Response"` + Response *ModifyBatchIpAccessControlResponseParams `json:"Response"` } -func (r *ModifyBotSceneStatusResponse) ToJsonString() string { +func (r *ModifyBatchIpAccessControlResponse) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *ModifyBotSceneStatusResponse) FromJsonString(s string) error { +func (r *ModifyBatchIpAccessControlResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type ModifyBotSceneUCBRuleRequestParams struct { +type ModifyBotSceneStatusRequestParams struct { // 域名 Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` - // 1.BOT全局白名单处调用时,传"global";2.BOT场景配置时,传具体的场景ID + // 场景ID SceneId *string `json:"SceneId,omitnil,omitempty" name:"SceneId"` - // 规则内容, 增加编码SceneId信息,1.BOT全局白名单处调用时,SceneId为"global", RuleType传10, Action为"permit";2.BOT场景配置时,SceneId为场景ID - Rule *InOutputBotUCBRule `json:"Rule,omitnil,omitempty" name:"Rule"` - - // 530改批量操作 - BatchRules []*InOutputBotUCBRule `json:"BatchRules,omitnil,omitempty" name:"BatchRules"` + // true-开启 false-关闭 + Status *bool `json:"Status,omitnil,omitempty" name:"Status"` +} + +type ModifyBotSceneStatusRequest struct { + *tchttp.BaseRequest + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 场景ID + SceneId *string `json:"SceneId,omitnil,omitempty" name:"SceneId"` + + // true-开启 false-关闭 + Status *bool `json:"Status,omitnil,omitempty" name:"Status"` +} + +func (r *ModifyBotSceneStatusRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyBotSceneStatusRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "SceneId") + delete(f, "Status") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyBotSceneStatusRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyBotSceneStatusResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type ModifyBotSceneStatusResponse struct { + *tchttp.BaseResponse + Response *ModifyBotSceneStatusResponseParams `json:"Response"` +} + +func (r *ModifyBotSceneStatusResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyBotSceneStatusResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyBotSceneUCBRuleRequestParams struct { + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 1.BOT全局白名单处调用时,传"global";2.BOT场景配置时,传具体的场景ID + SceneId *string `json:"SceneId,omitnil,omitempty" name:"SceneId"` + + // 规则内容, 增加编码SceneId信息,1.BOT全局白名单处调用时,SceneId为"global", RuleType传10, Action为"permit";2.BOT场景配置时,SceneId为场景ID + Rule *InOutputBotUCBRule `json:"Rule,omitnil,omitempty" name:"Rule"` + + // 530改批量操作 + BatchRules []*InOutputBotUCBRule `json:"BatchRules,omitnil,omitempty" name:"BatchRules"` } type ModifyBotSceneUCBRuleRequest struct { @@ -13225,6 +14688,9 @@ type ModifyCustomRuleRequestParams struct { // 匹配条件的逻辑关系,支持and、or,分别表示多个逻辑匹配条件是与、或的关系 LogicalOp *string `json:"LogicalOp,omitnil,omitempty" name:"LogicalOp"` + + // 规则生效比例 + ActionRatio *uint64 `json:"ActionRatio,omitnil,omitempty" name:"ActionRatio"` } type ModifyCustomRuleRequest struct { @@ -13280,6 +14746,9 @@ type ModifyCustomRuleRequest struct { // 匹配条件的逻辑关系,支持and、or,分别表示多个逻辑匹配条件是与、或的关系 LogicalOp *string `json:"LogicalOp,omitnil,omitempty" name:"LogicalOp"` + + // 规则生效比例 + ActionRatio *uint64 `json:"ActionRatio,omitnil,omitempty" name:"ActionRatio"` } func (r *ModifyCustomRuleRequest) ToJsonString() string { @@ -13310,6 +14779,7 @@ func (r *ModifyCustomRuleRequest) FromJsonString(s string) error { delete(f, "Status") delete(f, "PageId") delete(f, "LogicalOp") + delete(f, "ActionRatio") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyCustomRuleRequest has unknown keys!", "") } @@ -14691,222 +16161,700 @@ func (r *ModifyIpAccessControlRequest) FromJsonString(s string) error { delete(f, "JobType") delete(f, "JobDateTime") if len(f) > 0 { - return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyIpAccessControlRequest has unknown keys!", "") + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyIpAccessControlRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyIpAccessControlResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type ModifyIpAccessControlResponse struct { + *tchttp.BaseResponse + Response *ModifyIpAccessControlResponseParams `json:"Response"` +} + +func (r *ModifyIpAccessControlResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyIpAccessControlResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyModuleStatusRequestParams struct { + // 需要设置的domain + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // Web 安全模块开关,0或1 + WebSecurity *uint64 `json:"WebSecurity,omitnil,omitempty" name:"WebSecurity"` + + // 访问控制模块开关,0或者1 + AccessControl *uint64 `json:"AccessControl,omitnil,omitempty" name:"AccessControl"` + + // CC模块开关,0或者1 + CcProtection *uint64 `json:"CcProtection,omitnil,omitempty" name:"CcProtection"` + + // API安全模块开关,0或者1 + ApiProtection *uint64 `json:"ApiProtection,omitnil,omitempty" name:"ApiProtection"` + + // 防篡改模块开关,0或者1 + AntiTamper *uint64 `json:"AntiTamper,omitnil,omitempty" name:"AntiTamper"` + + // 防泄漏模块开关,0或者1 + AntiLeakage *uint64 `json:"AntiLeakage,omitnil,omitempty" name:"AntiLeakage"` + + // 限流模块开关,0或1 + RateLimit *uint64 `json:"RateLimit,omitnil,omitempty" name:"RateLimit"` + + // gzip 开关 + GzipAnalysis *uint64 `json:"GzipAnalysis,omitnil,omitempty" name:"GzipAnalysis"` +} + +type ModifyModuleStatusRequest struct { + *tchttp.BaseRequest + + // 需要设置的domain + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // Web 安全模块开关,0或1 + WebSecurity *uint64 `json:"WebSecurity,omitnil,omitempty" name:"WebSecurity"` + + // 访问控制模块开关,0或者1 + AccessControl *uint64 `json:"AccessControl,omitnil,omitempty" name:"AccessControl"` + + // CC模块开关,0或者1 + CcProtection *uint64 `json:"CcProtection,omitnil,omitempty" name:"CcProtection"` + + // API安全模块开关,0或者1 + ApiProtection *uint64 `json:"ApiProtection,omitnil,omitempty" name:"ApiProtection"` + + // 防篡改模块开关,0或者1 + AntiTamper *uint64 `json:"AntiTamper,omitnil,omitempty" name:"AntiTamper"` + + // 防泄漏模块开关,0或者1 + AntiLeakage *uint64 `json:"AntiLeakage,omitnil,omitempty" name:"AntiLeakage"` + + // 限流模块开关,0或1 + RateLimit *uint64 `json:"RateLimit,omitnil,omitempty" name:"RateLimit"` + + // gzip 开关 + GzipAnalysis *uint64 `json:"GzipAnalysis,omitnil,omitempty" name:"GzipAnalysis"` +} + +func (r *ModifyModuleStatusRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyModuleStatusRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "WebSecurity") + delete(f, "AccessControl") + delete(f, "CcProtection") + delete(f, "ApiProtection") + delete(f, "AntiTamper") + delete(f, "AntiLeakage") + delete(f, "RateLimit") + delete(f, "GzipAnalysis") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyModuleStatusRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyModuleStatusResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type ModifyModuleStatusResponse struct { + *tchttp.BaseResponse + Response *ModifyModuleStatusResponseParams `json:"Response"` +} + +func (r *ModifyModuleStatusResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyModuleStatusResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyObjectRequestParams struct { + // 修改对象标识 + ObjectId *string `json:"ObjectId,omitnil,omitempty" name:"ObjectId"` + + // 改动作类型:Status修改开关,InstanceId绑定实例, Proxy设置代理状态 + OpType *string `json:"OpType,omitnil,omitempty" name:"OpType"` + + // 新的Waf开关状态,如果和已有状态相同认为修改成功 + Status *int64 `json:"Status,omitnil,omitempty" name:"Status"` + + // 新的实例ID,如果和已绑定的实例相同认为修改成功 + InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"` + + // 是否开启代理,0:不开启,1:以XFF的第一个IP地址作为客户端IP,2:以remote_addr作为客户端IP,3:从指定的头部字段获取客户端IP,字段通过IpHeaders字段给出(OpType为Status或Proxy时,该值有效) + Proxy *uint64 `json:"Proxy,omitnil,omitempty" name:"Proxy"` + + // IsCdn=3时,需要填此参数,表示自定义header(OpType为Status或Proxy时,该值有效) + IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"` +} + +type ModifyObjectRequest struct { + *tchttp.BaseRequest + + // 修改对象标识 + ObjectId *string `json:"ObjectId,omitnil,omitempty" name:"ObjectId"` + + // 改动作类型:Status修改开关,InstanceId绑定实例, Proxy设置代理状态 + OpType *string `json:"OpType,omitnil,omitempty" name:"OpType"` + + // 新的Waf开关状态,如果和已有状态相同认为修改成功 + Status *int64 `json:"Status,omitnil,omitempty" name:"Status"` + + // 新的实例ID,如果和已绑定的实例相同认为修改成功 + InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"` + + // 是否开启代理,0:不开启,1:以XFF的第一个IP地址作为客户端IP,2:以remote_addr作为客户端IP,3:从指定的头部字段获取客户端IP,字段通过IpHeaders字段给出(OpType为Status或Proxy时,该值有效) + Proxy *uint64 `json:"Proxy,omitnil,omitempty" name:"Proxy"` + + // IsCdn=3时,需要填此参数,表示自定义header(OpType为Status或Proxy时,该值有效) + IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"` +} + +func (r *ModifyObjectRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyObjectRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "ObjectId") + delete(f, "OpType") + delete(f, "Status") + delete(f, "InstanceId") + delete(f, "Proxy") + delete(f, "IpHeaders") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyObjectRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyObjectResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type ModifyObjectResponse struct { + *tchttp.BaseResponse + Response *ModifyObjectResponseParams `json:"Response"` +} + +func (r *ModifyObjectResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyObjectResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyOwaspRuleStatusRequestParams struct { + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则开关,0:关闭、1:开启、2:只观察 + RuleStatus *int64 `json:"RuleStatus,omitnil,omitempty" name:"RuleStatus"` + + // 是否全选 + SelectAll *bool `json:"SelectAll,omitnil,omitempty" name:"SelectAll"` + + // 规则ID列表 + RuleIDs []*string `json:"RuleIDs,omitnil,omitempty" name:"RuleIDs"` + + // 如果反转需要传入类型 + TypeId *uint64 `json:"TypeId,omitnil,omitempty" name:"TypeId"` + + // 修改原因 0:无(兼容记录为空) 1:业务自身特性误报避免 2:规则误报上报 3:核心业务规则灰度 4:其它 + Reason *int64 `json:"Reason,omitnil,omitempty" name:"Reason"` +} + +type ModifyOwaspRuleStatusRequest struct { + *tchttp.BaseRequest + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则开关,0:关闭、1:开启、2:只观察 + RuleStatus *int64 `json:"RuleStatus,omitnil,omitempty" name:"RuleStatus"` + + // 是否全选 + SelectAll *bool `json:"SelectAll,omitnil,omitempty" name:"SelectAll"` + + // 规则ID列表 + RuleIDs []*string `json:"RuleIDs,omitnil,omitempty" name:"RuleIDs"` + + // 如果反转需要传入类型 + TypeId *uint64 `json:"TypeId,omitnil,omitempty" name:"TypeId"` + + // 修改原因 0:无(兼容记录为空) 1:业务自身特性误报避免 2:规则误报上报 3:核心业务规则灰度 4:其它 + Reason *int64 `json:"Reason,omitnil,omitempty" name:"Reason"` +} + +func (r *ModifyOwaspRuleStatusRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyOwaspRuleStatusRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "RuleStatus") + delete(f, "SelectAll") + delete(f, "RuleIDs") + delete(f, "TypeId") + delete(f, "Reason") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyOwaspRuleStatusRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyOwaspRuleStatusResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type ModifyOwaspRuleStatusResponse struct { + *tchttp.BaseResponse + Response *ModifyOwaspRuleStatusResponseParams `json:"Response"` +} + +func (r *ModifyOwaspRuleStatusResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyOwaspRuleStatusResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyOwaspRuleTypeActionRequestParams struct { + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则类型ID列表 + TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"` + + // 规则类型的防护模式,0:观察、1:拦截 + RuleTypeAction *int64 `json:"RuleTypeAction,omitnil,omitempty" name:"RuleTypeAction"` +} + +type ModifyOwaspRuleTypeActionRequest struct { + *tchttp.BaseRequest + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则类型ID列表 + TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"` + + // 规则类型的防护模式,0:观察、1:拦截 + RuleTypeAction *int64 `json:"RuleTypeAction,omitnil,omitempty" name:"RuleTypeAction"` +} + +func (r *ModifyOwaspRuleTypeActionRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyOwaspRuleTypeActionRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "TypeIDs") + delete(f, "RuleTypeAction") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyOwaspRuleTypeActionRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyOwaspRuleTypeActionResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type ModifyOwaspRuleTypeActionResponse struct { + *tchttp.BaseResponse + Response *ModifyOwaspRuleTypeActionResponseParams `json:"Response"` +} + +func (r *ModifyOwaspRuleTypeActionResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyOwaspRuleTypeActionResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyOwaspRuleTypeLevelRequestParams struct { + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则类型ID列表 + TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"` + + // 规则的防护等级,100:宽松、200:正常、300:严格、400:超严格 + RuleTypeLevel *int64 `json:"RuleTypeLevel,omitnil,omitempty" name:"RuleTypeLevel"` +} + +type ModifyOwaspRuleTypeLevelRequest struct { + *tchttp.BaseRequest + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则类型ID列表 + TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"` + + // 规则的防护等级,100:宽松、200:正常、300:严格、400:超严格 + RuleTypeLevel *int64 `json:"RuleTypeLevel,omitnil,omitempty" name:"RuleTypeLevel"` +} + +func (r *ModifyOwaspRuleTypeLevelRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyOwaspRuleTypeLevelRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "TypeIDs") + delete(f, "RuleTypeLevel") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyOwaspRuleTypeLevelRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyOwaspRuleTypeLevelResponseParams struct { + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type ModifyOwaspRuleTypeLevelResponse struct { + *tchttp.BaseResponse + Response *ModifyOwaspRuleTypeLevelResponseParams `json:"Response"` +} + +func (r *ModifyOwaspRuleTypeLevelResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyOwaspRuleTypeLevelResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type ModifyOwaspRuleTypeStatusRequestParams struct { + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则类型ID列表 + TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"` + + // 规则类型的开关状态,0:关闭、1:开启 + RuleTypeStatus *int64 `json:"RuleTypeStatus,omitnil,omitempty" name:"RuleTypeStatus"` +} + +type ModifyOwaspRuleTypeStatusRequest struct { + *tchttp.BaseRequest + + // 域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` + + // 规则类型ID列表 + TypeIDs []*string `json:"TypeIDs,omitnil,omitempty" name:"TypeIDs"` + + // 规则类型的开关状态,0:关闭、1:开启 + RuleTypeStatus *int64 `json:"RuleTypeStatus,omitnil,omitempty" name:"RuleTypeStatus"` +} + +func (r *ModifyOwaspRuleTypeStatusRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyOwaspRuleTypeStatusRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "Domain") + delete(f, "TypeIDs") + delete(f, "RuleTypeStatus") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyOwaspRuleTypeStatusRequest has unknown keys!", "") } return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type ModifyIpAccessControlResponseParams struct { +type ModifyOwaspRuleTypeStatusResponseParams struct { // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` } -type ModifyIpAccessControlResponse struct { +type ModifyOwaspRuleTypeStatusResponse struct { *tchttp.BaseResponse - Response *ModifyIpAccessControlResponseParams `json:"Response"` + Response *ModifyOwaspRuleTypeStatusResponseParams `json:"Response"` } -func (r *ModifyIpAccessControlResponse) ToJsonString() string { +func (r *ModifyOwaspRuleTypeStatusResponse) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *ModifyIpAccessControlResponse) FromJsonString(s string) error { +func (r *ModifyOwaspRuleTypeStatusResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type ModifyModuleStatusRequestParams struct { - // 需要设置的domain +type ModifyOwaspWhiteRuleRequestParams struct { + // 规则ID + RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"` + + // 规则名称 + Name *string `json:"Name,omitnil,omitempty" name:"Name"` + + // 域名 Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` - // Web 安全模块开关,0或1 - WebSecurity *uint64 `json:"WebSecurity,omitnil,omitempty" name:"WebSecurity"` + // 规则匹配策略列表 + Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"` - // 访问控制模块开关,0或者1 - AccessControl *uint64 `json:"AccessControl,omitnil,omitempty" name:"AccessControl"` + // 加白的规则ID列表 + Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"` - // CC模块开关,0或者1 - CcProtection *uint64 `json:"CcProtection,omitnil,omitempty" name:"CcProtection"` + // 加白的类型,0:按照特定规则ID加白, 1:按照规则类型加白 + Type *int64 `json:"Type,omitnil,omitempty" name:"Type"` - // API安全模块开关,0或者1 - ApiProtection *uint64 `json:"ApiProtection,omitnil,omitempty" name:"ApiProtection"` + // 规则执行的方式,TimedJob为定时执行,CronJob为周期执行 + JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"` - // 防篡改模块开关,0或者1 - AntiTamper *uint64 `json:"AntiTamper,omitnil,omitempty" name:"AntiTamper"` + // 定时任务配置 + JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"` - // 防泄漏模块开关,0或者1 - AntiLeakage *uint64 `json:"AntiLeakage,omitnil,omitempty" name:"AntiLeakage"` + // 如果没有设置JobDateTime字段则用此字段,0表示永久生效,其它表示定时生效的截止时间(单位为秒) + ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"` - // 限流模块开关,0或1 - RateLimit *uint64 `json:"RateLimit,omitnil,omitempty" name:"RateLimit"` + // 规则状态,0:关闭、1:开启,默认为开启 + Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"` } -type ModifyModuleStatusRequest struct { +type ModifyOwaspWhiteRuleRequest struct { *tchttp.BaseRequest - // 需要设置的domain + // 规则ID + RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"` + + // 规则名称 + Name *string `json:"Name,omitnil,omitempty" name:"Name"` + + // 域名 Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` - // Web 安全模块开关,0或1 - WebSecurity *uint64 `json:"WebSecurity,omitnil,omitempty" name:"WebSecurity"` + // 规则匹配策略列表 + Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"` - // 访问控制模块开关,0或者1 - AccessControl *uint64 `json:"AccessControl,omitnil,omitempty" name:"AccessControl"` + // 加白的规则ID列表 + Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"` - // CC模块开关,0或者1 - CcProtection *uint64 `json:"CcProtection,omitnil,omitempty" name:"CcProtection"` + // 加白的类型,0:按照特定规则ID加白, 1:按照规则类型加白 + Type *int64 `json:"Type,omitnil,omitempty" name:"Type"` - // API安全模块开关,0或者1 - ApiProtection *uint64 `json:"ApiProtection,omitnil,omitempty" name:"ApiProtection"` + // 规则执行的方式,TimedJob为定时执行,CronJob为周期执行 + JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"` - // 防篡改模块开关,0或者1 - AntiTamper *uint64 `json:"AntiTamper,omitnil,omitempty" name:"AntiTamper"` + // 定时任务配置 + JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"` - // 防泄漏模块开关,0或者1 - AntiLeakage *uint64 `json:"AntiLeakage,omitnil,omitempty" name:"AntiLeakage"` + // 如果没有设置JobDateTime字段则用此字段,0表示永久生效,其它表示定时生效的截止时间(单位为秒) + ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"` - // 限流模块开关,0或1 - RateLimit *uint64 `json:"RateLimit,omitnil,omitempty" name:"RateLimit"` + // 规则状态,0:关闭、1:开启,默认为开启 + Status *uint64 `json:"Status,omitnil,omitempty" name:"Status"` } -func (r *ModifyModuleStatusRequest) ToJsonString() string { +func (r *ModifyOwaspWhiteRuleRequest) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *ModifyModuleStatusRequest) FromJsonString(s string) error { +func (r *ModifyOwaspWhiteRuleRequest) FromJsonString(s string) error { f := make(map[string]interface{}) if err := json.Unmarshal([]byte(s), &f); err != nil { return err } + delete(f, "RuleId") + delete(f, "Name") delete(f, "Domain") - delete(f, "WebSecurity") - delete(f, "AccessControl") - delete(f, "CcProtection") - delete(f, "ApiProtection") - delete(f, "AntiTamper") - delete(f, "AntiLeakage") - delete(f, "RateLimit") + delete(f, "Strategies") + delete(f, "Ids") + delete(f, "Type") + delete(f, "JobType") + delete(f, "JobDateTime") + delete(f, "ExpireTime") + delete(f, "Status") if len(f) > 0 { - return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyModuleStatusRequest has unknown keys!", "") + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyOwaspWhiteRuleRequest has unknown keys!", "") } return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type ModifyModuleStatusResponseParams struct { +type ModifyOwaspWhiteRuleResponseParams struct { // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` } -type ModifyModuleStatusResponse struct { +type ModifyOwaspWhiteRuleResponse struct { *tchttp.BaseResponse - Response *ModifyModuleStatusResponseParams `json:"Response"` + Response *ModifyOwaspWhiteRuleResponseParams `json:"Response"` } -func (r *ModifyModuleStatusResponse) ToJsonString() string { +func (r *ModifyOwaspWhiteRuleResponse) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *ModifyModuleStatusResponse) FromJsonString(s string) error { +func (r *ModifyOwaspWhiteRuleResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type ModifyObjectRequestParams struct { - // 修改对象标识 - ObjectId *string `json:"ObjectId,omitnil,omitempty" name:"ObjectId"` - - // 改动作类型:Status修改开关,InstanceId绑定实例, Proxy设置代理状态 - OpType *string `json:"OpType,omitnil,omitempty" name:"OpType"` - - // 新的Waf开关状态,如果和已有状态相同认为修改成功 - Status *int64 `json:"Status,omitnil,omitempty" name:"Status"` - - // 新的实例ID,如果和已绑定的实例相同认为修改成功 - InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"` - - // 是否开启代理,0:不开启,1:以XFF的第一个IP地址作为客户端IP,2:以remote_addr作为客户端IP,3:从指定的头部字段获取客户端IP,字段通过IpHeaders字段给出(OpType为Status或Proxy时,该值有效) - Proxy *uint64 `json:"Proxy,omitnil,omitempty" name:"Proxy"` +type ModifyProtectionLevelRequestParams struct { + // 客户域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` - // IsCdn=3时,需要填此参数,表示自定义header(OpType为Status或Proxy时,该值有效) - IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"` + // 防护等级,100,200,300 + Level *int64 `json:"Level,omitnil,omitempty" name:"Level"` } -type ModifyObjectRequest struct { +type ModifyProtectionLevelRequest struct { *tchttp.BaseRequest - // 修改对象标识 - ObjectId *string `json:"ObjectId,omitnil,omitempty" name:"ObjectId"` - - // 改动作类型:Status修改开关,InstanceId绑定实例, Proxy设置代理状态 - OpType *string `json:"OpType,omitnil,omitempty" name:"OpType"` - - // 新的Waf开关状态,如果和已有状态相同认为修改成功 - Status *int64 `json:"Status,omitnil,omitempty" name:"Status"` - - // 新的实例ID,如果和已绑定的实例相同认为修改成功 - InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"` - - // 是否开启代理,0:不开启,1:以XFF的第一个IP地址作为客户端IP,2:以remote_addr作为客户端IP,3:从指定的头部字段获取客户端IP,字段通过IpHeaders字段给出(OpType为Status或Proxy时,该值有效) - Proxy *uint64 `json:"Proxy,omitnil,omitempty" name:"Proxy"` + // 客户域名 + Domain *string `json:"Domain,omitnil,omitempty" name:"Domain"` - // IsCdn=3时,需要填此参数,表示自定义header(OpType为Status或Proxy时,该值有效) - IpHeaders []*string `json:"IpHeaders,omitnil,omitempty" name:"IpHeaders"` + // 防护等级,100,200,300 + Level *int64 `json:"Level,omitnil,omitempty" name:"Level"` } -func (r *ModifyObjectRequest) ToJsonString() string { +func (r *ModifyProtectionLevelRequest) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *ModifyObjectRequest) FromJsonString(s string) error { +func (r *ModifyProtectionLevelRequest) FromJsonString(s string) error { f := make(map[string]interface{}) if err := json.Unmarshal([]byte(s), &f); err != nil { return err } - delete(f, "ObjectId") - delete(f, "OpType") - delete(f, "Status") - delete(f, "InstanceId") - delete(f, "Proxy") - delete(f, "IpHeaders") + delete(f, "Domain") + delete(f, "Level") if len(f) > 0 { - return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyObjectRequest has unknown keys!", "") + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyProtectionLevelRequest has unknown keys!", "") } return json.Unmarshal([]byte(s), &r) } // Predefined struct for user -type ModifyObjectResponseParams struct { +type ModifyProtectionLevelResponseParams struct { // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` } -type ModifyObjectResponse struct { +type ModifyProtectionLevelResponse struct { *tchttp.BaseResponse - Response *ModifyObjectResponseParams `json:"Response"` + Response *ModifyProtectionLevelResponseParams `json:"Response"` } -func (r *ModifyObjectResponse) ToJsonString() string { +func (r *ModifyProtectionLevelResponse) ToJsonString() string { b, _ := json.Marshal(r) return string(b) } // FromJsonString It is highly **NOT** recommended to use this function // because it has no param check, nor strict type check -func (r *ModifyObjectResponse) FromJsonString(s string) error { +func (r *ModifyProtectionLevelResponse) FromJsonString(s string) error { return json.Unmarshal([]byte(s), &r) } @@ -15119,7 +17067,9 @@ type ModifySpartaProtectionRequestParams struct { // 回源负载均衡策略。0:轮询1:IP hash2:加权轮询 LoadBalance *int64 `json:"LoadBalance,omitnil,omitempty" name:"LoadBalance"` - // 待废弃,可不填。是否开启灰度,0表示不开启灰度。 + // 是否开启灰度,0表示不开启灰度。 + // + // Deprecated: IsGray is deprecated. IsGray *int64 `json:"IsGray,omitnil,omitempty" name:"IsGray"` // 域名所属实例类型 @@ -15131,7 +17081,9 @@ type ModifySpartaProtectionRequestParams struct { // 是否开启长连接。0: 短连接1: 长连接 IsKeepAlive *string `json:"IsKeepAlive,omitnil,omitempty" name:"IsKeepAlive"` - // 待废弃。目前填0即可。anycast IP类型开关: 0 普通IP 1 Anycast IP + // 目前填0即可。anycast IP类型开关: 0 普通IP 1 Anycast IP + // + // Deprecated: Anycast is deprecated. Anycast *int64 `json:"Anycast,omitnil,omitempty" name:"Anycast"` // 回源IP列表各IP的权重,和SrcList一一对应。当且仅当UpstreamType为0,并且SrcList有多个IP,并且LoadBalance为2时需要填写,否则填 [] @@ -15149,6 +17101,9 @@ type ModifySpartaProtectionRequestParams struct { // 加密套件模板。0:不支持选择,使用默认模板 1:通用型模板 2:安全型模板3:自定义模板 CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"` + // WAF与源站的连接超时时间,默认10s。 + ProxyConnectTimeout *int64 `json:"ProxyConnectTimeout,omitnil,omitempty" name:"ProxyConnectTimeout"` + // WAF与源站的读超时时间,默认300s。 ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"` @@ -15209,6 +17164,12 @@ type ModifySpartaProtectionRequestParams struct { // 分流回源时生效,分流回源的规则。 UpstreamRules []*UpstreamRule `json:"UpstreamRules,omitnil,omitempty" name:"UpstreamRules"` + + // 业务场景。0:默认值,表示常规业务场景 1:大模型业务场景 + UseCase *int64 `json:"UseCase,omitnil,omitempty" name:"UseCase"` + + // gzip开关。0:关闭 1:默认值,打开 + Gzip *int64 `json:"Gzip,omitnil,omitempty" name:"Gzip"` } type ModifySpartaProtectionRequest struct { @@ -15267,7 +17228,7 @@ type ModifySpartaProtectionRequest struct { // 回源负载均衡策略。0:轮询1:IP hash2:加权轮询 LoadBalance *int64 `json:"LoadBalance,omitnil,omitempty" name:"LoadBalance"` - // 待废弃,可不填。是否开启灰度,0表示不开启灰度。 + // 是否开启灰度,0表示不开启灰度。 IsGray *int64 `json:"IsGray,omitnil,omitempty" name:"IsGray"` // 域名所属实例类型 @@ -15279,7 +17240,7 @@ type ModifySpartaProtectionRequest struct { // 是否开启长连接。0: 短连接1: 长连接 IsKeepAlive *string `json:"IsKeepAlive,omitnil,omitempty" name:"IsKeepAlive"` - // 待废弃。目前填0即可。anycast IP类型开关: 0 普通IP 1 Anycast IP + // 目前填0即可。anycast IP类型开关: 0 普通IP 1 Anycast IP Anycast *int64 `json:"Anycast,omitnil,omitempty" name:"Anycast"` // 回源IP列表各IP的权重,和SrcList一一对应。当且仅当UpstreamType为0,并且SrcList有多个IP,并且LoadBalance为2时需要填写,否则填 [] @@ -15297,6 +17258,9 @@ type ModifySpartaProtectionRequest struct { // 加密套件模板。0:不支持选择,使用默认模板 1:通用型模板 2:安全型模板3:自定义模板 CipherTemplate *int64 `json:"CipherTemplate,omitnil,omitempty" name:"CipherTemplate"` + // WAF与源站的连接超时时间,默认10s。 + ProxyConnectTimeout *int64 `json:"ProxyConnectTimeout,omitnil,omitempty" name:"ProxyConnectTimeout"` + // WAF与源站的读超时时间,默认300s。 ProxyReadTimeout *int64 `json:"ProxyReadTimeout,omitnil,omitempty" name:"ProxyReadTimeout"` @@ -15357,6 +17321,12 @@ type ModifySpartaProtectionRequest struct { // 分流回源时生效,分流回源的规则。 UpstreamRules []*UpstreamRule `json:"UpstreamRules,omitnil,omitempty" name:"UpstreamRules"` + + // 业务场景。0:默认值,表示常规业务场景 1:大模型业务场景 + UseCase *int64 `json:"UseCase,omitnil,omitempty" name:"UseCase"` + + // gzip开关。0:关闭 1:默认值,打开 + Gzip *int64 `json:"Gzip,omitnil,omitempty" name:"Gzip"` } func (r *ModifySpartaProtectionRequest) ToJsonString() string { @@ -15398,6 +17368,7 @@ func (r *ModifySpartaProtectionRequest) FromJsonString(s string) error { delete(f, "TLSVersion") delete(f, "Ciphers") delete(f, "CipherTemplate") + delete(f, "ProxyConnectTimeout") delete(f, "ProxyReadTimeout") delete(f, "ProxySendTimeout") delete(f, "SniType") @@ -15417,6 +17388,8 @@ func (r *ModifySpartaProtectionRequest) FromJsonString(s string) error { delete(f, "GmSSLId") delete(f, "UpstreamPolicy") delete(f, "UpstreamRules") + delete(f, "UseCase") + delete(f, "Gzip") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifySpartaProtectionRequest has unknown keys!", "") } @@ -15909,24 +17882,146 @@ type ModifyWebshellStatusResponseParams struct { // 成功的状态码,需要JSON解码后再使用,返回的格式是{"域名":"状态"},成功的状态码为Success,其它的为失败的状态码(yunapi定义的错误码) Success *ResponseCode `json:"Success,omitnil,omitempty" name:"Success"` - // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 - RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` -} + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type ModifyWebshellStatusResponse struct { + *tchttp.BaseResponse + Response *ModifyWebshellStatusResponseParams `json:"Response"` +} + +func (r *ModifyWebshellStatusResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *ModifyWebshellStatusResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type NetworkConfig struct { + // 高防EIP地址 + AntiDDosEip *string `json:"AntiDDosEip,omitnil,omitempty" name:"AntiDDosEip"` + + // 高防EIP绑定状态。 + // 0:解绑 + // 1:绑定 + AntiDDosEipStatus *uint64 `json:"AntiDDosEipStatus,omitnil,omitempty" name:"AntiDDosEipStatus"` + + // WAF原生VIP绑定状态。 + // 0:解绑 + // 1:绑定 + VipStatus *uint64 `json:"VipStatus,omitnil,omitempty" name:"VipStatus"` +} + +type OwaspRule struct { + // 规则ID + RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"` + + // 规则描述 + Description *string `json:"Description,omitnil,omitempty" name:"Description"` + + // 规则开关,0:关闭、1:开启、2:只观察 + Status *int64 `json:"Status,omitnil,omitempty" name:"Status"` + + // 规则的防护等级,100:宽松、200:正常、300:严格、400:超严格 + Level *int64 `json:"Level,omitnil,omitempty" name:"Level"` + + // 威胁等级,0:未知,100:低危,200:中危,300:高危,400:危急 + VulLevel *int64 `json:"VulLevel,omitnil,omitempty" name:"VulLevel"` + + // CVE ID + CveID *string `json:"CveID,omitnil,omitempty" name:"CveID"` + + // 规则所属的类型ID + TypeId *uint64 `json:"TypeId,omitnil,omitempty" name:"TypeId"` + + // 创建时间 + CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"` + + // 更新时间 + ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"` + + // 是否被锁定 + Locked *int64 `json:"Locked,omitnil,omitempty" name:"Locked"` + + // 修改原因 + // 0:无(兼容记录为空) + // 1:业务自身特性误报避免 + // 2:规则误报上报 + // 3:核心业务规则灰度 + // 4:其它 + Reason *int64 `json:"Reason,omitnil,omitempty" name:"Reason"` +} + +type OwaspRuleType struct { + // 类型ID + TypeId *uint64 `json:"TypeId,omitnil,omitempty" name:"TypeId"` + + // 类型名称 + TypeName *string `json:"TypeName,omitnil,omitempty" name:"TypeName"` + + // 类型描述 + Description *string `json:"Description,omitnil,omitempty" name:"Description"` + + // 类型分类 + Classification *string `json:"Classification,omitnil,omitempty" name:"Classification"` + + // 规则类型的防护模式,0:观察、1:拦截 + Action *int64 `json:"Action,omitnil,omitempty" name:"Action"` + + // 规则类型的防护等级,100:宽松、200:正常、300:严格、400:超严格 + Level *int64 `json:"Level,omitnil,omitempty" name:"Level"` + + // 规则类型的开关状态,0:关闭、1:开启 + Status *int64 `json:"Status,omitnil,omitempty" name:"Status"` + + // 规则类型下的所有规则总是 + TotalRule *uint64 `json:"TotalRule,omitnil,omitempty" name:"TotalRule"` + + // 规则类型下的启用的规则总数 + ActiveRule *uint64 `json:"ActiveRule,omitnil,omitempty" name:"ActiveRule"` +} + +type OwaspWhiteRule struct { + // 白名单的规则ID + RuleId *uint64 `json:"RuleId,omitnil,omitempty" name:"RuleId"` + + // 规则名 + Name *string `json:"Name,omitnil,omitempty" name:"Name"` + + // 加白的规则ID列表 + Ids []*uint64 `json:"Ids,omitnil,omitempty" name:"Ids"` + + // 白名单规则的状态,0:关闭、1:开启 + Status *int64 `json:"Status,omitnil,omitempty" name:"Status"` + + // 加白的类型,0:按照特定规则ID加白、1:按照规则类型加白 + Type *int64 `json:"Type,omitnil,omitempty" name:"Type"` + + // 规则匹配策略列表 + Strategies []*Strategy `json:"Strategies,omitnil,omitempty" name:"Strategies"` + + // 创建时间 + CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"` + + // 修改时间 + UpdateTime *string `json:"UpdateTime,omitnil,omitempty" name:"UpdateTime"` + + // 定时任务类型 + JobType *string `json:"JobType,omitnil,omitempty" name:"JobType"` -type ModifyWebshellStatusResponse struct { - *tchttp.BaseResponse - Response *ModifyWebshellStatusResponseParams `json:"Response"` -} + // 定时任务配置 + JobDateTime *JobDateTime `json:"JobDateTime,omitnil,omitempty" name:"JobDateTime"` -func (r *ModifyWebshellStatusResponse) ToJsonString() string { - b, _ := json.Marshal(r) - return string(b) -} + // 周期任务粒度 + CronType *string `json:"CronType,omitnil,omitempty" name:"CronType"` -// FromJsonString It is highly **NOT** recommended to use this function -// because it has no param check, nor strict type check -func (r *ModifyWebshellStatusResponse) FromJsonString(s string) error { - return json.Unmarshal([]byte(s), &r) + // 当前是否有效 + ValidStatus *bool `json:"ValidStatus,omitnil,omitempty" name:"ValidStatus"` } type ParamCompareList struct { @@ -16264,6 +18359,35 @@ type QpsData struct { QPSExtendIntlMax *uint64 `json:"QPSExtendIntlMax,omitnil,omitempty" name:"QPSExtendIntlMax"` } +type RCEPkg struct { + // 资源id + ResourceIds *string `json:"ResourceIds,omitnil,omitempty" name:"ResourceIds"` + + // 状态 + Status *int64 `json:"Status,omitnil,omitempty" name:"Status"` + + // 地域 + Region *int64 `json:"Region,omitnil,omitempty" name:"Region"` + + // 开始时间 + BeginTime *string `json:"BeginTime,omitnil,omitempty" name:"BeginTime"` + + // 结束时间 + EndTime *string `json:"EndTime,omitnil,omitempty" name:"EndTime"` + + // 申请数量 + InquireNum *int64 `json:"InquireNum,omitnil,omitempty" name:"InquireNum"` + + // 使用数量 + UsedNum *int64 `json:"UsedNum,omitnil,omitempty" name:"UsedNum"` + + // 续费标志 + RenewFlag *uint64 `json:"RenewFlag,omitnil,omitempty" name:"RenewFlag"` + + // 计费项 + BillingItem *string `json:"BillingItem,omitnil,omitempty" name:"BillingItem"` +} + // Predefined struct for user type RefreshAccessCheckResultRequestParams struct { // 域名 @@ -16691,6 +18815,233 @@ type SearchItem struct { FlowMode *string `json:"FlowMode,omitnil,omitempty" name:"FlowMode"` } +// Predefined struct for user +type SearchLogRequestParams struct { + // 要检索分析的日志的起始时间,Unix时间戳(毫秒) + From *int64 `json:"From,omitnil,omitempty" name:"From"` + + // 要检索分析的日志的结束时间,Unix时间戳(毫秒) + To *int64 `json:"To,omitnil,omitempty" name:"To"` + + // 检索分析语句,需要进行base64编码,最大长度为12KB语句由 [检索条件] | [SQL语句]构成,无需对日志进行统计分析时,可省略其中的管道符 | 及SQL语句使用*或空字符串可查询所有日志 + Query *string `json:"Query,omitnil,omitempty" name:"Query"` + + // 检索语法规则,默认值为0,推荐使用1 (CQL语法)。 + // 0:Lucene语法,1:CQL语法。 + // 详细说明参见检索条件语法规则 + SyntaxRule *uint64 `json:"SyntaxRule,omitnil,omitempty" name:"SyntaxRule"` + + // 日志主题ID,可以通过DescribeTopics接口获取,访问日志主题ID和攻击日志主题ID方式不同,注意DescribeTopics接口使用方法 + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` + + // 原始日志是否按时间排序返回;可选值:asc(升序)、desc(降序),默认为 desc + // 注意: + // * 仅当检索分析语句(Query)不包含SQL时有效 + // * SQL结果排序方式参考SQL ORDER BY语法 + Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"` + + // 表示单次查询返回的原始日志条数,默认为100,最大值为1000。 + // 注意: + // * 仅当检索分析语句(Query)不包含SQL时有效 + // * SQL结果条数指定方式参考SQL LIMIT语法 + // + // 可通过两种方式获取后续更多日志: + // * Context:透传上次接口返回的Context值,获取后续更多日志,总计最多可获取1万条原始日志 + // * Offset:偏移量,表示从第几行开始返回原始日志,无日志条数限制 + Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 查询原始日志的偏移量,表示从第几行开始返回原始日志,默认为0。 + // 注意: + // * 仅当检索分析语句(Query)不包含SQL时有效 + // * 不能与Context参数同时使用 + // * 仅适用于单日志主题检索 + Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 透传上次接口返回的Context值,可获取后续更多日志,总计最多可获取1万条原始日志,过期时间1小时。 + // 注意: + // * 透传该参数时,请勿修改除该参数外的其它参数 + // * 仅适用于单日志主题检索,检索多个日志主题时,请使用Topics中的Context + // * 仅当检索分析语句(Query)不包含SQL时有效,SQL获取后续结果参考SQL LIMIT语法 + Context *string `json:"Context,omitnil,omitempty" name:"Context"` + + // 执行统计分析(Query中包含SQL)时,是否对原始日志先进行采样,再进行统计分析。 + // 0:自动采样; + // 0~1:按指定采样率采样,例如0.02; + // 1:不采样,即精确分析 + // 默认值为1 + SamplingRate *float64 `json:"SamplingRate,omitnil,omitempty" name:"SamplingRate"` + + // 为true代表使用新的检索结果返回方式,输出参数AnalysisRecords和Columns有效 + // 为false时代表使用老的检索结果返回方式, 输出AnalysisResults和ColNames有效 + // 两种返回方式在编码格式上有少量区别,建议使用true + UseNewAnalysis *bool `json:"UseNewAnalysis,omitnil,omitempty" name:"UseNewAnalysis"` +} + +type SearchLogRequest struct { + *tchttp.BaseRequest + + // 要检索分析的日志的起始时间,Unix时间戳(毫秒) + From *int64 `json:"From,omitnil,omitempty" name:"From"` + + // 要检索分析的日志的结束时间,Unix时间戳(毫秒) + To *int64 `json:"To,omitnil,omitempty" name:"To"` + + // 检索分析语句,需要进行base64编码,最大长度为12KB语句由 [检索条件] | [SQL语句]构成,无需对日志进行统计分析时,可省略其中的管道符 | 及SQL语句使用*或空字符串可查询所有日志 + Query *string `json:"Query,omitnil,omitempty" name:"Query"` + + // 检索语法规则,默认值为0,推荐使用1 (CQL语法)。 + // 0:Lucene语法,1:CQL语法。 + // 详细说明参见检索条件语法规则 + SyntaxRule *uint64 `json:"SyntaxRule,omitnil,omitempty" name:"SyntaxRule"` + + // 日志主题ID,可以通过DescribeTopics接口获取,访问日志主题ID和攻击日志主题ID方式不同,注意DescribeTopics接口使用方法 + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` + + // 原始日志是否按时间排序返回;可选值:asc(升序)、desc(降序),默认为 desc + // 注意: + // * 仅当检索分析语句(Query)不包含SQL时有效 + // * SQL结果排序方式参考SQL ORDER BY语法 + Sort *string `json:"Sort,omitnil,omitempty" name:"Sort"` + + // 表示单次查询返回的原始日志条数,默认为100,最大值为1000。 + // 注意: + // * 仅当检索分析语句(Query)不包含SQL时有效 + // * SQL结果条数指定方式参考SQL LIMIT语法 + // + // 可通过两种方式获取后续更多日志: + // * Context:透传上次接口返回的Context值,获取后续更多日志,总计最多可获取1万条原始日志 + // * Offset:偏移量,表示从第几行开始返回原始日志,无日志条数限制 + Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"` + + // 查询原始日志的偏移量,表示从第几行开始返回原始日志,默认为0。 + // 注意: + // * 仅当检索分析语句(Query)不包含SQL时有效 + // * 不能与Context参数同时使用 + // * 仅适用于单日志主题检索 + Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"` + + // 透传上次接口返回的Context值,可获取后续更多日志,总计最多可获取1万条原始日志,过期时间1小时。 + // 注意: + // * 透传该参数时,请勿修改除该参数外的其它参数 + // * 仅适用于单日志主题检索,检索多个日志主题时,请使用Topics中的Context + // * 仅当检索分析语句(Query)不包含SQL时有效,SQL获取后续结果参考SQL LIMIT语法 + Context *string `json:"Context,omitnil,omitempty" name:"Context"` + + // 执行统计分析(Query中包含SQL)时,是否对原始日志先进行采样,再进行统计分析。 + // 0:自动采样; + // 0~1:按指定采样率采样,例如0.02; + // 1:不采样,即精确分析 + // 默认值为1 + SamplingRate *float64 `json:"SamplingRate,omitnil,omitempty" name:"SamplingRate"` + + // 为true代表使用新的检索结果返回方式,输出参数AnalysisRecords和Columns有效 + // 为false时代表使用老的检索结果返回方式, 输出AnalysisResults和ColNames有效 + // 两种返回方式在编码格式上有少量区别,建议使用true + UseNewAnalysis *bool `json:"UseNewAnalysis,omitnil,omitempty" name:"UseNewAnalysis"` +} + +func (r *SearchLogRequest) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *SearchLogRequest) FromJsonString(s string) error { + f := make(map[string]interface{}) + if err := json.Unmarshal([]byte(s), &f); err != nil { + return err + } + delete(f, "From") + delete(f, "To") + delete(f, "Query") + delete(f, "SyntaxRule") + delete(f, "TopicId") + delete(f, "Sort") + delete(f, "Limit") + delete(f, "Offset") + delete(f, "Context") + delete(f, "SamplingRate") + delete(f, "UseNewAnalysis") + if len(f) > 0 { + return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "SearchLogRequest has unknown keys!", "") + } + return json.Unmarshal([]byte(s), &r) +} + +// Predefined struct for user +type SearchLogResponseParams struct { + // 透传本次接口返回的Context值,可获取后续更多日志,过期时间1小时。 + // 注意: + // * 仅适用于单日志主题检索,检索多个日志主题时,请使用Topics中的Context + Context *string `json:"Context,omitnil,omitempty" name:"Context"` + + // 符合检索条件的日志是否已全部返回,如未全部返回可使用Context参数获取后续更多日志 + // 注意:仅当检索分析语句(Query)不包含SQL时有效 + ListOver *bool `json:"ListOver,omitnil,omitempty" name:"ListOver"` + + // 返回的是否为统计分析(即SQL)结果 + Analysis *bool `json:"Analysis,omitnil,omitempty" name:"Analysis"` + + // 匹配检索条件的原始日志 + // 注意:此字段可能返回 null,表示取不到有效值。 + Results []*LogInfo `json:"Results,omitnil,omitempty" name:"Results"` + + // 日志统计分析结果的列名 + // 当UseNewAnalysis为false时生效 + // 注意:此字段可能返回 null,表示取不到有效值。 + ColNames []*string `json:"ColNames,omitnil,omitempty" name:"ColNames"` + + // 日志统计分析结果 + // 当UseNewAnalysis为false时生效 + // 注意:此字段可能返回 null,表示取不到有效值。 + AnalysisResults []*LogItems `json:"AnalysisResults,omitnil,omitempty" name:"AnalysisResults"` + + // 日志统计分析结果 + // 当UseNewAnalysis为true时生效 + // 注意:此字段可能返回 null,表示取不到有效值。 + AnalysisRecords []*string `json:"AnalysisRecords,omitnil,omitempty" name:"AnalysisRecords"` + + // 日志统计分析结果的列属性 + // 当UseNewAnalysis为true时生效 + // 注意:此字段可能返回 null,表示取不到有效值。 + Columns []*Column `json:"Columns,omitnil,omitempty" name:"Columns"` + + // 本次统计分析使用的采样率 + // 注意:此字段可能返回 null,表示取不到有效值。 + SamplingRate *float64 `json:"SamplingRate,omitnil,omitempty" name:"SamplingRate"` + + // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 + RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"` +} + +type SearchLogResponse struct { + *tchttp.BaseResponse + Response *SearchLogResponseParams `json:"Response"` +} + +func (r *SearchLogResponse) ToJsonString() string { + b, _ := json.Marshal(r) + return string(b) +} + +// FromJsonString It is highly **NOT** recommended to use this function +// because it has no param check, nor strict type check +func (r *SearchLogResponse) FromJsonString(s string) error { + return json.Unmarshal([]byte(s), &r) +} + +type SecretInfo struct { + // 密钥上传方式,可选值:manual、upload + SecretSource *string `json:"SecretSource,omitnil,omitempty" name:"SecretSource"` + + // 密钥内容(用户手动输入/前端从密钥文件提取出的密钥内容) + SecretKey *string `json:"SecretKey,omitnil,omitempty" name:"SecretKey"` + + // 上传的密钥文件文件名 + FileName *string `json:"FileName,omitnil,omitempty" name:"FileName"` +} + type SessionData struct { // session定义 Res []*SessionItem `json:"Res,omitnil,omitempty" name:"Res"` @@ -16729,6 +19080,9 @@ type SessionItem struct { // Session关联的CC规则ID RelatedRuleID []*int64 `json:"RelatedRuleID,omitnil,omitempty" name:"RelatedRuleID"` + + // 精准匹配时,配置的key + Key *string `json:"Key,omitnil,omitempty" name:"Key"` } type SpartaProtectionPort struct { @@ -16753,7 +19107,7 @@ type Strategy struct { // // 匹配字段不同,相应的匹配参数、逻辑符号、匹配内容有所不同 // 具体如下所示: - // + //
匹配字段匹配参数逻辑符号匹配内容
IP(来源IP)不支持参数ipmatch(匹配)
ipnmatch(不匹配)
多个IP以英文逗号隔开,最多20个
IPV6(来源IPv6)不支持参数ipmatch(匹配)
ipnmatch(不匹配)
支持单个IPV6地址
Referer(Referer)不支持参数empty(内容为空)
null(不存在)
eq(等于)
neq(不等于)
contains(包含)
ncontains(不包含)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
rematch(正则匹配)
请输入内容,512个字符以内
URL(请求路径)不支持参数eq(等于)
neq(不等于)
contains(包含)
ncontains(不包含)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
rematch(正则匹配)
请以/开头,512个字符以内
UserAgent(UserAgent)不支持参数同匹配字段Referer逻辑符号请输入内容,512个字符以内
HTTP_METHOD(HTTP请求方法)不支持参数eq(等于)
neq(不等于)
请输入方法名称,建议大写
QUERY_STRING(请求字符串)不支持参数同匹配字段请求路径逻辑符号请输入内容,512个字符以内
GET(GET参数值)支持参数录入contains(包含)
ncontains(不包含)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
请输入内容,512个字符以内
GET_PARAMS_NAMES(GET参数名)不支持参数exsit(存在参数)
nexsit(不存在参数)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
请输入内容,512个字符以内
POST(POST参数值)支持参数录入同匹配字段GET参数值逻辑符号请输入内容,512个字符以内
GET_POST_NAMES(POST参数名)不支持参数同匹配字段GET参数名逻辑符号请输入内容,512个字符以内
POST_BODY(完整BODY)不支持参数同匹配字段请求路径逻辑符号请输入BODY内容,512个字符以内
COOKIE(Cookie)不支持参数empty(内容为空)
null(不存在)
rematch(正则匹配)
暂不支持
GET_COOKIES_NAMES(Cookie参数名)不支持参数同匹配字段GET参数名逻辑符号请输入内容,512个字符以内
ARGS_COOKIE(Cookie参数值)支持参数录入同匹配字段GET参数值逻辑符号请输入内容,512个字符以内
GET_HEADERS_NAMES(Header参数名)不支持参数exsit(存在参数)
nexsit(不存在参数)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
rematch(正则匹配)
请输入内容,建议小写,512个字符以内
ARGS_HEADER(Header参数值)支持参数录入contains(包含)
ncontains(不包含)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
rematch(正则匹配)
请输入内容,512个字符以内
CONTENT_LENGTH(Content-length)支持参数录入numgt(数值大于)
numlt(数值小于)
numeq(数值等于)
请输入0-9999999999999之间的整数
IP_GEO(来源IP归属地)支持参数录入geo_in(属于)
geo_not_in(不属于)
请输入内容,10240字符以内,格式为序列化的JSON,格式为:[{"Country":"中国","Region":"广东","City":"深圳"}]
//
匹配字段匹配参数逻辑符号匹配内容
IP(来源IP)不支持参数ipmatch(匹配)
ipnmatch(不匹配)
多个IP以英文逗号隔开,最多20个
IPV6(来源IPv6)不支持参数ipmatch(匹配)
ipnmatch(不匹配)
支持单个IPV6地址
Referer(Referer)不支持参数empty(内容为空)
null(不存在)
eq(等于)
neq(不等于)
contains(包含)
ncontains(不包含)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
rematch(正则匹配)
请输入内容,512个字符以内
URL(请求路径)不支持参数eq(等于)
neq(不等于)
contains(包含)
ncontains(不包含)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
rematch(正则匹配)
请以/开头,512个字符以内
UserAgent(UserAgent)不支持参数同匹配字段Referer逻辑符号请输入内容,512个字符以内
HTTP_METHOD(HTTP请求方法)不支持参数eq(等于)
neq(不等于)
请输入方法名称,建议大写
QUERY_STRING(请求字符串)不支持参数同匹配字段请求路径逻辑符号请输入内容,512个字符以内
GET(GET参数值)支持参数录入contains(包含)
ncontains(不包含)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
请输入内容,512个字符以内
GET_PARAMS_NAMES(GET参数名)不支持参数exsit(存在参数)
nexsit(不存在参数)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
请输入内容,512个字符以内
POST(POST参数值)支持参数录入同匹配字段GET参数值逻辑符号请输入内容,512个字符以内
GET_POST_NAMES(POST参数名)不支持参数同匹配字段GET参数名逻辑符号请输入内容,512个字符以内
POST_BODY(完整BODY)不支持参数同匹配字段请求路径逻辑符号请输入BODY内容,512个字符以内
COOKIE(Cookie)不支持参数empty(内容为空)
null(不存在)
rematch(正则匹配)
暂不支持
GET_COOKIES_NAMES(Cookie参数名)不支持参数同匹配字段GET参数名逻辑符号请输入内容,512个字符以内
ARGS_COOKIE(Cookie参数值)支持参数录入同匹配字段GET参数值逻辑符号请输入内容,512个字符以内
GET_HEADERS_NAMES(Header参数名)不支持参数exsit(存在参数)
nexsit(不存在参数)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
rematch(正则匹配)
请输入内容,建议小写,512个字符以内
ARGS_HEADER(Header参数值)支持参数录入contains(包含)
ncontains(不包含)
len_eq(长度等于)
len_gt(长度大于)
len_lt(长度小于)
strprefix(前缀匹配)
strsuffix(后缀匹配)
rematch(正则匹配)
请输入内容,512个字符以内
CONTENT_LENGTH(Content-length)支持参数录入numgt(数值大于)
numlt(数值小于)
numeq(数值等于)
请输入0-9999999999999之间的整数
IP_GEO(来源IP归属地)支持参数录入geo_in(属于)
geo_not_in(不属于)
请输入内容,10240字符以内,格式为序列化的JSON,格式为:[{"Country":"中国","Region":"广东","City":"深圳"}]
CAPTCHA_RISK(验证码风险)不支持参数eq(等于)
neq(不等于)
belong(属于)
not_belong(不属于)
null(不存在)
exist(存在)
请输入风险等级值,支持数值范围0-255
CAPTCHA_DEVICE_RISK(验证码设备风险)不支持参数eq(等于)
neq(不等于)
belong(属于)
not_belong(不属于)
null(不存在)
exist(存在)
请输入设备风险代码,支持取值:101、201、301、401、501、601、701
CAPTCHAR_SCORE(验证码风险评估分)不支持参数numeq(数值等于)
numgt(数值大于)
numlt(数值小于)
numle(数值小于等于)
numge(数值大于等于)
null(不存在)
exist(存在)
请输入评估分数,支持数值范围0-100
Field *string `json:"Field,omitnil,omitempty" name:"Field"` @@ -16776,6 +19130,9 @@ type Strategy struct { // numgt ( 数值大于) // numlt ( 数值小于) // numeq ( 数值等于) + // numneq ( 数值不等于) + // numle ( 数值小于等于) + // numge ( 数值大于等于) // geo_in ( IP地理属于) // geo_not_in ( IP地理不属于) // 各匹配字段对应的逻辑符号不同,详见上述匹配字段表格 @@ -16985,6 +19342,10 @@ type TLSVersion struct { VersionName *string `json:"VersionName,omitnil,omitempty" name:"VersionName"` } +type Tag struct { + +} + type TargetEntity struct { // 实例ID InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"` @@ -17009,6 +19370,159 @@ type TimedJob struct { EndDateTime *uint64 `json:"EndDateTime,omitnil,omitempty" name:"EndDateTime"` } +type TokenDisplaySetting struct { + // 是否使用payload字段作为显示token + DisplayWithPayloadEnable *bool `json:"DisplayWithPayloadEnable,omitnil,omitempty" name:"DisplayWithPayloadEnable"` + + // 用于显示的payload字段名 + FieldName *string `json:"FieldName,omitnil,omitempty" name:"FieldName"` +} + +type TokenRuleEntry struct { + // 校验方式,可选值:验签校验、字段校验 + Type *string `json:"Type,omitnil,omitempty" name:"Type"` + + // 键 + Key *string `json:"Key,omitnil,omitempty" name:"Key"` + + // 操作符 + Op *string `json:"Op,omitnil,omitempty" name:"Op"` + + // 值 + Value *TokenRuleEntryValue `json:"Value,omitnil,omitempty" name:"Value"` +} + +type TokenRuleEntryValue struct { + // 布尔类型值 + LogicValue *bool `json:"LogicValue,omitnil,omitempty" name:"LogicValue"` + + // 数组类型值 + // 可以存储字符串/数值 + // 如果只有一个元素,则为长度为1的数组 + MultiValue []*string `json:"MultiValue,omitnil,omitempty" name:"MultiValue"` + + // 指示有效的字段 + ValidKey *string `json:"ValidKey,omitnil,omitempty" name:"ValidKey"` +} + +type TokenValidation struct { + // 是否开启token有效性校验 + Enable *bool `json:"Enable,omitnil,omitempty" name:"Enable"` + + // token有效性的校验方式,可选值为:jws、jwe、contains、len、regex + VerifyType *string `json:"VerifyType,omitnil,omitempty" name:"VerifyType"` + + // 有效性校验配置和规则 + VerifyRule *TokenVerifyRule `json:"VerifyRule,omitnil,omitempty" name:"VerifyRule"` + + // Token显示设置(只有当校验方式为jws/jwe的时候才会有该配置信息) + DisplaySetting *TokenDisplaySetting `json:"DisplaySetting,omitnil,omitempty" name:"DisplaySetting"` +} + +type TokenVerifyRule struct { + // JWS、JWE专用校验规则 + JWTRule *JWTConfig `json:"JWTRule,omitnil,omitempty" name:"JWTRule"` + + // 其他会话有效性校验方式(contains、length、regex)的校验规则 + GeneralRule *TokenRuleEntry `json:"GeneralRule,omitnil,omitempty" name:"GeneralRule"` +} + +type TopicExtendInfo struct { + // 日志主题免鉴权配置信息 + // 注意:此字段可能返回 null,表示取不到有效值。 + AnonymousAccess *AnonymousInfo `json:"AnonymousAccess,omitnil,omitempty" name:"AnonymousAccess"` +} + +type TopicInfo struct { + // 日志集ID + LogsetId *string `json:"LogsetId,omitnil,omitempty" name:"LogsetId"` + + // 主题ID + TopicId *string `json:"TopicId,omitnil,omitempty" name:"TopicId"` + + // 主题名称 + TopicName *string `json:"TopicName,omitnil,omitempty" name:"TopicName"` + + // 主题分区个数 + PartitionCount *int64 `json:"PartitionCount,omitnil,omitempty" name:"PartitionCount"` + + // 主题是否开启索引(主题类型需为日志主题) + Index *bool `json:"Index,omitnil,omitempty" name:"Index"` + + // 云产品标识,主题由其它云产品创建时,该字段会显示云产品名称,例如CDN、TKE + // 注意:此字段可能返回 null,表示取不到有效值。 + AssumerName *string `json:"AssumerName,omitnil,omitempty" name:"AssumerName"` + + // 创建时间 + CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"` + + // 主题是否开启采集,true:开启采集;false:关闭采集。 + // 创建日志主题时默认开启,可通过SDK调用ModifyTopic修改此字段。 + // 控制台目前不支持修改此参数。 + Status *bool `json:"Status,omitnil,omitempty" name:"Status"` + + // 主题绑定的标签信息 + // 注意:此字段可能返回 null,表示取不到有效值。 + Tags []*Tag `json:"Tags,omitnil,omitempty" name:"Tags"` + + // 该主题是否开启自动分裂 + // 注意:此字段可能返回 null,表示取不到有效值。 + AutoSplit *bool `json:"AutoSplit,omitnil,omitempty" name:"AutoSplit"` + + // 若开启自动分裂的话,该主题能够允许的最大分区数 + // 注意:此字段可能返回 null,表示取不到有效值。 + MaxSplitPartitions *int64 `json:"MaxSplitPartitions,omitnil,omitempty" name:"MaxSplitPartitions"` + + // 主题的存储类型 + // 注意:此字段可能返回 null,表示取不到有效值。 + StorageType *string `json:"StorageType,omitnil,omitempty" name:"StorageType"` + + // 生命周期,单位天,可取值范围1~3600。取值为3640时代表永久保存 + // 注意:此字段可能返回 null,表示取不到有效值。 + Period *int64 `json:"Period,omitnil,omitempty" name:"Period"` + + // 云产品二级标识,日志主题由其它云产品创建时,该字段会显示云产品名称及其日志类型的二级分类,例如TKE-Audit、TKE-Event。部分云产品仅有云产品标识(AssumerName),无该字段。 + // 注意:此字段可能返回 null,表示取不到有效值。 + SubAssumerName *string `json:"SubAssumerName,omitnil,omitempty" name:"SubAssumerName"` + + // 主题描述 + // 注意:此字段可能返回 null,表示取不到有效值。 + Describes *string `json:"Describes,omitnil,omitempty" name:"Describes"` + + // 开启日志沉降,标准存储的生命周期, hotPeriod < Period。 + // 标准存储为 hotPeriod, 低频存储则为 Period-hotPeriod。(主题类型需为日志主题) + // HotPeriod=0为没有开启日志沉降。 + // 注意:此字段可能返回 null,表示取不到有效值。 + HotPeriod *uint64 `json:"HotPeriod,omitnil,omitempty" name:"HotPeriod"` + + // 主题类型。 + // - 0: 日志主题 + // - 1: 指标主题 + // 注意:此字段可能返回 null,表示取不到有效值。 + BizType *uint64 `json:"BizType,omitnil,omitempty" name:"BizType"` + + // 免鉴权开关。 false:关闭; true:开启。 + // 开启后将支持指定操作匿名访问该日志主题。详情请参见[日志主题](https://cloud.tencent.com/document/product/614/41035)。 + // 注意:此字段可能返回 null,表示取不到有效值。 + IsWebTracking *bool `json:"IsWebTracking,omitnil,omitempty" name:"IsWebTracking"` + + // 日志主题扩展信息 + // 注意:此字段可能返回 null,表示取不到有效值。 + Extends *TopicExtendInfo `json:"Extends,omitnil,omitempty" name:"Extends"` + + // 异步迁移任务ID + // 注意:此字段可能返回 null,表示取不到有效值。 + TopicAsyncTaskID *string `json:"TopicAsyncTaskID,omitnil,omitempty" name:"TopicAsyncTaskID"` + + // 异步迁移状态 + // 注意:此字段可能返回 null,表示取不到有效值。 + MigrationStatus *uint64 `json:"MigrationStatus,omitnil,omitempty" name:"MigrationStatus"` + + // 异步迁移完成后,预计生效日期 + // 注意:此字段可能返回 null,表示取不到有效值。 + EffectiveDate *string `json:"EffectiveDate,omitnil,omitempty" name:"EffectiveDate"` +} + type UCBActionProportion struct { // 动作 Action *string `json:"Action,omitnil,omitempty" name:"Action"` @@ -17090,7 +19604,6 @@ func (r *UpdateProtectionModesRequest) FromJsonString(s string) error { // Predefined struct for user type UpdateProtectionModesResponseParams struct { // 操作结果 - // 注意:此字段可能返回 null,表示取不到有效值。 CommonRsp *CommonRspData `json:"CommonRsp,omitnil,omitempty" name:"CommonRsp"` // 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 @@ -17219,7 +19732,7 @@ type UpsertCCRuleRequestParams struct { // 匹配方法,0表示等于,1表示前缀匹配,2表示包含,3表示不等于,6表示后缀匹配,7表示不包含 MatchFunc *int64 `json:"MatchFunc,omitnil,omitempty" name:"MatchFunc"` - // CC的匹配条件JSON序列化的字符串,示例:[{\"key\":\"Method\",\"args\":[\"=R0VU\"],\"match\":\"0\",\"encodeflag\":true}] Key可选值为 Method、Post、Referer、Cookie、User-Agent、CustomHeader match可选值为,当Key为Method的时候可选值为0(等于)、3(不等于)。 Key为Post的时候可选值为0(等于)、3(不等于),Key为Cookie的时候可选值为0(等于)、2(包含),3(不等于)、7(不包含)、 当Key为Referer的时候可选值为0(等于)、3(不等于)、1(前缀匹配)、6(后缀匹配)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为Cookie的时候可选值为0(等于)、3(不等于)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为User-Agent的时候可选值为0(等于)、3(不等于)、1(前缀匹配)、6(后缀匹配)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为CustomHeader的时候可选值为0(等于)、3(不等于)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空)。 Key为IPLocation时,可选值为13(属于)、14(不属于)。args用来表示匹配内容,需要设置encodeflag为true,当Key为Post、Cookie、CustomHeader时,用等号=来分别串接Key和Value,并分别用Base64编码,类似YWJj=YWJj。当Key为Referer、User-Agent时,用等号=来串接Value,类似=YWJj。 + // CC的匹配条件JSON序列化的字符串,示例:[{\"key\":\"Method\",\"args\":[\"=R0VU\"],\"match\":\"0\",\"encodeflag\":true}] Key可选值为 Method、Post、Referer、Cookie、User-Agent、CustomHeader、CaptchaRisk、CaptchaDeviceRisk、CaptchaScore match可选值为,当Key为Method的时候可选值为0(等于)、3(不等于)。 Key为Post的时候可选值为0(等于)、3(不等于),Key为Cookie的时候可选值为0(等于)、2(包含),3(不等于)、7(不包含)、 当Key为Referer的时候可选值为0(等于)、3(不等于)、1(前缀匹配)、6(后缀匹配)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为Cookie的时候可选值为0(等于)、3(不等于)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为User-Agent的时候可选值为0(等于)、3(不等于)、1(前缀匹配)、6(后缀匹配)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为CustomHeader的时候可选值为0(等于)、3(不等于)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空)。 Key为IPLocation时,可选值为13(属于)、14(不属于)。 Key为CaptchaRisk时,可选值为0(等于)、3(不等于)、13(属于)、14(不属于)、12(存在)、5(不存在)。 Key为CaptchaDeviceRisk时,可选值为0(等于)、3(不等于)、13(属于)、14(不属于)、12(存在)、5(不存在)。 Key为CaptchaScore时,可选值为15(数值等于)、16(数值不等于)、17(数值大于)、18(数值小于)、19(数值大于等于)、20(数值小于等于)、12(存在)、5(不存在)。args用来表示匹配内容,需要设置encodeflag为true,当Key为Post、Cookie、CustomHeader时,用等号=来分别串接Key和Value,并分别用Base64编码,类似YWJj=YWJj。当Key为Referer、User-Agent时,用等号=来串接Value,类似=YWJj。 OptionsArr *string `json:"OptionsArr,omitnil,omitempty" name:"OptionsArr"` // waf版本,sparta-waf或者clb-waf @@ -17251,6 +19764,12 @@ type UpsertCCRuleRequestParams struct { // 配置方式的逻辑操作符,and或者or LogicalOp *string `json:"LogicalOp,omitnil,omitempty" name:"LogicalOp"` + + // 页面ID + PageId *string `json:"PageId,omitnil,omitempty" name:"PageId"` + + // 动作灰度比例,默认值100 + ActionRatio *uint64 `json:"ActionRatio,omitnil,omitempty" name:"ActionRatio"` } type UpsertCCRuleRequest struct { @@ -17289,7 +19808,7 @@ type UpsertCCRuleRequest struct { // 匹配方法,0表示等于,1表示前缀匹配,2表示包含,3表示不等于,6表示后缀匹配,7表示不包含 MatchFunc *int64 `json:"MatchFunc,omitnil,omitempty" name:"MatchFunc"` - // CC的匹配条件JSON序列化的字符串,示例:[{\"key\":\"Method\",\"args\":[\"=R0VU\"],\"match\":\"0\",\"encodeflag\":true}] Key可选值为 Method、Post、Referer、Cookie、User-Agent、CustomHeader match可选值为,当Key为Method的时候可选值为0(等于)、3(不等于)。 Key为Post的时候可选值为0(等于)、3(不等于),Key为Cookie的时候可选值为0(等于)、2(包含),3(不等于)、7(不包含)、 当Key为Referer的时候可选值为0(等于)、3(不等于)、1(前缀匹配)、6(后缀匹配)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为Cookie的时候可选值为0(等于)、3(不等于)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为User-Agent的时候可选值为0(等于)、3(不等于)、1(前缀匹配)、6(后缀匹配)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为CustomHeader的时候可选值为0(等于)、3(不等于)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空)。 Key为IPLocation时,可选值为13(属于)、14(不属于)。args用来表示匹配内容,需要设置encodeflag为true,当Key为Post、Cookie、CustomHeader时,用等号=来分别串接Key和Value,并分别用Base64编码,类似YWJj=YWJj。当Key为Referer、User-Agent时,用等号=来串接Value,类似=YWJj。 + // CC的匹配条件JSON序列化的字符串,示例:[{\"key\":\"Method\",\"args\":[\"=R0VU\"],\"match\":\"0\",\"encodeflag\":true}] Key可选值为 Method、Post、Referer、Cookie、User-Agent、CustomHeader、CaptchaRisk、CaptchaDeviceRisk、CaptchaScore match可选值为,当Key为Method的时候可选值为0(等于)、3(不等于)。 Key为Post的时候可选值为0(等于)、3(不等于),Key为Cookie的时候可选值为0(等于)、2(包含),3(不等于)、7(不包含)、 当Key为Referer的时候可选值为0(等于)、3(不等于)、1(前缀匹配)、6(后缀匹配)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为Cookie的时候可选值为0(等于)、3(不等于)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为User-Agent的时候可选值为0(等于)、3(不等于)、1(前缀匹配)、6(后缀匹配)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空), 当Key为CustomHeader的时候可选值为0(等于)、3(不等于)、2(包含)、7(不包含)、12(存在)、5(不存在)、4(内容为空)。 Key为IPLocation时,可选值为13(属于)、14(不属于)。 Key为CaptchaRisk时,可选值为0(等于)、3(不等于)、13(属于)、14(不属于)、12(存在)、5(不存在)。 Key为CaptchaDeviceRisk时,可选值为0(等于)、3(不等于)、13(属于)、14(不属于)、12(存在)、5(不存在)。 Key为CaptchaScore时,可选值为15(数值等于)、16(数值不等于)、17(数值大于)、18(数值小于)、19(数值大于等于)、20(数值小于等于)、12(存在)、5(不存在)。args用来表示匹配内容,需要设置encodeflag为true,当Key为Post、Cookie、CustomHeader时,用等号=来分别串接Key和Value,并分别用Base64编码,类似YWJj=YWJj。当Key为Referer、User-Agent时,用等号=来串接Value,类似=YWJj。 OptionsArr *string `json:"OptionsArr,omitnil,omitempty" name:"OptionsArr"` // waf版本,sparta-waf或者clb-waf @@ -17321,6 +19840,12 @@ type UpsertCCRuleRequest struct { // 配置方式的逻辑操作符,and或者or LogicalOp *string `json:"LogicalOp,omitnil,omitempty" name:"LogicalOp"` + + // 页面ID + PageId *string `json:"PageId,omitnil,omitempty" name:"PageId"` + + // 动作灰度比例,默认值100 + ActionRatio *uint64 `json:"ActionRatio,omitnil,omitempty" name:"ActionRatio"` } func (r *UpsertCCRuleRequest) ToJsonString() string { @@ -17357,6 +19882,8 @@ func (r *UpsertCCRuleRequest) FromJsonString(s string) error { delete(f, "LimitMethod") delete(f, "CelRule") delete(f, "LogicalOp") + delete(f, "PageId") + delete(f, "ActionRatio") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpsertCCRuleRequest has unknown keys!", "") } @@ -17515,6 +20042,9 @@ type UpsertSessionRequestParams struct { // Session对应ID SessionID *int64 `json:"SessionID,omitnil,omitempty" name:"SessionID"` + + // 精准匹配时配置的key + Key *string `json:"Key,omitnil,omitempty" name:"Key"` } type UpsertSessionRequest struct { @@ -17549,6 +20079,9 @@ type UpsertSessionRequest struct { // Session对应ID SessionID *int64 `json:"SessionID,omitnil,omitempty" name:"SessionID"` + + // 精准匹配时配置的key + Key *string `json:"Key,omitnil,omitempty" name:"Key"` } func (r *UpsertSessionRequest) ToJsonString() string { @@ -17573,6 +20106,7 @@ func (r *UpsertSessionRequest) FromJsonString(s string) error { delete(f, "Edition") delete(f, "SessionName") delete(f, "SessionID") + delete(f, "Key") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpsertSessionRequest has unknown keys!", "") } diff --git a/vendor/modules.txt b/vendor/modules.txt index 21c60d1878..154e51339b 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1356,7 +1356,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod/v20180717 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.1.14 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1170 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.1.36 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf/v20180125 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.1.45 diff --git a/website/docs/d/waf_owasp_rule_types.html.markdown b/website/docs/d/waf_owasp_rule_types.html.markdown new file mode 100644 index 0000000000..726824ee12 --- /dev/null +++ b/website/docs/d/waf_owasp_rule_types.html.markdown @@ -0,0 +1,57 @@ +--- +subcategory: "Web Application Firewall(WAF)" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_waf_owasp_rule_types" +sidebar_current: "docs-tencentcloud-datasource-waf_owasp_rule_types" +description: |- + Use this data source to query detailed information of WAF owasp rule types +--- + +# tencentcloud_waf_owasp_rule_types + +Use this data source to query detailed information of WAF owasp rule types + +## Example Usage + +```hcl +data "tencentcloud_waf_owasp_rule_types" "example" { + domain = "demo.com" + filters { + name = "RuleId" + values = ["10000001"] + exact_match = true + } +} +``` + +## Argument Reference + +The following arguments are supported: + +* `domain` - (Required, String) Domain names to be queried. +* `filters` - (Optional, List) Filter conditions. supports RuleId, CveID, and Desc. +* `result_output_file` - (Optional, String) Used to save results. + +The `filters` object supports the following: + +* `exact_match` - (Required, Bool) Exact search or not. +* `name` - (Required, String) Field name, used for filtering +Filter the sub-order number (value) by DealName. +* `values` - (Required, Set) Values after filtering. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `list` - Rule type list and information. + * `action` - Protection mode of the rule type. valid values: 0 (observation), 1 (intercept). + * `active_rule` - Indicates the total number of rules enabled under the rule type. + * `classification` - Data type category. + * `description` - Type description. + * `level` - Protection level of the rule type. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict). + * `status` - The switch status of the rule type. valid values: 0 (disabled), 1 (enabled). + * `total_rule` - Specifies all rules under the rule type. always. + * `type_id` - Type ID. + * `type_name` - Type name. + + diff --git a/website/docs/d/waf_owasp_rules.html.markdown b/website/docs/d/waf_owasp_rules.html.markdown new file mode 100644 index 0000000000..3b176f71a6 --- /dev/null +++ b/website/docs/d/waf_owasp_rules.html.markdown @@ -0,0 +1,69 @@ +--- +subcategory: "Web Application Firewall(WAF)" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_waf_owasp_rules" +sidebar_current: "docs-tencentcloud-datasource-waf_owasp_rules" +description: |- + Use this data source to query detailed information of WAF owasp rules +--- + +# tencentcloud_waf_owasp_rules + +Use this data source to query detailed information of WAF owasp rules + +## Example Usage + +```hcl +data "tencentcloud_waf_owasp_rules" "example" { + domain = "example.qcloud.com" + by = "RuleId" + order = "desc" + filters { + name = "RuleId" + values = ["106251141"] + exact_match = true + } +} +``` + +## Argument Reference + +The following arguments are supported: + +* `domain` - (Required, String) Domain to be queried. +* `by` - (Optional, String) Specifies the field used to sort. valid values: RuleId, ModifyTime. +* `filters` - (Optional, List) Specifies the criteria, support RuleId, TypeId, Desc, CveID, Status, and VulLevel. +* `order` - (Optional, String) Sorting method. supports asc, desc. +* `result_output_file` - (Optional, String) Used to save results. + +The `filters` object supports the following: + +* `exact_match` - (Required, Bool) Exact search or not. +* `name` - (Required, String) Field name, used for filtering +Filter the sub-order number (value) by DealName. +* `values` - (Required, Set) Values after filtering. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `list` - List of rules. + * `create_time` - Creation time. + * `cve_id` - CVE ID. + * `description` - Rule description. + * `level` - Protection level of the rule. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict). + * `locked` - Whether the user is locked. + * `modify_time` - Update time. + * `reason` - Reason for modification + +0: none (compatibility records are empty). +1: avoid false positives due to business characteristics. +2: reporting of rule-based false positives. +3: gray release of core business rules. +4: others. + * `rule_id` - Rule ID. + * `status` - Rule switch. valid values: 0 (disabled), 1 (enabled), 2 (observation only). + * `type_id` - Specifies the rule type ID. + * `vul_level` - Threat level. valid values: 0 (unknown), 100 (low risk), 200 (medium risk), 300 (high risk), 400 (critical). + + diff --git a/website/docs/r/waf_owasp_rule_status_config.html.markdown b/website/docs/r/waf_owasp_rule_status_config.html.markdown new file mode 100644 index 0000000000..634b36e87b --- /dev/null +++ b/website/docs/r/waf_owasp_rule_status_config.html.markdown @@ -0,0 +1,53 @@ +--- +subcategory: "Web Application Firewall(WAF)" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_waf_owasp_rule_status_config" +sidebar_current: "docs-tencentcloud-resource-waf_owasp_rule_status_config" +description: |- + Provides a resource to create a WAF owasp rule status config +--- + +# tencentcloud_waf_owasp_rule_status_config + +Provides a resource to create a WAF owasp rule status config + +## Example Usage + +```hcl +resource "tencentcloud_waf_owasp_rule_status_config" "example" { + domain = "demo.com" + rule_id = "106251141" + rule_status = 1 +} +``` + +## Argument Reference + +The following arguments are supported: + +* `domain` - (Required, String, ForceNew) Domain name. +* `rule_id` - (Required, String, ForceNew) Rule ID. +* `rule_status` - (Required, Int) Rule switch. valid values: 0 (disabled), 1 (enabled), 2 (observation only). +* `reason` - (Optional, Int) Reason for modification. valid values: 0: none (compatibility record is empty). 1: avoid false positives due to business characteristics. 2: reporting of rule-based false positives. 3: gray release of core business rules. 4: others. +* `type_id` - (Optional, Int) If reverse requires the input of data type. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. +* `cve_id` - CVE ID. +* `description` - Rule description. +* `level` - Protection level of the rule. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict). +* `locked` - Whether the user is locked. +* `vul_level` - Threat level. valid values: 0 (unknown), 100 (low risk), 200 (medium risk), 300 (high risk), 400 (critical). + + +## Import + +WAF owasp rule status config can be imported using the domain#ruleId, e.g. + +``` +terraform import tencentcloud_waf_owasp_rule_status_config.example demo.com#106251141 +``` + diff --git a/website/docs/r/waf_owasp_rule_type_config.html.markdown b/website/docs/r/waf_owasp_rule_type_config.html.markdown new file mode 100644 index 0000000000..b0745fa641 --- /dev/null +++ b/website/docs/r/waf_owasp_rule_type_config.html.markdown @@ -0,0 +1,55 @@ +--- +subcategory: "Web Application Firewall(WAF)" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_waf_owasp_rule_type_config" +sidebar_current: "docs-tencentcloud-resource-waf_owasp_rule_type_config" +description: |- + Provides a resource to create a WAF owasp rule type config +--- + +# tencentcloud_waf_owasp_rule_type_config + +Provides a resource to create a WAF owasp rule type config + +## Example Usage + +```hcl +resource "tencentcloud_waf_owasp_rule_type_config" "example" { + domain = "demo.com" + type_id = "30000000" + rule_type_status = 1 + rule_type_action = 1 + rule_type_level = 200 +} +``` + +## Argument Reference + +The following arguments are supported: + +* `domain` - (Required, String, ForceNew) Domain name. +* `type_id` - (Required, String, ForceNew) Rule type ID. +* `rule_type_action` - (Optional, Int) Protection mode of the rule type. valid values: 0 (observation), 1 (intercept). +* `rule_type_level` - (Optional, Int) Protection level of the rule. valid values: 100 (loose), 200 (normal), 300 (strict), 400 (ultra-strict). +* `rule_type_status` - (Optional, Int) The switch status of the rule type. valid values: 0 (disabled), 1 (enabled). + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. +* `active_rule` - Indicates the total number of rules enabled under the rule type. +* `classification` - Data type category. +* `description` - Rule type description. +* `rule_type_name` - Rule type name. +* `total_rule` - Specifies all rules under the rule type. always. + + +## Import + +WAF owasp rule type config can be imported using the domain#typeId, e.g. + +``` +terraform import tencentcloud_waf_owasp_rule_type_config.example demo.com#30000000 +``` + diff --git a/website/docs/r/waf_owasp_white_rule.html.markdown b/website/docs/r/waf_owasp_white_rule.html.markdown new file mode 100644 index 0000000000..1750474f43 --- /dev/null +++ b/website/docs/r/waf_owasp_white_rule.html.markdown @@ -0,0 +1,155 @@ +--- +subcategory: "Web Application Firewall(WAF)" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_waf_owasp_white_rule" +sidebar_current: "docs-tencentcloud-resource-waf_owasp_white_rule" +description: |- + Provides a resource to create a WAF owasp white rule +--- + +# tencentcloud_waf_owasp_white_rule + +Provides a resource to create a WAF owasp white rule + +## Example Usage + +```hcl +resource "tencentcloud_waf_owasp_white_rule" "example" { + name = "tf-example" + domain = "example.qcloud.com" + strategies { + field = "IP" + compare_func = "ipmatch" + content = "1.1.1.1" + arg = "" + case_not_sensitive = 0 + } + ids = [ + 10000000, + 20000000, + 30000000, + 40000000, + 90000000, + 110000000, + 190000000, + 200000000, + 210000000, + 220000000, + 230000000, + 240000000, + 250000000, + 260000000, + 270000000, + 280000000, + 290000000, + 300000000, + 310000000, + 320000000, + 330000000, + 340000000, + 350000000, + 360000000, + 370000000 + ] + type = 1 + job_type = "TimedJob" + job_date_time { + timed { + start_date_time = 0 + end_date_time = 0 + } + + time_t_zone = "UTC+8" + } + expire_time = 0 + status = 1 +} +``` + +## Argument Reference + +The following arguments are supported: + +* `domain` - (Required, String, ForceNew) Domain name. +* `expire_time` - (Required, Int) If the JobDateTime field is not set, this field is used. 0 means permanent, other values indicate the cutoff time for scheduled effect (unit: seconds). +* `ids` - (Required, Set: [`Int`]) ID list of allowlisted rules. +* `job_date_time` - (Required, List) Scheduled task configuration. +* `job_type` - (Required, String) Rule execution mode: TimedJob indicates scheduled execution. CronJob indicates periodic execution. +* `name` - (Required, String) Rule name. +* `strategies` - (Required, List) Rule-Based matching policy list. +* `type` - (Required, Int) Allowlist type. valid values: 0 (allowlisting by specific rule ID), 1 (allowlisting by rule type). +* `status` - (Optional, Int) Rule status. valid values: 0 (disabled), 1 (enabled). enabled by default. + +The `cron` object of `job_date_time` supports the following: + +* `days` - (Optional, Set) Execution day of each month. +* `end_time` - (Optional, String) End time. +* `start_time` - (Optional, String) Start time. +* `w_days` - (Optional, Set) Execution day of each week. + +The `job_date_time` object supports the following: + +* `cron` - (Optional, List) Time parameter for periodic execution. +* `time_t_zone` - (Optional, String) Specifies the time zone. +* `timed` - (Optional, List) Time parameter for scheduled execution. + +The `strategies` object supports the following: + +* `arg` - (Required, String) Specifies the matching parameter. + +Configuration parameters are divided into two data types: parameter not supported and support parameters. +When the match field is one of the following four, the matching parameter can be entered, otherwise not supported. +GET (get parameter value). +POST (post parameter value). +ARGS_COOKIE (COOKIE parameter value). +ARGS_HEADER (HEADER parameter value). +* `compare_func` - (Required, String) Specifies the logic symbol. + +Logical symbols are divided into the following types:. +Empty (content is empty). +null (not found). +Eq (equal to). +neq (not equal to). +contains (contain). +ncontains (do not contain). +strprefix (prefix matching). +strsuffix (suffix matching). +Len_eq (length equals to). +Len_gt (length greater than). +Len_lt (length less than). +ipmatch (belong). +ipnmatch (not_in). +numgt (value greater than). +NumValue smaller than]. +Value equal to. +numneq (value not equal to). +numle (less than or equal to). +numge (value is greater than or equal to). +geo_in (IP geographic belong). +geo_not_in (IP geographic not_in). +Specifies different logical operators for matching fields. for details, see the matching field table above. +* `content` - (Required, String) Specifies the match content. + +Currently, when the match field is COOKIE (COOKIE), match content is not required. all others are needed. +* `field` - (Required, String) Specifies the matching field. + +Different matching fields result in different matching parameters, logical operators, and matching contents. the details are as follows:. +. +
Matching Field Matching Parameter Logical Symbol Matching Content
IP (source IP) Parameters are not supported. ipmatch (match)
ipnmatch (mismatch)
Multiple IP addresses are separated by commas. A maximum of 20 IP addresses are allowed.
IPv6 (source IPv6) Parameters are not supported. ipmatch (match)
ipnmatch (mismatch)
A single IPv6 address is supported.
Referer (referer) Parameters are not supported. empty (Content is empty.)
null (do not exist)
eq (equal to)
neq (not equal to)
contains (contain)
ncontains (do not contain)
len_eq (length equals to)
len_gt (length is greater than)
len_lt (length is less than)
strprefix (prefix matching)
strsuffix (suffix matching)
rematch (regular expression matching)
Enter the content, with a maximum of 512 characters.
URL (request path) Parameters are not supported. eq (equal to)
neq (not equal to)
contains (contain)
ncontains (do not contain)
len_eq (length equals to)
len_gt (length is greater than)
len_lt (length is + less than)
strprefix (prefix matching)
strsuffix (suffix matching)
rematch (regular expression matching)
Enter the content starting with /, with a maximum of 512 characters.
UserAgent (UserAgent) Parameters are not supported.Same logical symbols as the matching field Referer Enter the content with a maximum of 512 characters.
HTTP_METHOD (HTTP request method) Parameters are not supported. eq (equal to)
neq (not equal to)
Enter the method name. The uppercase is recommended.
QUERY_STRING (request string) Parameters are not supported. Same logical symbol as the matching field Request PathEnter the content with a maximum of 512 characters.
GET (GET parameter value) Parameter entry is supported. contains (contain)
ncontains (do not contain)
len_eq (length equals to)
len_gt (length is greater than)
len_lt (length is less than)
strprefix (prefix matching)
strsuffix (suffix matching)
Enter the content with a maximum of 512 characters.
GET_PARAMS_NAMES (GET parameter name) Parameters are not supported. exist (Parameter exists.)
nexist (Parameter does not exist.)
len_eq (length equals to)
len_gt (length is greater than)
len_lt (length is less than)
strprefix (prefix matching)
strsuffix (suffix matching)
Enter the content with a maximum of 512 characters.
POST (POST parameter value) Parameter entry is supported. Same logical symbol as the matching field GET Parameter Value Enter the content with a maximum of 512 characters.
GET_POST_NAMES (POST parameter name) Parameters are not supported. Same logical symbol as the matching field GET Parameter Name Enter the content with a maximum of 512 characters.
POST_BODY (complete body) Parameters are not supported. Same logical symbol as the matching field Request PathEnter the body content with a maximum of 512 characters.
COOKIE (cookie) Parameters are not supported. empty (Content is empty.)
null (do not exist)
rematch (regular expression matching)
Unsupported currently
GET_COOKIES_NAMES (cookie parameter name) Parameters are not supported. Same logical symbol as the matching field GET Parameter Name Enter the content with a maximum of 512 characters.
ARGS_COOKIE (cookie parameter value) Parameter entry is supported. Same logical symbol as the matching field GET Parameter Value Enter the content512 characters limit
GET_HEADERS_NAMES (Header parameter name)parameter not supportedexsit (parameter exists)
nexsit (parameter does not exist)
len_eq (LENGTH equal)
len_gt (LENGTH greater than)
len_lt (LENGTH less than)
strprefix (prefix match)
strsuffix (suffix matching)
rematch (regular expression matching)
enter CONTENT, lowercase is recommended, up to 512 characters
ARGS_Header (Header parameter value)support parameter entrycontains (include)
ncontains (does not include)
len_eq (LENGTH equal)
len_gt (LENGTH greater than)
len_lt (LENGTH less than)
strprefix (prefix match)
strsuffix (suffix matching)
rematch (regular expression matching)
enter CONTENT, up to 512 characters
CONTENT_LENGTH (CONTENT-LENGTH)support parameter entrynumgt (value greater than)
numlt (value smaller than)
numeq (value equal to)
enter an integer between 0-9999999999999
IP_GEO (source IP geolocation)support parameter entryGEO_in (belong)
GEO_not_in (not_in)
enter CONTENT, up to 10240 characters, format: serialized JSON, format: [{"Country":"china","Region":"guangdong","City":"shenzhen"}]
CAPTCHA_RISK (CAPTCHA RISK)parameter not supportedeq (equal)
neq (not equal to)
belong (belong)
not_belong (not belong to)
null (nonexistent)
exist (exist)
enter RISK level value, value range 0-255
CAPTCHA_DEVICE_RISK (CAPTCHA DEVICE RISK)parameter not supportedeq (equal)
neq (not equal to)
belong (belong)
not_belong (not belong to)
null (nonexistent)
exist (exist)
enter DEVICE RISK code, valid values: 101, 201, 301, 401, 501, 601, 701
CAPTCHAR_SCORE (CAPTCHA RISK assessment SCORE)parameter not supportednumeq (value equal to)
numgt (value greater than)
numlt (value smaller than)
numle (less than or equal to)
numge (value is greater than or equal to)
null (nonexistent)
exist (exist)
enter assessment SCORE, value range 0-100
. +* `case_not_sensitive` - (Optional, Int) Case-Sensitive. +Case-Insensitive. + +The `timed` object of `job_date_time` supports the following: + +* `end_date_time` - (Optional, Int) End timestamp, in seconds. +* `start_date_time` - (Optional, Int) Start timestamp, in seconds. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. +* `rule_id` - Rule ID. + + diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb index 824d7285ac..08223d919c 100644 --- a/website/tencentcloud.erb +++ b/website/tencentcloud.erb @@ -6942,6 +6942,12 @@
  • tencentcloud_waf_instance_qps_limit
  • +
  • + tencentcloud_waf_owasp_rule_types +
  • +
  • + tencentcloud_waf_owasp_rules +
  • tencentcloud_waf_peak_points
  • @@ -7025,6 +7031,15 @@
  • tencentcloud_waf_module_status
  • +
  • + tencentcloud_waf_owasp_rule_status_config +
  • +
  • + tencentcloud_waf_owasp_rule_type_config +
  • +
  • + tencentcloud_waf_owasp_white_rule +
  • tencentcloud_waf_protection_mode
  • From 1caeb0aeb2b3e965a065a5e4fb0b0731952853e7 Mon Sep 17 00:00:00 2001 From: SevenEarth <391613297@qq.com> Date: Mon, 17 Nov 2025 19:45:39 +0800 Subject: [PATCH 2/2] add --- .changelog/3596.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .changelog/3596.txt diff --git a/.changelog/3596.txt b/.changelog/3596.txt new file mode 100644 index 0000000000..5ab8ecd417 --- /dev/null +++ b/.changelog/3596.txt @@ -0,0 +1,19 @@ +```release-note:new-data-source +tencentcloud_waf_owasp_rule_types +``` + +```release-note:new-data-source +tencentcloud_waf_owasp_rules +``` + +```release-note:new-resource +tencentcloud_waf_owasp_rule_type_config +``` + +```release-note:new-resource +tencentcloud_waf_owasp_rule_status_config +``` + +```release-note:new-resource +tencentcloud_waf_owasp_white_rule +``` \ No newline at end of file