diff options
author | Emiliano Ciavatta | 2021-07-28 12:37:48 +0000 |
---|---|---|
committer | Emiliano Ciavatta | 2021-07-28 12:37:48 +0000 |
commit | 49f9a5f352d4b54fa6331fe096be8206d8daa79a (patch) | |
tree | 19682322209e2041976a6028e3c5ceefe27094cc /rules_manager.go | |
parent | e029a04123dc77499d5e953ca81d6b849aa39252 (diff) |
Update regex patterns management
Diffstat (limited to 'rules_manager.go')
-rw-r--r-- | rules_manager.go | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/rules_manager.go b/rules_manager.go index 736d561..ed1932d 100644 --- a/rules_manager.go +++ b/rules_manager.go @@ -315,11 +315,20 @@ func (rm *rulesManagerImpl) validateAndAddRuleLocal(rule *Rule) error { return err } + regex := pattern.Regex + if !strings.HasPrefix(regex, "/") { + regex = fmt.Sprintf("/%s", regex) + } + if !strings.HasSuffix(regex, "/") { + regex = fmt.Sprintf("%s/", regex) + } + rule.Patterns[i].Regex = regex + compiledPattern, err := pattern.BuildPattern() if err != nil { return err } - regex := compiledPattern.String() + regex = compiledPattern.String() if _, isPresent := duplicatePatterns[regex]; isPresent { return errors.New("duplicate pattern") } @@ -366,10 +375,6 @@ func (rm *rulesManagerImpl) generateDatabase(version RowID) error { } func (p *Pattern) BuildPattern() (*hyperscan.Pattern, error) { - if !strings.HasPrefix(p.Regex, "/") || !strings.HasSuffix(p.Regex, "/") { - p.Regex = fmt.Sprintf("/%s/", p.Regex) - } - hp, err := hyperscan.ParsePattern(p.Regex) if err != nil { return nil, err |