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
|
||
|
}
|