mirror of
https://github.com/shtorm-7/sing-box-extended.git
synced 2026-05-31 00:14:21 +03:00
Add invert rule item
This commit is contained in:
@@ -45,6 +45,7 @@ type DefaultRule struct {
|
||||
sourceAddressItems []RuleItem
|
||||
destinationAddressItems []RuleItem
|
||||
allItems []RuleItem
|
||||
invert bool
|
||||
outbound string
|
||||
}
|
||||
|
||||
@@ -59,6 +60,7 @@ type RuleItem interface {
|
||||
|
||||
func NewDefaultRule(router adapter.Router, logger log.ContextLogger, options option.DefaultRule) (*DefaultRule, error) {
|
||||
rule := &DefaultRule{
|
||||
invert: options.Invert,
|
||||
outbound: options.Outbound,
|
||||
}
|
||||
if len(options.Inbound) > 0 {
|
||||
@@ -213,7 +215,7 @@ func (r *DefaultRule) UpdateGeosite() error {
|
||||
func (r *DefaultRule) Match(metadata *adapter.InboundContext) bool {
|
||||
for _, item := range r.items {
|
||||
if !item.Match(metadata) {
|
||||
return false
|
||||
return r.invert
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,7 +228,7 @@ func (r *DefaultRule) Match(metadata *adapter.InboundContext) bool {
|
||||
}
|
||||
}
|
||||
if !sourceAddressMatch {
|
||||
return false
|
||||
return r.invert
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,11 +241,11 @@ func (r *DefaultRule) Match(metadata *adapter.InboundContext) bool {
|
||||
}
|
||||
}
|
||||
if !destinationAddressMatch {
|
||||
return false
|
||||
return r.invert
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
return !r.invert
|
||||
}
|
||||
|
||||
func (r *DefaultRule) Outbound() string {
|
||||
|
||||
@@ -44,6 +44,7 @@ type DefaultDNSRule struct {
|
||||
items []RuleItem
|
||||
addressItems []RuleItem
|
||||
allItems []RuleItem
|
||||
invert bool
|
||||
outbound string
|
||||
}
|
||||
|
||||
@@ -53,6 +54,7 @@ func (r *DefaultDNSRule) Type() string {
|
||||
|
||||
func NewDefaultDNSRule(router adapter.Router, logger log.ContextLogger, options option.DefaultDNSRule) (*DefaultDNSRule, error) {
|
||||
rule := &DefaultDNSRule{
|
||||
invert: true,
|
||||
outbound: options.Server,
|
||||
}
|
||||
if len(options.Inbound) > 0 {
|
||||
@@ -189,7 +191,7 @@ func (r *DefaultDNSRule) UpdateGeosite() error {
|
||||
func (r *DefaultDNSRule) Match(metadata *adapter.InboundContext) bool {
|
||||
for _, item := range r.items {
|
||||
if !item.Match(metadata) {
|
||||
return false
|
||||
return r.invert
|
||||
}
|
||||
}
|
||||
if len(r.addressItems) > 0 {
|
||||
@@ -201,10 +203,10 @@ func (r *DefaultDNSRule) Match(metadata *adapter.InboundContext) bool {
|
||||
}
|
||||
}
|
||||
if !addressMatch {
|
||||
return false
|
||||
return r.invert
|
||||
}
|
||||
}
|
||||
return true
|
||||
return !r.invert
|
||||
}
|
||||
|
||||
func (r *DefaultDNSRule) Outbound() string {
|
||||
|
||||
Reference in New Issue
Block a user