30 lines
633 B
Go
30 lines
633 B
Go
package filter
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
|
|
"github.com/ffuf/ffuf/pkg/ffuf"
|
|
)
|
|
|
|
type RegexpFilter struct {
|
|
Value *regexp.Regexp
|
|
valueRaw string
|
|
}
|
|
|
|
func NewRegexpFilter(value string) (ffuf.FilterProvider, error) {
|
|
re, err := regexp.Compile(value)
|
|
if err != nil {
|
|
return &RegexpFilter{}, fmt.Errorf("Size filter or matcher (-fs / -ms): invalid value: %s", value)
|
|
}
|
|
return &RegexpFilter{Value: re, valueRaw: value}, nil
|
|
}
|
|
|
|
func (f *RegexpFilter) Filter(response *ffuf.Response) (bool, error) {
|
|
return f.Value.Match(response.Data), nil
|
|
}
|
|
|
|
func (f *RegexpFilter) Repr() string {
|
|
return fmt.Sprintf("Regexp: %s", f.valueRaw)
|
|
}
|