34 lines
528 B
Go
34 lines
528 B
Go
package models
|
|
|
|
import (
|
|
"regexp"
|
|
|
|
"github.com/IGLOU-EU/go-wildcard/v2"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type Rule struct {
|
|
ID uuid.UUID
|
|
Name string
|
|
Type string
|
|
Rule string
|
|
Enable bool
|
|
}
|
|
|
|
func (d *Rule) IsEnabled() bool {
|
|
return d.Enable
|
|
}
|
|
|
|
func (d *Rule) IsMatch(domainName string) bool {
|
|
switch d.Type {
|
|
case "wildcard":
|
|
return wildcard.Match(d.Rule, domainName)
|
|
case "regex":
|
|
ok, _ := regexp.MatchString(d.Rule, domainName)
|
|
return ok
|
|
case "plaintext":
|
|
return domainName == d.Rule
|
|
}
|
|
return false
|
|
}
|