Smail/server/services/rule/match/regex_match.go
Jinnrry 054336fe9e
v2.6.1 (#169)
1、新增垃圾邮件过滤插件
2、使用使用github.com/dlclark/regexp2替换go原生的正则包
3、修复空数据导致的邮件插入失败
2024-07-20 10:39:17 +08:00

33 lines
639 B
Go

package match
import (
"github.com/Jinnrry/pmail/dto/parsemail"
"github.com/Jinnrry/pmail/utils/context"
"github.com/dlclark/regexp2"
log "github.com/sirupsen/logrus"
)
type RegexMatch struct {
Rule string
Field string
}
func NewRegexMatch(field, rule string) *RegexMatch {
return &RegexMatch{
Rule: rule,
Field: field,
}
}
func (r *RegexMatch) Match(ctx *context.Context, email *parsemail.Email) bool {
content := getFieldContent(r.Field, email)
re := regexp2.MustCompile(r.Rule, 0)
match, err := re.MatchString(content)
if err != nil {
log.WithContext(ctx).Errorf("rule regex error %v", err)
}
return match
}