|
@@ -5,6 +5,7 @@ import (
|
|
|
|
|
|
"github.com/sagernet/sing-box/adapter"
|
|
|
"github.com/sagernet/sing/common/domain"
|
|
|
+ E "github.com/sagernet/sing/common/exceptions"
|
|
|
)
|
|
|
|
|
|
var _ RuleItem = (*DomainItem)(nil)
|
|
@@ -14,7 +15,17 @@ type DomainItem struct {
|
|
|
description string
|
|
|
}
|
|
|
|
|
|
-func NewDomainItem(domains []string, domainSuffixes []string) *DomainItem {
|
|
|
+func NewDomainItem(domains []string, domainSuffixes []string) (*DomainItem, error) {
|
|
|
+ for _, domainItem := range domains {
|
|
|
+ if domainItem == "" {
|
|
|
+ return nil, E.New("domain: empty item is not allowed")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for _, domainSuffixItem := range domainSuffixes {
|
|
|
+ if domainSuffixItem == "" {
|
|
|
+ return nil, E.New("domain_suffix: empty item is not allowed")
|
|
|
+ }
|
|
|
+ }
|
|
|
var description string
|
|
|
if dLen := len(domains); dLen > 0 {
|
|
|
if dLen == 1 {
|
|
@@ -40,7 +51,7 @@ func NewDomainItem(domains []string, domainSuffixes []string) *DomainItem {
|
|
|
return &DomainItem{
|
|
|
domain.NewMatcher(domains, domainSuffixes, false),
|
|
|
description,
|
|
|
- }
|
|
|
+ }, nil
|
|
|
}
|
|
|
|
|
|
func NewRawDomainItem(matcher *domain.Matcher) *DomainItem {
|