Sfoglia il codice sorgente

Generated 2018-01-17 for waf-openapi.

sdk-team 6 anni fa
parent
commit
6b069caa91
34 ha cambiato i file con 2618 aggiunte e 0 eliminazioni
  1. 3 0
      ChangeLog.txt
  2. 129 0
      services/waf_openapi/client.go
  3. 109 0
      services/waf_openapi/create_acl_rule.go
  4. 111 0
      services/waf_openapi/create_cert_and_key.go
  5. 117 0
      services/waf_openapi/create_domain_config.go
  6. 111 0
      services/waf_openapi/create_protection_module_rule.go
  7. 109 0
      services/waf_openapi/delete_acl_rule.go
  8. 108 0
      services/waf_openapi/delete_domain_config.go
  9. 110 0
      services/waf_openapi/describe_acl_rules.go
  10. 108 0
      services/waf_openapi/describe_async_task_status.go
  11. 108 0
      services/waf_openapi/describe_domain_config.go
  12. 108 0
      services/waf_openapi/describe_domain_config_status.go
  13. 107 0
      services/waf_openapi/describe_domain_names.go
  14. 107 0
      services/waf_openapi/describe_pay_info.go
  15. 113 0
      services/waf_openapi/describe_protection_module_rules.go
  16. 105 0
      services/waf_openapi/describe_regions.go
  17. 107 0
      services/waf_openapi/describe_waf_source_ip_segment.go
  18. 23 0
      services/waf_openapi/endpoint.go
  19. 109 0
      services/waf_openapi/modify_acl_rule.go
  20. 116 0
      services/waf_openapi/modify_domain_config.go
  21. 111 0
      services/waf_openapi/modify_protection_rule_cache_status.go
  22. 113 0
      services/waf_openapi/modify_protection_rule_status.go
  23. 109 0
      services/waf_openapi/modify_waf_switch.go
  24. 32 0
      services/waf_openapi/struct_acl_rule.go
  25. 21 0
      services/waf_openapi/struct_acl_rules.go
  26. 23 0
      services/waf_openapi/struct_condition.go
  27. 21 0
      services/waf_openapi/struct_conditions.go
  28. 24 0
      services/waf_openapi/struct_domain_config.go
  29. 21 0
      services/waf_openapi/struct_module_rules.go
  30. 24 0
      services/waf_openapi/struct_module_rules_item.go
  31. 22 0
      services/waf_openapi/struct_region.go
  32. 21 0
      services/waf_openapi/struct_regions.go
  33. 37 0
      services/waf_openapi/struct_result.go
  34. 21 0
      services/waf_openapi/struct_result_in_describe_domain_names.go

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2019-09-06 Version: 1.60.152
+- Generated 2018-01-17 for `waf-openapi`.
+
 2019-09-06 Version: 1.60.151
 - Supported specifying vswitch when creating vpngateway.
 

+ 129 - 0
services/waf_openapi/client.go

@@ -0,0 +1,129 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"reflect"
+
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/provider"
+)
+
+// Client is the sdk client struct, each func corresponds to an OpenAPI
+type Client struct {
+	sdk.Client
+}
+
+// SetClientProperty Set Property by Reflect
+func SetClientProperty(client *Client, propertyName string, propertyValue interface{}) {
+	v := reflect.ValueOf(client).Elem()
+	if v.FieldByName(propertyName).IsValid() && v.FieldByName(propertyName).CanSet() {
+		v.FieldByName(propertyName).Set(reflect.ValueOf(propertyValue))
+	}
+}
+
+// SetEndpointDataToClient Set EndpointMap and ENdpointType
+func SetEndpointDataToClient(client *Client) {
+	SetClientProperty(client, "EndpointMap", GetEndpointMap())
+	SetClientProperty(client, "EndpointType", GetEndpointType())
+}
+
+// NewClient creates a sdk client with environment variables
+func NewClient() (client *Client, err error) {
+	client = &Client{}
+	err = client.Init()
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithProvider creates a sdk client with providers
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithProvider(regionId string, providers ...provider.Provider) (client *Client, err error) {
+	client = &Client{}
+	var pc provider.Provider
+	if len(providers) == 0 {
+		pc = provider.DefaultChain
+	} else {
+		pc = provider.NewProviderChain(providers)
+	}
+	err = client.InitWithProviderChain(regionId, pc)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithOptions creates a sdk client with regionId/sdkConfig/credential
+// this is the common api to create a sdk client
+func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithOptions(regionId, config, credential)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithAccessKey is a shortcut to create sdk client with accesskey
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithStsToken is a shortcut to create sdk client with sts token
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn and policy
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRamRoleArnAndPolicy(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArnAndPolicy(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithEcsRamRole(regionId, roleName)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)
+	SetEndpointDataToClient(client)
+	return
+}

+ 109 - 0
services/waf_openapi/create_acl_rule.go

@@ -0,0 +1,109 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateAclRule invokes the waf_openapi.CreateAclRule API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createaclrule.html
+func (client *Client) CreateAclRule(request *CreateAclRuleRequest) (response *CreateAclRuleResponse, err error) {
+	response = CreateCreateAclRuleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateAclRuleWithChan invokes the waf_openapi.CreateAclRule API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createaclrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAclRuleWithChan(request *CreateAclRuleRequest) (<-chan *CreateAclRuleResponse, <-chan error) {
+	responseChan := make(chan *CreateAclRuleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateAclRule(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateAclRuleWithCallback invokes the waf_openapi.CreateAclRule API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createaclrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAclRuleWithCallback(request *CreateAclRuleRequest, callback func(response *CreateAclRuleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateAclRuleResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateAclRule(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateAclRuleRequest is the request struct for api CreateAclRule
+type CreateAclRuleRequest struct {
+	*requests.RpcRequest
+	Rules      string `position:"Query" name:"Rules"`
+	InstanceId string `position:"Query" name:"InstanceId"`
+	SourceIp   string `position:"Query" name:"SourceIp"`
+	Domain     string `position:"Query" name:"Domain"`
+	Lang       string `position:"Query" name:"Lang"`
+	Region     string `position:"Query" name:"Region"`
+}
+
+// CreateAclRuleResponse is the response struct for api CreateAclRule
+type CreateAclRuleResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateCreateAclRuleRequest creates a request to invoke CreateAclRule API
+func CreateCreateAclRuleRequest() (request *CreateAclRuleRequest) {
+	request = &CreateAclRuleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "CreateAclRule", "waf", "openAPI")
+	return
+}
+
+// CreateCreateAclRuleResponse creates a response to parse from CreateAclRule response
+func CreateCreateAclRuleResponse() (response *CreateAclRuleResponse) {
+	response = &CreateAclRuleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/waf_openapi/create_cert_and_key.go

@@ -0,0 +1,111 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateCertAndKey invokes the waf_openapi.CreateCertAndKey API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createcertandkey.html
+func (client *Client) CreateCertAndKey(request *CreateCertAndKeyRequest) (response *CreateCertAndKeyResponse, err error) {
+	response = CreateCreateCertAndKeyResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateCertAndKeyWithChan invokes the waf_openapi.CreateCertAndKey API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createcertandkey.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateCertAndKeyWithChan(request *CreateCertAndKeyRequest) (<-chan *CreateCertAndKeyResponse, <-chan error) {
+	responseChan := make(chan *CreateCertAndKeyResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateCertAndKey(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateCertAndKeyWithCallback invokes the waf_openapi.CreateCertAndKey API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createcertandkey.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateCertAndKeyWithCallback(request *CreateCertAndKeyRequest, callback func(response *CreateCertAndKeyResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateCertAndKeyResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateCertAndKey(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateCertAndKeyRequest is the request struct for api CreateCertAndKey
+type CreateCertAndKeyRequest struct {
+	*requests.RpcRequest
+	Cert          string `position:"Query" name:"Cert"`
+	SourceIp      string `position:"Query" name:"SourceIp"`
+	HttpsCertName string `position:"Query" name:"HttpsCertName"`
+	Lang          string `position:"Query" name:"Lang"`
+	Key           string `position:"Query" name:"Key"`
+	InstanceId    string `position:"Query" name:"InstanceId"`
+	Domain        string `position:"Query" name:"Domain"`
+	Region        string `position:"Query" name:"Region"`
+}
+
+// CreateCertAndKeyResponse is the response struct for api CreateCertAndKey
+type CreateCertAndKeyResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateCreateCertAndKeyRequest creates a request to invoke CreateCertAndKey API
+func CreateCreateCertAndKeyRequest() (request *CreateCertAndKeyRequest) {
+	request = &CreateCertAndKeyRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "CreateCertAndKey", "waf", "openAPI")
+	return
+}
+
+// CreateCreateCertAndKeyResponse creates a response to parse from CreateCertAndKey response
+func CreateCreateCertAndKeyResponse() (response *CreateCertAndKeyResponse) {
+	response = &CreateCertAndKeyResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/waf_openapi/create_domain_config.go

@@ -0,0 +1,117 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateDomainConfig invokes the waf_openapi.CreateDomainConfig API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createdomainconfig.html
+func (client *Client) CreateDomainConfig(request *CreateDomainConfigRequest) (response *CreateDomainConfigResponse, err error) {
+	response = CreateCreateDomainConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateDomainConfigWithChan invokes the waf_openapi.CreateDomainConfig API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createdomainconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateDomainConfigWithChan(request *CreateDomainConfigRequest) (<-chan *CreateDomainConfigResponse, <-chan error) {
+	responseChan := make(chan *CreateDomainConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateDomainConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateDomainConfigWithCallback invokes the waf_openapi.CreateDomainConfig API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createdomainconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateDomainConfigWithCallback(request *CreateDomainConfigRequest, callback func(response *CreateDomainConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateDomainConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateDomainConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateDomainConfigRequest is the request struct for api CreateDomainConfig
+type CreateDomainConfigRequest struct {
+	*requests.RpcRequest
+	SourceIp        string           `position:"Query" name:"SourceIp"`
+	HttpPort        string           `position:"Query" name:"HttpPort"`
+	Lang            string           `position:"Query" name:"Lang"`
+	Protocols       string           `position:"Query" name:"Protocols"`
+	RsType          requests.Integer `position:"Query" name:"RsType"`
+	HttpsRedirect   requests.Integer `position:"Query" name:"HttpsRedirect"`
+	InstanceId      string           `position:"Query" name:"InstanceId"`
+	SourceIps       string           `position:"Query" name:"SourceIps"`
+	Domain          string           `position:"Query" name:"Domain"`
+	IsAccessProduct requests.Integer `position:"Query" name:"IsAccessProduct"`
+	HttpsPort       string           `position:"Query" name:"HttpsPort"`
+	Region          string           `position:"Query" name:"Region"`
+	LoadBalancing   requests.Integer `position:"Query" name:"LoadBalancing"`
+	HttpToUserIp    requests.Integer `position:"Query" name:"HttpToUserIp"`
+}
+
+// CreateDomainConfigResponse is the response struct for api CreateDomainConfig
+type CreateDomainConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateCreateDomainConfigRequest creates a request to invoke CreateDomainConfig API
+func CreateCreateDomainConfigRequest() (request *CreateDomainConfigRequest) {
+	request = &CreateDomainConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "CreateDomainConfig", "waf", "openAPI")
+	return
+}
+
+// CreateCreateDomainConfigResponse creates a response to parse from CreateDomainConfig response
+func CreateCreateDomainConfigResponse() (response *CreateDomainConfigResponse) {
+	response = &CreateDomainConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/waf_openapi/create_protection_module_rule.go

@@ -0,0 +1,111 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateProtectionModuleRule invokes the waf_openapi.CreateProtectionModuleRule API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createprotectionmodulerule.html
+func (client *Client) CreateProtectionModuleRule(request *CreateProtectionModuleRuleRequest) (response *CreateProtectionModuleRuleResponse, err error) {
+	response = CreateCreateProtectionModuleRuleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateProtectionModuleRuleWithChan invokes the waf_openapi.CreateProtectionModuleRule API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createprotectionmodulerule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateProtectionModuleRuleWithChan(request *CreateProtectionModuleRuleRequest) (<-chan *CreateProtectionModuleRuleResponse, <-chan error) {
+	responseChan := make(chan *CreateProtectionModuleRuleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateProtectionModuleRule(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateProtectionModuleRuleWithCallback invokes the waf_openapi.CreateProtectionModuleRule API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/createprotectionmodulerule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateProtectionModuleRuleWithCallback(request *CreateProtectionModuleRuleRequest, callback func(response *CreateProtectionModuleRuleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateProtectionModuleRuleResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateProtectionModuleRule(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateProtectionModuleRuleRequest is the request struct for api CreateProtectionModuleRule
+type CreateProtectionModuleRuleRequest struct {
+	*requests.RpcRequest
+	Rule       string `position:"Query" name:"Rule"`
+	SourceIp   string `position:"Query" name:"SourceIp"`
+	Defense    string `position:"Query" name:"Defense"`
+	Lang       string `position:"Query" name:"Lang"`
+	InstanceId string `position:"Query" name:"InstanceId"`
+	Domain     string `position:"Query" name:"Domain"`
+	Region     string `position:"Query" name:"Region"`
+}
+
+// CreateProtectionModuleRuleResponse is the response struct for api CreateProtectionModuleRule
+type CreateProtectionModuleRuleResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	TaskStatus int    `json:"TaskStatus" xml:"TaskStatus"`
+	WafTaskId  int    `json:"WafTaskId" xml:"WafTaskId"`
+}
+
+// CreateCreateProtectionModuleRuleRequest creates a request to invoke CreateProtectionModuleRule API
+func CreateCreateProtectionModuleRuleRequest() (request *CreateProtectionModuleRuleRequest) {
+	request = &CreateProtectionModuleRuleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "CreateProtectionModuleRule", "waf", "openAPI")
+	return
+}
+
+// CreateCreateProtectionModuleRuleResponse creates a response to parse from CreateProtectionModuleRule response
+func CreateCreateProtectionModuleRuleResponse() (response *CreateProtectionModuleRuleResponse) {
+	response = &CreateProtectionModuleRuleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/waf_openapi/delete_acl_rule.go

@@ -0,0 +1,109 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteAclRule invokes the waf_openapi.DeleteAclRule API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/deleteaclrule.html
+func (client *Client) DeleteAclRule(request *DeleteAclRuleRequest) (response *DeleteAclRuleResponse, err error) {
+	response = CreateDeleteAclRuleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteAclRuleWithChan invokes the waf_openapi.DeleteAclRule API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/deleteaclrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAclRuleWithChan(request *DeleteAclRuleRequest) (<-chan *DeleteAclRuleResponse, <-chan error) {
+	responseChan := make(chan *DeleteAclRuleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteAclRule(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteAclRuleWithCallback invokes the waf_openapi.DeleteAclRule API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/deleteaclrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAclRuleWithCallback(request *DeleteAclRuleRequest, callback func(response *DeleteAclRuleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteAclRuleResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteAclRule(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteAclRuleRequest is the request struct for api DeleteAclRule
+type DeleteAclRuleRequest struct {
+	*requests.RpcRequest
+	InstanceId string           `position:"Query" name:"InstanceId"`
+	SourceIp   string           `position:"Query" name:"SourceIp"`
+	Domain     string           `position:"Query" name:"Domain"`
+	Lang       string           `position:"Query" name:"Lang"`
+	RuleId     requests.Integer `position:"Query" name:"RuleId"`
+	Region     string           `position:"Query" name:"Region"`
+}
+
+// DeleteAclRuleResponse is the response struct for api DeleteAclRule
+type DeleteAclRuleResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateDeleteAclRuleRequest creates a request to invoke DeleteAclRule API
+func CreateDeleteAclRuleRequest() (request *DeleteAclRuleRequest) {
+	request = &DeleteAclRuleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DeleteAclRule", "waf", "openAPI")
+	return
+}
+
+// CreateDeleteAclRuleResponse creates a response to parse from DeleteAclRule response
+func CreateDeleteAclRuleResponse() (response *DeleteAclRuleResponse) {
+	response = &DeleteAclRuleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/waf_openapi/delete_domain_config.go

@@ -0,0 +1,108 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteDomainConfig invokes the waf_openapi.DeleteDomainConfig API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/deletedomainconfig.html
+func (client *Client) DeleteDomainConfig(request *DeleteDomainConfigRequest) (response *DeleteDomainConfigResponse, err error) {
+	response = CreateDeleteDomainConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteDomainConfigWithChan invokes the waf_openapi.DeleteDomainConfig API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/deletedomainconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteDomainConfigWithChan(request *DeleteDomainConfigRequest) (<-chan *DeleteDomainConfigResponse, <-chan error) {
+	responseChan := make(chan *DeleteDomainConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteDomainConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteDomainConfigWithCallback invokes the waf_openapi.DeleteDomainConfig API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/deletedomainconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteDomainConfigWithCallback(request *DeleteDomainConfigRequest, callback func(response *DeleteDomainConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteDomainConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteDomainConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteDomainConfigRequest is the request struct for api DeleteDomainConfig
+type DeleteDomainConfigRequest struct {
+	*requests.RpcRequest
+	InstanceId string `position:"Query" name:"InstanceId"`
+	SourceIp   string `position:"Query" name:"SourceIp"`
+	Domain     string `position:"Query" name:"Domain"`
+	Lang       string `position:"Query" name:"Lang"`
+	Region     string `position:"Query" name:"Region"`
+}
+
+// DeleteDomainConfigResponse is the response struct for api DeleteDomainConfig
+type DeleteDomainConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateDeleteDomainConfigRequest creates a request to invoke DeleteDomainConfig API
+func CreateDeleteDomainConfigRequest() (request *DeleteDomainConfigRequest) {
+	request = &DeleteDomainConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DeleteDomainConfig", "waf", "openAPI")
+	return
+}
+
+// CreateDeleteDomainConfigResponse creates a response to parse from DeleteDomainConfig response
+func CreateDeleteDomainConfigResponse() (response *DeleteDomainConfigResponse) {
+	response = &DeleteDomainConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/waf_openapi/describe_acl_rules.go

@@ -0,0 +1,110 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeAclRules invokes the waf_openapi.DescribeAclRules API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeaclrules.html
+func (client *Client) DescribeAclRules(request *DescribeAclRulesRequest) (response *DescribeAclRulesResponse, err error) {
+	response = CreateDescribeAclRulesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAclRulesWithChan invokes the waf_openapi.DescribeAclRules API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeaclrules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAclRulesWithChan(request *DescribeAclRulesRequest) (<-chan *DescribeAclRulesResponse, <-chan error) {
+	responseChan := make(chan *DescribeAclRulesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAclRules(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAclRulesWithCallback invokes the waf_openapi.DescribeAclRules API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeaclrules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAclRulesWithCallback(request *DescribeAclRulesRequest, callback func(response *DescribeAclRulesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAclRulesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAclRules(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAclRulesRequest is the request struct for api DescribeAclRules
+type DescribeAclRulesRequest struct {
+	*requests.RpcRequest
+	SourceIp    string           `position:"Query" name:"SourceIp"`
+	PageSize    requests.Integer `position:"Query" name:"PageSize"`
+	Lang        string           `position:"Query" name:"Lang"`
+	CurrentPage requests.Integer `position:"Query" name:"CurrentPage"`
+	InstanceId  string           `position:"Query" name:"InstanceId"`
+	Domain      string           `position:"Query" name:"Domain"`
+	Region      string           `position:"Query" name:"Region"`
+}
+
+// DescribeAclRulesResponse is the response struct for api DescribeAclRules
+type DescribeAclRulesResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateDescribeAclRulesRequest creates a request to invoke DescribeAclRules API
+func CreateDescribeAclRulesRequest() (request *DescribeAclRulesRequest) {
+	request = &DescribeAclRulesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DescribeAclRules", "waf", "openAPI")
+	return
+}
+
+// CreateDescribeAclRulesResponse creates a response to parse from DescribeAclRules response
+func CreateDescribeAclRulesResponse() (response *DescribeAclRulesResponse) {
+	response = &DescribeAclRulesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/waf_openapi/describe_async_task_status.go

@@ -0,0 +1,108 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeAsyncTaskStatus invokes the waf_openapi.DescribeAsyncTaskStatus API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeasynctaskstatus.html
+func (client *Client) DescribeAsyncTaskStatus(request *DescribeAsyncTaskStatusRequest) (response *DescribeAsyncTaskStatusResponse, err error) {
+	response = CreateDescribeAsyncTaskStatusResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAsyncTaskStatusWithChan invokes the waf_openapi.DescribeAsyncTaskStatus API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeasynctaskstatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAsyncTaskStatusWithChan(request *DescribeAsyncTaskStatusRequest) (<-chan *DescribeAsyncTaskStatusResponse, <-chan error) {
+	responseChan := make(chan *DescribeAsyncTaskStatusResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAsyncTaskStatus(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAsyncTaskStatusWithCallback invokes the waf_openapi.DescribeAsyncTaskStatus API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeasynctaskstatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAsyncTaskStatusWithCallback(request *DescribeAsyncTaskStatusRequest, callback func(response *DescribeAsyncTaskStatusResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAsyncTaskStatusResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAsyncTaskStatus(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAsyncTaskStatusRequest is the request struct for api DescribeAsyncTaskStatus
+type DescribeAsyncTaskStatusRequest struct {
+	*requests.RpcRequest
+	InstanceId   string `position:"Query" name:"InstanceId"`
+	SourceIp     string `position:"Query" name:"SourceIp"`
+	WafRequestId string `position:"Query" name:"WafRequestId"`
+	Lang         string `position:"Query" name:"Lang"`
+	Region       string `position:"Query" name:"Region"`
+}
+
+// DescribeAsyncTaskStatusResponse is the response struct for api DescribeAsyncTaskStatus
+type DescribeAsyncTaskStatusResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateDescribeAsyncTaskStatusRequest creates a request to invoke DescribeAsyncTaskStatus API
+func CreateDescribeAsyncTaskStatusRequest() (request *DescribeAsyncTaskStatusRequest) {
+	request = &DescribeAsyncTaskStatusRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DescribeAsyncTaskStatus", "waf", "openAPI")
+	return
+}
+
+// CreateDescribeAsyncTaskStatusResponse creates a response to parse from DescribeAsyncTaskStatus response
+func CreateDescribeAsyncTaskStatusResponse() (response *DescribeAsyncTaskStatusResponse) {
+	response = &DescribeAsyncTaskStatusResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/waf_openapi/describe_domain_config.go

@@ -0,0 +1,108 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeDomainConfig invokes the waf_openapi.DescribeDomainConfig API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describedomainconfig.html
+func (client *Client) DescribeDomainConfig(request *DescribeDomainConfigRequest) (response *DescribeDomainConfigResponse, err error) {
+	response = CreateDescribeDomainConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDomainConfigWithChan invokes the waf_openapi.DescribeDomainConfig API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describedomainconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainConfigWithChan(request *DescribeDomainConfigRequest) (<-chan *DescribeDomainConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeDomainConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDomainConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDomainConfigWithCallback invokes the waf_openapi.DescribeDomainConfig API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describedomainconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainConfigWithCallback(request *DescribeDomainConfigRequest, callback func(response *DescribeDomainConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDomainConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDomainConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDomainConfigRequest is the request struct for api DescribeDomainConfig
+type DescribeDomainConfigRequest struct {
+	*requests.RpcRequest
+	InstanceId string `position:"Query" name:"InstanceId"`
+	SourceIp   string `position:"Query" name:"SourceIp"`
+	Domain     string `position:"Query" name:"Domain"`
+	Lang       string `position:"Query" name:"Lang"`
+	Region     string `position:"Query" name:"Region"`
+}
+
+// DescribeDomainConfigResponse is the response struct for api DescribeDomainConfig
+type DescribeDomainConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateDescribeDomainConfigRequest creates a request to invoke DescribeDomainConfig API
+func CreateDescribeDomainConfigRequest() (request *DescribeDomainConfigRequest) {
+	request = &DescribeDomainConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DescribeDomainConfig", "waf", "openAPI")
+	return
+}
+
+// CreateDescribeDomainConfigResponse creates a response to parse from DescribeDomainConfig response
+func CreateDescribeDomainConfigResponse() (response *DescribeDomainConfigResponse) {
+	response = &DescribeDomainConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/waf_openapi/describe_domain_config_status.go

@@ -0,0 +1,108 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeDomainConfigStatus invokes the waf_openapi.DescribeDomainConfigStatus API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describedomainconfigstatus.html
+func (client *Client) DescribeDomainConfigStatus(request *DescribeDomainConfigStatusRequest) (response *DescribeDomainConfigStatusResponse, err error) {
+	response = CreateDescribeDomainConfigStatusResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDomainConfigStatusWithChan invokes the waf_openapi.DescribeDomainConfigStatus API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describedomainconfigstatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainConfigStatusWithChan(request *DescribeDomainConfigStatusRequest) (<-chan *DescribeDomainConfigStatusResponse, <-chan error) {
+	responseChan := make(chan *DescribeDomainConfigStatusResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDomainConfigStatus(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDomainConfigStatusWithCallback invokes the waf_openapi.DescribeDomainConfigStatus API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describedomainconfigstatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainConfigStatusWithCallback(request *DescribeDomainConfigStatusRequest, callback func(response *DescribeDomainConfigStatusResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDomainConfigStatusResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDomainConfigStatus(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDomainConfigStatusRequest is the request struct for api DescribeDomainConfigStatus
+type DescribeDomainConfigStatusRequest struct {
+	*requests.RpcRequest
+	InstanceId string `position:"Query" name:"InstanceId"`
+	SourceIp   string `position:"Query" name:"SourceIp"`
+	Domain     string `position:"Query" name:"Domain"`
+	Lang       string `position:"Query" name:"Lang"`
+	Region     string `position:"Query" name:"Region"`
+}
+
+// DescribeDomainConfigStatusResponse is the response struct for api DescribeDomainConfigStatus
+type DescribeDomainConfigStatusResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateDescribeDomainConfigStatusRequest creates a request to invoke DescribeDomainConfigStatus API
+func CreateDescribeDomainConfigStatusRequest() (request *DescribeDomainConfigStatusRequest) {
+	request = &DescribeDomainConfigStatusRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DescribeDomainConfigStatus", "waf", "openAPI")
+	return
+}
+
+// CreateDescribeDomainConfigStatusResponse creates a response to parse from DescribeDomainConfigStatus response
+func CreateDescribeDomainConfigStatusResponse() (response *DescribeDomainConfigStatusResponse) {
+	response = &DescribeDomainConfigStatusResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/waf_openapi/describe_domain_names.go

@@ -0,0 +1,107 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeDomainNames invokes the waf_openapi.DescribeDomainNames API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describedomainnames.html
+func (client *Client) DescribeDomainNames(request *DescribeDomainNamesRequest) (response *DescribeDomainNamesResponse, err error) {
+	response = CreateDescribeDomainNamesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDomainNamesWithChan invokes the waf_openapi.DescribeDomainNames API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describedomainnames.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainNamesWithChan(request *DescribeDomainNamesRequest) (<-chan *DescribeDomainNamesResponse, <-chan error) {
+	responseChan := make(chan *DescribeDomainNamesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDomainNames(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDomainNamesWithCallback invokes the waf_openapi.DescribeDomainNames API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describedomainnames.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDomainNamesWithCallback(request *DescribeDomainNamesRequest, callback func(response *DescribeDomainNamesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDomainNamesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDomainNames(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDomainNamesRequest is the request struct for api DescribeDomainNames
+type DescribeDomainNamesRequest struct {
+	*requests.RpcRequest
+	InstanceId string `position:"Query" name:"InstanceId"`
+	SourceIp   string `position:"Query" name:"SourceIp"`
+	Lang       string `position:"Query" name:"Lang"`
+	Region     string `position:"Query" name:"Region"`
+}
+
+// DescribeDomainNamesResponse is the response struct for api DescribeDomainNames
+type DescribeDomainNamesResponse struct {
+	*responses.BaseResponse
+	RequestId string                      `json:"RequestId" xml:"RequestId"`
+	Result    ResultInDescribeDomainNames `json:"Result" xml:"Result"`
+}
+
+// CreateDescribeDomainNamesRequest creates a request to invoke DescribeDomainNames API
+func CreateDescribeDomainNamesRequest() (request *DescribeDomainNamesRequest) {
+	request = &DescribeDomainNamesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DescribeDomainNames", "waf", "openAPI")
+	return
+}
+
+// CreateDescribeDomainNamesResponse creates a response to parse from DescribeDomainNames response
+func CreateDescribeDomainNamesResponse() (response *DescribeDomainNamesResponse) {
+	response = &DescribeDomainNamesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/waf_openapi/describe_pay_info.go

@@ -0,0 +1,107 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribePayInfo invokes the waf_openapi.DescribePayInfo API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describepayinfo.html
+func (client *Client) DescribePayInfo(request *DescribePayInfoRequest) (response *DescribePayInfoResponse, err error) {
+	response = CreateDescribePayInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePayInfoWithChan invokes the waf_openapi.DescribePayInfo API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describepayinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePayInfoWithChan(request *DescribePayInfoRequest) (<-chan *DescribePayInfoResponse, <-chan error) {
+	responseChan := make(chan *DescribePayInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePayInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePayInfoWithCallback invokes the waf_openapi.DescribePayInfo API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describepayinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePayInfoWithCallback(request *DescribePayInfoRequest, callback func(response *DescribePayInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePayInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePayInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePayInfoRequest is the request struct for api DescribePayInfo
+type DescribePayInfoRequest struct {
+	*requests.RpcRequest
+	SourceIp       string `position:"Query" name:"SourceIp"`
+	InstanceSource string `position:"Query" name:"InstanceSource"`
+	Lang           string `position:"Query" name:"Lang"`
+	Region         string `position:"Query" name:"Region"`
+}
+
+// DescribePayInfoResponse is the response struct for api DescribePayInfo
+type DescribePayInfoResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateDescribePayInfoRequest creates a request to invoke DescribePayInfo API
+func CreateDescribePayInfoRequest() (request *DescribePayInfoRequest) {
+	request = &DescribePayInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DescribePayInfo", "waf", "openAPI")
+	return
+}
+
+// CreateDescribePayInfoResponse creates a response to parse from DescribePayInfo response
+func CreateDescribePayInfoResponse() (response *DescribePayInfoResponse) {
+	response = &DescribePayInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/waf_openapi/describe_protection_module_rules.go

@@ -0,0 +1,113 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeProtectionModuleRules invokes the waf_openapi.DescribeProtectionModuleRules API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeprotectionmodulerules.html
+func (client *Client) DescribeProtectionModuleRules(request *DescribeProtectionModuleRulesRequest) (response *DescribeProtectionModuleRulesResponse, err error) {
+	response = CreateDescribeProtectionModuleRulesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeProtectionModuleRulesWithChan invokes the waf_openapi.DescribeProtectionModuleRules API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeprotectionmodulerules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeProtectionModuleRulesWithChan(request *DescribeProtectionModuleRulesRequest) (<-chan *DescribeProtectionModuleRulesResponse, <-chan error) {
+	responseChan := make(chan *DescribeProtectionModuleRulesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeProtectionModuleRules(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeProtectionModuleRulesWithCallback invokes the waf_openapi.DescribeProtectionModuleRules API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeprotectionmodulerules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeProtectionModuleRulesWithCallback(request *DescribeProtectionModuleRulesRequest, callback func(response *DescribeProtectionModuleRulesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeProtectionModuleRulesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeProtectionModuleRules(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeProtectionModuleRulesRequest is the request struct for api DescribeProtectionModuleRules
+type DescribeProtectionModuleRulesRequest struct {
+	*requests.RpcRequest
+	SourceIp    string           `position:"Query" name:"SourceIp"`
+	Defense     string           `position:"Query" name:"Defense"`
+	PageSize    requests.Integer `position:"Query" name:"PageSize"`
+	Lang        string           `position:"Query" name:"Lang"`
+	CurrentPage requests.Integer `position:"Query" name:"CurrentPage"`
+	InstanceId  string           `position:"Query" name:"InstanceId"`
+	Domain      string           `position:"Query" name:"Domain"`
+	Region      string           `position:"Query" name:"Region"`
+}
+
+// DescribeProtectionModuleRulesResponse is the response struct for api DescribeProtectionModuleRules
+type DescribeProtectionModuleRulesResponse struct {
+	*responses.BaseResponse
+	RequestId   string            `json:"RequestId" xml:"RequestId"`
+	TaskStatus  int               `json:"TaskStatus" xml:"TaskStatus"`
+	Total       int               `json:"Total" xml:"Total"`
+	ModuleRules []ModuleRulesItem `json:"ModuleRules" xml:"ModuleRules"`
+}
+
+// CreateDescribeProtectionModuleRulesRequest creates a request to invoke DescribeProtectionModuleRules API
+func CreateDescribeProtectionModuleRulesRequest() (request *DescribeProtectionModuleRulesRequest) {
+	request = &DescribeProtectionModuleRulesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DescribeProtectionModuleRules", "waf", "openAPI")
+	return
+}
+
+// CreateDescribeProtectionModuleRulesResponse creates a response to parse from DescribeProtectionModuleRules response
+func CreateDescribeProtectionModuleRulesResponse() (response *DescribeProtectionModuleRulesResponse) {
+	response = &DescribeProtectionModuleRulesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/waf_openapi/describe_regions.go

@@ -0,0 +1,105 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeRegions invokes the waf_openapi.DescribeRegions API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeregions.html
+func (client *Client) DescribeRegions(request *DescribeRegionsRequest) (response *DescribeRegionsResponse, err error) {
+	response = CreateDescribeRegionsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeRegionsWithChan invokes the waf_openapi.DescribeRegions API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeregions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRegionsWithChan(request *DescribeRegionsRequest) (<-chan *DescribeRegionsResponse, <-chan error) {
+	responseChan := make(chan *DescribeRegionsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeRegions(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeRegionsWithCallback invokes the waf_openapi.DescribeRegions API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describeregions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRegionsWithCallback(request *DescribeRegionsRequest, callback func(response *DescribeRegionsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeRegionsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeRegions(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeRegionsRequest is the request struct for api DescribeRegions
+type DescribeRegionsRequest struct {
+	*requests.RpcRequest
+	SourceIp string `position:"Query" name:"SourceIp"`
+	Lang     string `position:"Query" name:"Lang"`
+}
+
+// DescribeRegionsResponse is the response struct for api DescribeRegions
+type DescribeRegionsResponse struct {
+	*responses.BaseResponse
+	RequestId string  `json:"RequestId" xml:"RequestId"`
+	Regions   Regions `json:"Regions" xml:"Regions"`
+}
+
+// CreateDescribeRegionsRequest creates a request to invoke DescribeRegions API
+func CreateDescribeRegionsRequest() (request *DescribeRegionsRequest) {
+	request = &DescribeRegionsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DescribeRegions", "waf", "openAPI")
+	return
+}
+
+// CreateDescribeRegionsResponse creates a response to parse from DescribeRegions response
+func CreateDescribeRegionsResponse() (response *DescribeRegionsResponse) {
+	response = &DescribeRegionsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/waf_openapi/describe_waf_source_ip_segment.go

@@ -0,0 +1,107 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeWafSourceIpSegment invokes the waf_openapi.DescribeWafSourceIpSegment API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describewafsourceipsegment.html
+func (client *Client) DescribeWafSourceIpSegment(request *DescribeWafSourceIpSegmentRequest) (response *DescribeWafSourceIpSegmentResponse, err error) {
+	response = CreateDescribeWafSourceIpSegmentResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeWafSourceIpSegmentWithChan invokes the waf_openapi.DescribeWafSourceIpSegment API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describewafsourceipsegment.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeWafSourceIpSegmentWithChan(request *DescribeWafSourceIpSegmentRequest) (<-chan *DescribeWafSourceIpSegmentResponse, <-chan error) {
+	responseChan := make(chan *DescribeWafSourceIpSegmentResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeWafSourceIpSegment(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeWafSourceIpSegmentWithCallback invokes the waf_openapi.DescribeWafSourceIpSegment API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/describewafsourceipsegment.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeWafSourceIpSegmentWithCallback(request *DescribeWafSourceIpSegmentRequest, callback func(response *DescribeWafSourceIpSegmentResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeWafSourceIpSegmentResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeWafSourceIpSegment(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeWafSourceIpSegmentRequest is the request struct for api DescribeWafSourceIpSegment
+type DescribeWafSourceIpSegmentRequest struct {
+	*requests.RpcRequest
+	InstanceId string `position:"Query" name:"InstanceId"`
+	SourceIp   string `position:"Query" name:"SourceIp"`
+	Lang       string `position:"Query" name:"Lang"`
+	Region     string `position:"Query" name:"Region"`
+}
+
+// DescribeWafSourceIpSegmentResponse is the response struct for api DescribeWafSourceIpSegment
+type DescribeWafSourceIpSegmentResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Ips       string `json:"Ips" xml:"Ips"`
+}
+
+// CreateDescribeWafSourceIpSegmentRequest creates a request to invoke DescribeWafSourceIpSegment API
+func CreateDescribeWafSourceIpSegmentRequest() (request *DescribeWafSourceIpSegmentRequest) {
+	request = &DescribeWafSourceIpSegmentRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "DescribeWafSourceIpSegment", "waf", "openAPI")
+	return
+}
+
+// CreateDescribeWafSourceIpSegmentResponse creates a response to parse from DescribeWafSourceIpSegment response
+func CreateDescribeWafSourceIpSegmentResponse() (response *DescribeWafSourceIpSegmentResponse) {
+	response = &DescribeWafSourceIpSegmentResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 23 - 0
services/waf_openapi/endpoint.go

@@ -0,0 +1,23 @@
+package waf_openapi
+
+// EndpointMap Endpoint Data
+var EndpointMap map[string]string
+
+// EndpointType regional or central
+var EndpointType = "regional"
+
+// GetEndpointMap Get Endpoint Data Map
+func GetEndpointMap() map[string]string {
+	if EndpointMap == nil {
+		EndpointMap = map[string]string{
+			"ap-southeast-1": "wafopenapi.ap-southeast-1.aliyuncs.com",
+			"cn-hangzhou":    "wafopenapi.cn-hangzhou.aliyuncs.com",
+		}
+	}
+	return EndpointMap
+}
+
+// GetEndpointType Get Endpoint Type Value
+func GetEndpointType() string {
+	return EndpointType
+}

+ 109 - 0
services/waf_openapi/modify_acl_rule.go

@@ -0,0 +1,109 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyAclRule invokes the waf_openapi.ModifyAclRule API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifyaclrule.html
+func (client *Client) ModifyAclRule(request *ModifyAclRuleRequest) (response *ModifyAclRuleResponse, err error) {
+	response = CreateModifyAclRuleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyAclRuleWithChan invokes the waf_openapi.ModifyAclRule API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifyaclrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyAclRuleWithChan(request *ModifyAclRuleRequest) (<-chan *ModifyAclRuleResponse, <-chan error) {
+	responseChan := make(chan *ModifyAclRuleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyAclRule(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyAclRuleWithCallback invokes the waf_openapi.ModifyAclRule API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifyaclrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyAclRuleWithCallback(request *ModifyAclRuleRequest, callback func(response *ModifyAclRuleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyAclRuleResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyAclRule(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyAclRuleRequest is the request struct for api ModifyAclRule
+type ModifyAclRuleRequest struct {
+	*requests.RpcRequest
+	Rules      string `position:"Query" name:"Rules"`
+	InstanceId string `position:"Query" name:"InstanceId"`
+	SourceIp   string `position:"Query" name:"SourceIp"`
+	Domain     string `position:"Query" name:"Domain"`
+	Lang       string `position:"Query" name:"Lang"`
+	Region     string `position:"Query" name:"Region"`
+}
+
+// ModifyAclRuleResponse is the response struct for api ModifyAclRule
+type ModifyAclRuleResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateModifyAclRuleRequest creates a request to invoke ModifyAclRule API
+func CreateModifyAclRuleRequest() (request *ModifyAclRuleRequest) {
+	request = &ModifyAclRuleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "ModifyAclRule", "waf", "openAPI")
+	return
+}
+
+// CreateModifyAclRuleResponse creates a response to parse from ModifyAclRule response
+func CreateModifyAclRuleResponse() (response *ModifyAclRuleResponse) {
+	response = &ModifyAclRuleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/waf_openapi/modify_domain_config.go

@@ -0,0 +1,116 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyDomainConfig invokes the waf_openapi.ModifyDomainConfig API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifydomainconfig.html
+func (client *Client) ModifyDomainConfig(request *ModifyDomainConfigRequest) (response *ModifyDomainConfigResponse, err error) {
+	response = CreateModifyDomainConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyDomainConfigWithChan invokes the waf_openapi.ModifyDomainConfig API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifydomainconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyDomainConfigWithChan(request *ModifyDomainConfigRequest) (<-chan *ModifyDomainConfigResponse, <-chan error) {
+	responseChan := make(chan *ModifyDomainConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyDomainConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyDomainConfigWithCallback invokes the waf_openapi.ModifyDomainConfig API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifydomainconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyDomainConfigWithCallback(request *ModifyDomainConfigRequest, callback func(response *ModifyDomainConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyDomainConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyDomainConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyDomainConfigRequest is the request struct for api ModifyDomainConfig
+type ModifyDomainConfigRequest struct {
+	*requests.RpcRequest
+	SourceIp        string           `position:"Query" name:"SourceIp"`
+	HttpPort        string           `position:"Query" name:"HttpPort"`
+	Lang            string           `position:"Query" name:"Lang"`
+	Protocols       string           `position:"Query" name:"Protocols"`
+	HttpsRedirect   requests.Integer `position:"Query" name:"HttpsRedirect"`
+	InstanceId      string           `position:"Query" name:"InstanceId"`
+	SourceIps       string           `position:"Query" name:"SourceIps"`
+	Domain          string           `position:"Query" name:"Domain"`
+	IsAccessProduct requests.Integer `position:"Query" name:"IsAccessProduct"`
+	HttpsPort       string           `position:"Query" name:"HttpsPort"`
+	Region          string           `position:"Query" name:"Region"`
+	LoadBalancing   requests.Integer `position:"Query" name:"LoadBalancing"`
+	HttpToUserIp    requests.Integer `position:"Query" name:"HttpToUserIp"`
+}
+
+// ModifyDomainConfigResponse is the response struct for api ModifyDomainConfig
+type ModifyDomainConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateModifyDomainConfigRequest creates a request to invoke ModifyDomainConfig API
+func CreateModifyDomainConfigRequest() (request *ModifyDomainConfigRequest) {
+	request = &ModifyDomainConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "ModifyDomainConfig", "waf", "openAPI")
+	return
+}
+
+// CreateModifyDomainConfigResponse creates a response to parse from ModifyDomainConfig response
+func CreateModifyDomainConfigResponse() (response *ModifyDomainConfigResponse) {
+	response = &ModifyDomainConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/waf_openapi/modify_protection_rule_cache_status.go

@@ -0,0 +1,111 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyProtectionRuleCacheStatus invokes the waf_openapi.ModifyProtectionRuleCacheStatus API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifyprotectionrulecachestatus.html
+func (client *Client) ModifyProtectionRuleCacheStatus(request *ModifyProtectionRuleCacheStatusRequest) (response *ModifyProtectionRuleCacheStatusResponse, err error) {
+	response = CreateModifyProtectionRuleCacheStatusResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyProtectionRuleCacheStatusWithChan invokes the waf_openapi.ModifyProtectionRuleCacheStatus API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifyprotectionrulecachestatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyProtectionRuleCacheStatusWithChan(request *ModifyProtectionRuleCacheStatusRequest) (<-chan *ModifyProtectionRuleCacheStatusResponse, <-chan error) {
+	responseChan := make(chan *ModifyProtectionRuleCacheStatusResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyProtectionRuleCacheStatus(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyProtectionRuleCacheStatusWithCallback invokes the waf_openapi.ModifyProtectionRuleCacheStatus API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifyprotectionrulecachestatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyProtectionRuleCacheStatusWithCallback(request *ModifyProtectionRuleCacheStatusRequest, callback func(response *ModifyProtectionRuleCacheStatusResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyProtectionRuleCacheStatusResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyProtectionRuleCacheStatus(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyProtectionRuleCacheStatusRequest is the request struct for api ModifyProtectionRuleCacheStatus
+type ModifyProtectionRuleCacheStatusRequest struct {
+	*requests.RpcRequest
+	SourceIp   string           `position:"Query" name:"SourceIp"`
+	Defense    string           `position:"Query" name:"Defense"`
+	Id         requests.Integer `position:"Query" name:"Id"`
+	Lang       string           `position:"Query" name:"Lang"`
+	InstanceId string           `position:"Query" name:"InstanceId"`
+	Domain     string           `position:"Query" name:"Domain"`
+	Region     string           `position:"Query" name:"Region"`
+}
+
+// ModifyProtectionRuleCacheStatusResponse is the response struct for api ModifyProtectionRuleCacheStatus
+type ModifyProtectionRuleCacheStatusResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	TaskStatus int    `json:"TaskStatus" xml:"TaskStatus"`
+	WafTaskId  int    `json:"WafTaskId" xml:"WafTaskId"`
+}
+
+// CreateModifyProtectionRuleCacheStatusRequest creates a request to invoke ModifyProtectionRuleCacheStatus API
+func CreateModifyProtectionRuleCacheStatusRequest() (request *ModifyProtectionRuleCacheStatusRequest) {
+	request = &ModifyProtectionRuleCacheStatusRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "ModifyProtectionRuleCacheStatus", "waf", "openAPI")
+	return
+}
+
+// CreateModifyProtectionRuleCacheStatusResponse creates a response to parse from ModifyProtectionRuleCacheStatus response
+func CreateModifyProtectionRuleCacheStatusResponse() (response *ModifyProtectionRuleCacheStatusResponse) {
+	response = &ModifyProtectionRuleCacheStatusResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/waf_openapi/modify_protection_rule_status.go

@@ -0,0 +1,113 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyProtectionRuleStatus invokes the waf_openapi.ModifyProtectionRuleStatus API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifyprotectionrulestatus.html
+func (client *Client) ModifyProtectionRuleStatus(request *ModifyProtectionRuleStatusRequest) (response *ModifyProtectionRuleStatusResponse, err error) {
+	response = CreateModifyProtectionRuleStatusResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyProtectionRuleStatusWithChan invokes the waf_openapi.ModifyProtectionRuleStatus API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifyprotectionrulestatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyProtectionRuleStatusWithChan(request *ModifyProtectionRuleStatusRequest) (<-chan *ModifyProtectionRuleStatusResponse, <-chan error) {
+	responseChan := make(chan *ModifyProtectionRuleStatusResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyProtectionRuleStatus(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyProtectionRuleStatusWithCallback invokes the waf_openapi.ModifyProtectionRuleStatus API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifyprotectionrulestatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyProtectionRuleStatusWithCallback(request *ModifyProtectionRuleStatusRequest, callback func(response *ModifyProtectionRuleStatusResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyProtectionRuleStatusResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyProtectionRuleStatus(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyProtectionRuleStatusRequest is the request struct for api ModifyProtectionRuleStatus
+type ModifyProtectionRuleStatusRequest struct {
+	*requests.RpcRequest
+	LockVersion requests.Integer `position:"Query" name:"LockVersion"`
+	SourceIp    string           `position:"Query" name:"SourceIp"`
+	Defense     string           `position:"Query" name:"Defense"`
+	Id          requests.Integer `position:"Query" name:"Id"`
+	Lang        string           `position:"Query" name:"Lang"`
+	RuleStatus  requests.Integer `position:"Query" name:"RuleStatus"`
+	InstanceId  string           `position:"Query" name:"InstanceId"`
+	Domain      string           `position:"Query" name:"Domain"`
+	Region      string           `position:"Query" name:"Region"`
+}
+
+// ModifyProtectionRuleStatusResponse is the response struct for api ModifyProtectionRuleStatus
+type ModifyProtectionRuleStatusResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	TaskStatus int    `json:"TaskStatus" xml:"TaskStatus"`
+	WafTaskId  int    `json:"WafTaskId" xml:"WafTaskId"`
+}
+
+// CreateModifyProtectionRuleStatusRequest creates a request to invoke ModifyProtectionRuleStatus API
+func CreateModifyProtectionRuleStatusRequest() (request *ModifyProtectionRuleStatusRequest) {
+	request = &ModifyProtectionRuleStatusRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "ModifyProtectionRuleStatus", "waf", "openAPI")
+	return
+}
+
+// CreateModifyProtectionRuleStatusResponse creates a response to parse from ModifyProtectionRuleStatus response
+func CreateModifyProtectionRuleStatusResponse() (response *ModifyProtectionRuleStatusResponse) {
+	response = &ModifyProtectionRuleStatusResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/waf_openapi/modify_waf_switch.go

@@ -0,0 +1,109 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyWafSwitch invokes the waf_openapi.ModifyWafSwitch API synchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifywafswitch.html
+func (client *Client) ModifyWafSwitch(request *ModifyWafSwitchRequest) (response *ModifyWafSwitchResponse, err error) {
+	response = CreateModifyWafSwitchResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyWafSwitchWithChan invokes the waf_openapi.ModifyWafSwitch API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifywafswitch.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyWafSwitchWithChan(request *ModifyWafSwitchRequest) (<-chan *ModifyWafSwitchResponse, <-chan error) {
+	responseChan := make(chan *ModifyWafSwitchResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyWafSwitch(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyWafSwitchWithCallback invokes the waf_openapi.ModifyWafSwitch API asynchronously
+// api document: https://help.aliyun.com/api/waf-openapi/modifywafswitch.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyWafSwitchWithCallback(request *ModifyWafSwitchRequest, callback func(response *ModifyWafSwitchResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyWafSwitchResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyWafSwitch(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyWafSwitchRequest is the request struct for api ModifyWafSwitch
+type ModifyWafSwitchRequest struct {
+	*requests.RpcRequest
+	InstanceId string           `position:"Query" name:"InstanceId"`
+	SourceIp   string           `position:"Query" name:"SourceIp"`
+	Domain     string           `position:"Query" name:"Domain"`
+	ServiceOn  requests.Integer `position:"Query" name:"ServiceOn"`
+	Lang       string           `position:"Query" name:"Lang"`
+	Region     string           `position:"Query" name:"Region"`
+}
+
+// ModifyWafSwitchResponse is the response struct for api ModifyWafSwitch
+type ModifyWafSwitchResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Result    Result `json:"Result" xml:"Result"`
+}
+
+// CreateModifyWafSwitchRequest creates a request to invoke ModifyWafSwitch API
+func CreateModifyWafSwitchRequest() (request *ModifyWafSwitchRequest) {
+	request = &ModifyWafSwitchRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("waf-openapi", "2018-01-17", "ModifyWafSwitch", "waf", "openAPI")
+	return
+}
+
+// CreateModifyWafSwitchResponse creates a response to parse from ModifyWafSwitch response
+func CreateModifyWafSwitchResponse() (response *ModifyWafSwitchResponse) {
+	response = &ModifyWafSwitchResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 32 - 0
services/waf_openapi/struct_acl_rule.go

@@ -0,0 +1,32 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// AclRule is a nested struct in waf_openapi response
+type AclRule struct {
+	ContinueWaf             int        `json:"ContinueWaf" xml:"ContinueWaf"`
+	ContinueBlockGeo        int        `json:"ContinueBlockGeo" xml:"ContinueBlockGeo"`
+	ContinueSA              int        `json:"ContinueSA" xml:"ContinueSA"`
+	ContinueSdk             int        `json:"ContinueSdk" xml:"ContinueSdk"`
+	ContinueDataRiskControl int        `json:"ContinueDataRiskControl" xml:"ContinueDataRiskControl"`
+	ContinueCc              int        `json:"ContinueCc" xml:"ContinueCc"`
+	IsDefault               int        `json:"IsDefault" xml:"IsDefault"`
+	Name                    string     `json:"Name" xml:"Name"`
+	Action                  int        `json:"Action" xml:"Action"`
+	Id                      int64      `json:"Id" xml:"Id"`
+	Order                   int        `json:"Order" xml:"Order"`
+	Conditions              Conditions `json:"Conditions" xml:"Conditions"`
+}

+ 21 - 0
services/waf_openapi/struct_acl_rules.go

@@ -0,0 +1,21 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// AclRules is a nested struct in waf_openapi response
+type AclRules struct {
+	AclRule []AclRule `json:"AclRule" xml:"AclRule"`
+}

+ 23 - 0
services/waf_openapi/struct_condition.go

@@ -0,0 +1,23 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Condition is a nested struct in waf_openapi response
+type Condition struct {
+	Contain string `json:"Contain" xml:"Contain"`
+	Value   string `json:"Value" xml:"Value"`
+	Key     string `json:"Key" xml:"Key"`
+}

+ 21 - 0
services/waf_openapi/struct_conditions.go

@@ -0,0 +1,21 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Conditions is a nested struct in waf_openapi response
+type Conditions struct {
+	Condition []Condition `json:"condition" xml:"condition"`
+}

+ 24 - 0
services/waf_openapi/struct_domain_config.go

@@ -0,0 +1,24 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// DomainConfig is a nested struct in waf_openapi response
+type DomainConfig struct {
+	Cname        string `json:"Cname" xml:"Cname"`
+	ProtocolType int    `json:"ProtocolType" xml:"ProtocolType"`
+	SourceIps    string `json:"SourceIps" xml:"SourceIps"`
+	ConfigStatus string `json:"ConfigStatus" xml:"ConfigStatus"`
+}

+ 21 - 0
services/waf_openapi/struct_module_rules.go

@@ -0,0 +1,21 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ModuleRules is a nested struct in waf_openapi response
+type ModuleRules struct {
+	ModuleRulesItem []ModuleRulesItem `json:"ModuleRulesItem" xml:"ModuleRulesItem"`
+}

+ 24 - 0
services/waf_openapi/struct_module_rules_item.go

@@ -0,0 +1,24 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ModuleRulesItem is a nested struct in waf_openapi response
+type ModuleRulesItem struct {
+	Id      int64  `json:"Id" xml:"Id"`
+	Version int64  `json:"Version" xml:"Version"`
+	Content string `json:"Content" xml:"Content"`
+	Time    int64  `json:"Time" xml:"Time"`
+}

+ 22 - 0
services/waf_openapi/struct_region.go

@@ -0,0 +1,22 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Region is a nested struct in waf_openapi response
+type Region struct {
+	Display string `json:"Display" xml:"Display"`
+	Region  string `json:"Region" xml:"Region"`
+}

+ 21 - 0
services/waf_openapi/struct_regions.go

@@ -0,0 +1,21 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Regions is a nested struct in waf_openapi response
+type Regions struct {
+	Region []Region `json:"Region" xml:"Region"`
+}

+ 37 - 0
services/waf_openapi/struct_result.go

@@ -0,0 +1,37 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Result is a nested struct in waf_openapi response
+type Result struct {
+	Region          string       `json:"Region" xml:"Region"`
+	Status          int          `json:"Status" xml:"Status"`
+	Data            string       `json:"Data" xml:"Data"`
+	InDebt          int          `json:"InDebt" xml:"InDebt"`
+	WafTaskId       string       `json:"WafTaskId" xml:"WafTaskId"`
+	PayType         int          `json:"PayType" xml:"PayType"`
+	AsyncTaskStatus string       `json:"AsyncTaskStatus" xml:"AsyncTaskStatus"`
+	Trial           int          `json:"Trial" xml:"Trial"`
+	ErrMsg          string       `json:"ErrMsg" xml:"ErrMsg"`
+	Total           int          `json:"Total" xml:"Total"`
+	InstanceId      string       `json:"InstanceId" xml:"InstanceId"`
+	Progress        int          `json:"Progress" xml:"Progress"`
+	ErrCode         string       `json:"ErrCode" xml:"ErrCode"`
+	EndDate         int64        `json:"EndDate" xml:"EndDate"`
+	RemainDay       int          `json:"RemainDay" xml:"RemainDay"`
+	DomainConfig    DomainConfig `json:"DomainConfig" xml:"DomainConfig"`
+	AclRules        AclRules     `json:"AclRules" xml:"AclRules"`
+}

+ 21 - 0
services/waf_openapi/struct_result_in_describe_domain_names.go

@@ -0,0 +1,21 @@
+package waf_openapi
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ResultInDescribeDomainNames is a nested struct in waf_openapi response
+type ResultInDescribeDomainNames struct {
+	DomainNames []string `json:"DomainNames" xml:"DomainNames"`
+}