From 799875866a9b0d4817680329027fbdf561c78daf Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Thu, 1 Sep 2022 10:30:55 +0300 Subject: [PATCH] Fix matching --- pkg/zabbix/methods.go | 30 +++++++++++++++++++++++++----- pkg/zabbix/utils.go | 4 ++-- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/pkg/zabbix/methods.go b/pkg/zabbix/methods.go index 343ce6e..7f8cb1d 100644 --- a/pkg/zabbix/methods.go +++ b/pkg/zabbix/methods.go @@ -148,7 +148,11 @@ func filterItemsByTag(items []*Item, filter string) ([]*Item, error) { } for _, t := range tags { if re != nil { - if match, err := re.MatchString(t); match && err != nil { + match, err := re.MatchString(t) + if err != nil { + return nil, err + } + if match { filteredItems = append(filteredItems, i) break } @@ -173,7 +177,11 @@ func filterItemsByQuery(items []*Item, filter string) ([]*Item, error) { for _, i := range items { name := i.Name if re != nil { - if match, err := re.MatchString(name); match && err != nil { + match, err := re.MatchString(name) + if err != nil { + return nil, err + } + if match { filteredItems = append(filteredItems, i) } } else if name == filter { @@ -212,7 +220,11 @@ func filterAppsByQuery(items []Application, filter string) ([]Application, error for _, i := range items { name := i.Name if re != nil { - if match, err := re.MatchString(name); match && err != nil { + match, err := re.MatchString(name) + if err != nil { + return nil, err + } + if match { filteredItems = append(filteredItems, i) } } else if name == filter { @@ -251,7 +263,11 @@ func filterHostsByQuery(items []Host, filter string) ([]Host, error) { for _, i := range items { name := i.Name if re != nil { - if match, err := re.MatchString(name); match && err != nil { + match, err := re.MatchString(name) + if err != nil { + return nil, err + } + if match { filteredItems = append(filteredItems, i) } } else if name == filter { @@ -282,7 +298,11 @@ func filterGroupsByQuery(items []Group, filter string) ([]Group, error) { for _, i := range items { name := i.Name if re != nil { - if match, err := re.MatchString(name); match && err != nil { + match, err := re.MatchString(name) + if err != nil { + return nil, err + } + if match { filteredItems = append(filteredItems, i) } } else if name == filter { diff --git a/pkg/zabbix/utils.go b/pkg/zabbix/utils.go index ec06c6b..e772f2d 100644 --- a/pkg/zabbix/utils.go +++ b/pkg/zabbix/utils.go @@ -67,8 +67,8 @@ func splitKeyParams(paramStr string) []string { func parseFilter(filter string) (*regexp2.Regexp, error) { vaildREModifiers := "imncsxrde" - regex := regexp.MustCompile(`^/(.+)/(\w*)$`) - flagRE := regexp.MustCompile("[" + vaildREModifiers + "]+") + regex := regexp.MustCompile(`^/(.+)/([imncsxrde]*)$`) + flagRE := regexp.MustCompile(fmt.Sprintf("[%s]+", vaildREModifiers)) matches := regex.FindStringSubmatch(filter) if len(matches) <= 1 {