Skip to content
This repository has been archived by the owner on Oct 15, 2024. It is now read-only.

Commit

Permalink
Merge pull request #236 from rebuy-de/add_regex_match
Browse files Browse the repository at this point in the history
Add WAF Regex-Pattern and -Match and their tuples and strings
  • Loading branch information
stephanlindauer authored Jul 17, 2018
2 parents fdc4f8d + cb42394 commit d621ebd
Show file tree
Hide file tree
Showing 4 changed files with 324 additions and 0 deletions.
75 changes: 75 additions & 0 deletions resources/wafregional-regex-match-sets.go
Original file line number Diff line number Diff line change
@@ -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
}
88 changes: 88 additions & 0 deletions resources/wafregional-regex-match-tuples.go
Original file line number Diff line number Diff line change
@@ -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)
}
75 changes: 75 additions & 0 deletions resources/wafregional-regex-pattern-sets.go
Original file line number Diff line number Diff line change
@@ -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
}
86 changes: 86 additions & 0 deletions resources/wafregional-regex-pattern-tuples.go
Original file line number Diff line number Diff line change
@@ -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)
}

0 comments on commit d621ebd

Please sign in to comment.