diff --git a/resources/wafregional-regex-match-sets.go b/resources/wafregional-regex-match-sets.go new file mode 100644 index 000000000..e7df44fe2 --- /dev/null +++ b/resources/wafregional-regex-match-sets.go @@ -0,0 +1,75 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/waf" + "github.com/aws/aws-sdk-go/service/wafregional" + "github.com/rebuy-de/aws-nuke/pkg/types" +) + +type WAFRegionalRegexMatchSet struct { + svc *wafregional.WAFRegional + id *string + name *string +} + +func init() { + register("WAFRegionalRegexMatchSet", ListWAFRegionalRegexMatchSet) +} + +func ListWAFRegionalRegexMatchSet(sess *session.Session) ([]Resource, error) { + svc := wafregional.New(sess) + resources := []Resource{} + + params := &waf.ListRegexMatchSetsInput{ + Limit: aws.Int64(50), + } + + for { + resp, err := svc.ListRegexMatchSets(params) + if err != nil { + return nil, err + } + + for _, set := range resp.RegexMatchSets { + resources = append(resources, &WAFRegionalRegexMatchSet{ + svc: svc, + id: set.RegexMatchSetId, + name: set.Name, + }) + } + + if resp.NextMarker == nil { + break + } + + params.NextMarker = resp.NextMarker + } + + return resources, nil +} + +func (r *WAFRegionalRegexMatchSet) Remove() error { + tokenOutput, err := r.svc.GetChangeToken(&waf.GetChangeTokenInput{}) + if err != nil { + return err + } + + _, err = r.svc.DeleteRegexMatchSet(&waf.DeleteRegexMatchSetInput{ + RegexMatchSetId: r.id, + ChangeToken: tokenOutput.ChangeToken, + }) + + return err +} + +func (r *WAFRegionalRegexMatchSet) Properties() types.Properties { + return types.NewProperties(). + Set("ID", r.id). + Set("Name", r.name) +} + +func (r *WAFRegionalRegexMatchSet) String() string { + return *r.id +} diff --git a/resources/wafregional-regex-match-tuples.go b/resources/wafregional-regex-match-tuples.go new file mode 100644 index 000000000..ade22ced1 --- /dev/null +++ b/resources/wafregional-regex-match-tuples.go @@ -0,0 +1,88 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/waf" + "github.com/aws/aws-sdk-go/service/wafregional" + "github.com/rebuy-de/aws-nuke/pkg/types" +) + +type WAFRegionalRegexMatchTuple struct { + svc *wafregional.WAFRegional + matchSetid *string + tuple *waf.RegexMatchTuple +} + +func init() { + register("WAFRegionalRegexMatchTuple", ListWAFRegionalRegexMatchTuple) +} + +func ListWAFRegionalRegexMatchTuple(sess *session.Session) ([]Resource, error) { + svc := wafregional.New(sess) + resources := []Resource{} + + params := &waf.ListRegexMatchSetsInput{ + Limit: aws.Int64(50), + } + + for { + resp, err := svc.ListRegexMatchSets(params) + if err != nil { + return nil, err + } + + for _, set := range resp.RegexMatchSets { + regexMatchSet, err := svc.GetRegexMatchSet(&waf.GetRegexMatchSetInput{ + RegexMatchSetId: set.RegexMatchSetId, + }) + if err != nil { + return nil, err + } + + for _, tuple := range regexMatchSet.RegexMatchSet.RegexMatchTuples { + resources = append(resources, &WAFRegionalRegexMatchTuple{ + svc: svc, + matchSetid: set.RegexMatchSetId, + tuple: tuple, + }) + } + } + + if resp.NextMarker == nil { + break + } + + params.NextMarker = resp.NextMarker + } + + return resources, nil +} + +func (r *WAFRegionalRegexMatchTuple) Remove() error { + tokenOutput, err := r.svc.GetChangeToken(&waf.GetChangeTokenInput{}) + if err != nil { + return err + } + + _, err = r.svc.UpdateRegexMatchSet(&waf.UpdateRegexMatchSetInput{ + ChangeToken: tokenOutput.ChangeToken, + RegexMatchSetId: r.matchSetid, + Updates: []*waf.RegexMatchSetUpdate{ + &waf.RegexMatchSetUpdate{ + Action: aws.String("DELETE"), + RegexMatchTuple: r.tuple, + }, + }, + }) + + return err +} + +func (r *WAFRegionalRegexMatchTuple) Properties() types.Properties { + return types.NewProperties(). + Set("RegexMatchSetID", r.matchSetid). + Set("FieldToMatchType", r.tuple.FieldToMatch.Type). + Set("FieldToMatchData", r.tuple.FieldToMatch.Data). + Set("TextTransformation", r.tuple.TextTransformation) +} diff --git a/resources/wafregional-regex-pattern-sets.go b/resources/wafregional-regex-pattern-sets.go new file mode 100644 index 000000000..f17098aac --- /dev/null +++ b/resources/wafregional-regex-pattern-sets.go @@ -0,0 +1,75 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/waf" + "github.com/aws/aws-sdk-go/service/wafregional" + "github.com/rebuy-de/aws-nuke/pkg/types" +) + +type WAFRegionalRegexPatternSet struct { + svc *wafregional.WAFRegional + id *string + name *string +} + +func init() { + register("WAFRegionalRegexPatternSet", ListWAFRegionalRegexPatternSet) +} + +func ListWAFRegionalRegexPatternSet(sess *session.Session) ([]Resource, error) { + svc := wafregional.New(sess) + resources := []Resource{} + + params := &waf.ListRegexPatternSetsInput{ + Limit: aws.Int64(50), + } + + for { + resp, err := svc.ListRegexPatternSets(params) + if err != nil { + return nil, err + } + + for _, set := range resp.RegexPatternSets { + resources = append(resources, &WAFRegionalRegexPatternSet{ + svc: svc, + id: set.RegexPatternSetId, + name: set.Name, + }) + } + + if resp.NextMarker == nil { + break + } + + params.NextMarker = resp.NextMarker + } + + return resources, nil +} + +func (r *WAFRegionalRegexPatternSet) Remove() error { + tokenOutput, err := r.svc.GetChangeToken(&waf.GetChangeTokenInput{}) + if err != nil { + return err + } + + _, err = r.svc.DeleteRegexPatternSet(&waf.DeleteRegexPatternSetInput{ + RegexPatternSetId: r.id, + ChangeToken: tokenOutput.ChangeToken, + }) + + return err +} + +func (r *WAFRegionalRegexPatternSet) Properties() types.Properties { + return types.NewProperties(). + Set("ID", r.id). + Set("Name", r.name) +} + +func (r *WAFRegionalRegexPatternSet) String() string { + return *r.id +} diff --git a/resources/wafregional-regex-pattern-tuples.go b/resources/wafregional-regex-pattern-tuples.go new file mode 100644 index 000000000..b16b6c98f --- /dev/null +++ b/resources/wafregional-regex-pattern-tuples.go @@ -0,0 +1,86 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/waf" + "github.com/aws/aws-sdk-go/service/wafregional" + "github.com/rebuy-de/aws-nuke/pkg/types" +) + +type WAFRegionalRegexPatternString struct { + svc *wafregional.WAFRegional + patternSetid *string + patternString *string +} + +func init() { + register("WAFRegionalRegexPatternString", ListWAFRegionalRegexPatternString) +} + +func ListWAFRegionalRegexPatternString(sess *session.Session) ([]Resource, error) { + svc := wafregional.New(sess) + resources := []Resource{} + + params := &waf.ListRegexPatternSetsInput{ + Limit: aws.Int64(50), + } + + for { + resp, err := svc.ListRegexPatternSets(params) + if err != nil { + return nil, err + } + + for _, set := range resp.RegexPatternSets { + regexPatternSet, err := svc.GetRegexPatternSet(&waf.GetRegexPatternSetInput{ + RegexPatternSetId: set.RegexPatternSetId, + }) + if err != nil { + return nil, err + } + + for _, patternString := range regexPatternSet.RegexPatternSet.RegexPatternStrings { + resources = append(resources, &WAFRegionalRegexPatternString{ + svc: svc, + patternSetid: set.RegexPatternSetId, + patternString: patternString, + }) + } + } + + if resp.NextMarker == nil { + break + } + + params.NextMarker = resp.NextMarker + } + + return resources, nil +} + +func (r *WAFRegionalRegexPatternString) Remove() error { + tokenOutput, err := r.svc.GetChangeToken(&waf.GetChangeTokenInput{}) + if err != nil { + return err + } + + _, err = r.svc.UpdateRegexPatternSet(&waf.UpdateRegexPatternSetInput{ + ChangeToken: tokenOutput.ChangeToken, + RegexPatternSetId: r.patternSetid, + Updates: []*waf.RegexPatternSetUpdate{ + &waf.RegexPatternSetUpdate{ + Action: aws.String("DELETE"), + RegexPatternString: r.patternString, + }, + }, + }) + + return err +} + +func (r *WAFRegionalRegexPatternString) Properties() types.Properties { + return types.NewProperties(). + Set("RegexPatternSetID", r.patternSetid). + Set("patternString", r.patternString) +}