From 49f9a5f352d4b54fa6331fe096be8206d8daa79a Mon Sep 17 00:00:00 2001 From: Emiliano Ciavatta Date: Wed, 28 Jul 2021 14:37:48 +0200 Subject: Update regex patterns management --- rules_manager.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'rules_manager.go') 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 -- cgit v1.2.3-70-g09d2