github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/cloud/aws/api-gateway/domains_v2.go (about)

     1  package api_gateway
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/khulnasoft-lab/defsec/pkg/concurrency"
     7  	"github.com/khulnasoft-lab/defsec/pkg/types"
     8  
     9  	v2 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/apigateway/v2"
    10  
    11  	api "github.com/aws/aws-sdk-go-v2/service/apigatewayv2"
    12  	agTypes "github.com/aws/aws-sdk-go-v2/service/apigatewayv2/types"
    13  )
    14  
    15  func (a *adapter) getDomainNamesV2() ([]v2.DomainName, error) {
    16  	a.Tracker().SetServiceLabel("Discovering v2 domain names...")
    17  
    18  	var input api.GetDomainNamesInput
    19  	var apiDomainNames []agTypes.DomainName
    20  	for {
    21  		output, err := a.clientV2.GetDomainNames(a.Context(), &input)
    22  		if err != nil {
    23  			return nil, err
    24  		}
    25  		apiDomainNames = append(apiDomainNames, output.Items...)
    26  		a.Tracker().SetTotalResources(len(apiDomainNames))
    27  		if output.NextToken == nil {
    28  			break
    29  		}
    30  		input.NextToken = output.NextToken
    31  	}
    32  
    33  	a.Tracker().SetServiceLabel("Adapting v2 domain names...")
    34  
    35  	return concurrency.Adapt(apiDomainNames, a.RootAdapter, a.adaptDomainNameV2), nil
    36  
    37  }
    38  
    39  func (a *adapter) adaptDomainNameV2(domain agTypes.DomainName) (*v2.DomainName, error) {
    40  	metadata := a.CreateMetadata(fmt.Sprintf("/domainnames/%s", *domain.DomainName))
    41  	securityPolicy := "TLS_1_2"
    42  	for _, policy := range domain.DomainNameConfigurations {
    43  		if string(policy.SecurityPolicy) != "TLS_1_2" {
    44  			securityPolicy = string(policy.SecurityPolicy)
    45  		}
    46  	}
    47  	return &v2.DomainName{
    48  		Metadata:       metadata,
    49  		Name:           types.String(*domain.DomainName, metadata),
    50  		SecurityPolicy: types.String(securityPolicy, metadata),
    51  	}, nil
    52  }