diff --git a/docs/clients/android/features.md b/docs/clients/android/features.md index aac07419..f7f2caee 100644 --- a/docs/clients/android/features.md +++ b/docs/clients/android/features.md @@ -40,8 +40,7 @@ SFA provides an unprivileged TUN implementation through Android VpnService. |-----------------------|------------------|-----------------------------------| | `process_name` | :material-close: | No permission | | `process_path` | :material-close: | No permission | -| `process_path_prefix` | :material-close: | No permission | -| `process_path_regex` | :material-close: | No permission | +| `process_path_regex` | :material-close: | No permission | | `package_name` | :material-check: | / | | `user` | :material-close: | Use `package_name` instead | | `user_id` | :material-close: | Use `package_name` instead | diff --git a/docs/clients/apple/features.md b/docs/clients/apple/features.md index c2ac3df4..d6385173 100644 --- a/docs/clients/apple/features.md +++ b/docs/clients/apple/features.md @@ -42,7 +42,6 @@ SFI/SFM/SFT provides an unprivileged TUN implementation through NetworkExtension |-----------------------|------------------|-----------------------| | `process_name` | :material-close: | No permission | | `process_path` | :material-close: | No permission | -| `process_path_prefix` | :material-close: | No permission | | `process_path_regex` | :material-close: | No permission | | `package_name` | :material-close: | / | | `user` | :material-close: | No permission | diff --git a/docs/configuration/dns/rule.md b/docs/configuration/dns/rule.md index d38d74a4..03ca66bc 100644 --- a/docs/configuration/dns/rule.md +++ b/docs/configuration/dns/rule.md @@ -6,7 +6,8 @@ icon: material/new-box :material-delete-clock: [rule_set_ipcidr_match_source](#rule_set_ipcidr_match_source) :material-plus: [rule_set_ip_cidr_match_source](#rule_set_ip_cidr_match_source) - :material-plus: [rule_set_ip_cidr_accept_empty](#rule_set_ip_cidr_accept_empty) + :material-plus: [rule_set_ip_cidr_accept_empty](#rule_set_ip_cidr_accept_empty) + :material-plus: [process_path_regex](#process_path_regex) !!! quote "Changes in sing-box 1.9.0" @@ -103,9 +104,6 @@ icon: material/new-box "process_path": [ "/usr/bin/curl" ], - "process_path_prefix": [ - "/usr/bin/" - ], "process_path_regex": [ "^/usr/bin/.+" ], @@ -274,16 +272,6 @@ Match process name. Match process path. -#### process_path_prefix - -!!! question "Since sing-box 1.10.0" - -!!! quote "" - - Only supported on Linux, Windows, and macOS. - -Match process path using prefix. - #### process_path_regex !!! question "Since sing-box 1.10.0" diff --git a/docs/configuration/dns/rule.zh.md b/docs/configuration/dns/rule.zh.md index 49f293e2..b484cbed 100644 --- a/docs/configuration/dns/rule.zh.md +++ b/docs/configuration/dns/rule.zh.md @@ -6,7 +6,8 @@ icon: material/new-box :material-delete-clock: [rule_set_ipcidr_match_source](#rule_set_ipcidr_match_source) :material-plus: [rule_set_ip_cidr_match_source](#rule_set_ip_cidr_match_source) - :material-plus: [rule_set_ip_cidr_accept_empty](#rule_set_ip_cidr_accept_empty) + :material-plus: [rule_set_ip_cidr_accept_empty](#rule_set_ip_cidr_accept_empty) + :material-plus: [process_path_regex](#process_path_regex) !!! quote "sing-box 1.9.0 中的更改" @@ -103,9 +104,6 @@ icon: material/new-box "process_path": [ "/usr/bin/curl" ], - "process_path_prefix": [ - "/usr/bin/" - ], "process_path_regex": [ "^/usr/bin/.+" ], @@ -272,16 +270,6 @@ DNS 查询类型。值可以为整数或者类型名称字符串。 匹配进程路径。 -#### process_path_prefix - -!!! question "自 sing-box 1.10.0 起" - -!!! quote "" - - 仅支持 Linux、Windows 和 macOS. - -匹配进程路径前缀。 - #### process_path_regex !!! question "自 sing-box 1.10.0 起" diff --git a/docs/configuration/route/rule.md b/docs/configuration/route/rule.md index 8f29ad0b..91b432df 100644 --- a/docs/configuration/route/rule.md +++ b/docs/configuration/route/rule.md @@ -7,7 +7,6 @@ icon: material/alert-decagram :material-plus: [client](#client) :material-delete-clock: [rule_set_ipcidr_match_source](#rule_set_ipcidr_match_source) :material-plus: [rule_set_ip_cidr_match_source](#rule_set_ip_cidr_match_source) - :material-plus: [process_path_prefix](#process_path_prefix) :material-plus: [process_path_regex](#process_path_regex) !!! quote "Changes in sing-box 1.8.0" @@ -103,9 +102,6 @@ icon: material/alert-decagram "process_path": [ "/usr/bin/curl" ], - "process_path_prefix": [ - "/usr/bin/" - ], "process_path_regex": [ "^/usr/bin/.+" ], @@ -285,16 +281,6 @@ Match process name. Match process path. -#### process_path_prefix - -!!! question "Since sing-box 1.10.0" - -!!! quote "" - - Only supported on Linux, Windows, and macOS. - -Match process path using prefix. - #### process_path_regex !!! question "Since sing-box 1.10.0" diff --git a/docs/configuration/route/rule.zh.md b/docs/configuration/route/rule.zh.md index de165ba4..a93ce5e5 100644 --- a/docs/configuration/route/rule.zh.md +++ b/docs/configuration/route/rule.zh.md @@ -6,9 +6,9 @@ icon: material/alert-decagram :material-plus: [client](#client) :material-delete-clock: [rule_set_ipcidr_match_source](#rule_set_ipcidr_match_source) - :material-plus: [process_path_prefix](#process_path_prefix) :material-plus: [process_path_regex](#process_path_regex) + !!! quote "sing-box 1.8.0 中的更改" :material-plus: [rule_set](#rule_set) @@ -100,9 +100,6 @@ icon: material/alert-decagram "process_path": [ "/usr/bin/curl" ], - "process_path_prefix": [ - "/usr/bin/" - ], "process_path_regex": [ "^/usr/bin/.+" ], @@ -282,16 +279,6 @@ icon: material/alert-decagram 匹配进程路径。 -#### process_path_prefix - -!!! question "自 sing-box 1.10.0 起" - -!!! quote "" - - 仅支持 Linux、Windows 和 macOS. - -匹配进程路径前缀。 - #### process_path_regex !!! question "自 sing-box 1.10.0 起" diff --git a/docs/configuration/rule-set/headless-rule.md b/docs/configuration/rule-set/headless-rule.md index 9dde8797..891b1278 100644 --- a/docs/configuration/rule-set/headless-rule.md +++ b/docs/configuration/rule-set/headless-rule.md @@ -57,9 +57,6 @@ "process_path": [ "/usr/bin/curl" ], - "process_path_prefix": [ - "/usr/bin/" - ], "process_path_regex": [ "^/usr/bin/.+" ], @@ -166,16 +163,6 @@ Match process name. Match process path. -#### process_path_prefix - -!!! question "Since sing-box 1.10.0" - -!!! quote "" - - Only supported on Linux, Windows, and macOS. - -Match process path using prefix. - #### process_path_regex !!! question "Since sing-box 1.10.0" diff --git a/option/rule.go b/option/rule.go index ebf77908..5f15645c 100644 --- a/option/rule.go +++ b/option/rule.go @@ -88,7 +88,6 @@ type _DefaultRule struct { PortRange Listable[string] `json:"port_range,omitempty"` ProcessName Listable[string] `json:"process_name,omitempty"` ProcessPath Listable[string] `json:"process_path,omitempty"` - ProcessPathPrefix Listable[string] `json:"process_path_prefix,omitempty"` ProcessPathRegex Listable[string] `json:"process_path_regex,omitempty"` PackageName Listable[string] `json:"package_name,omitempty"` User Listable[string] `json:"user,omitempty"` diff --git a/option/rule_dns.go b/option/rule_dns.go index ead783b5..2e03b425 100644 --- a/option/rule_dns.go +++ b/option/rule_dns.go @@ -88,7 +88,6 @@ type _DefaultDNSRule struct { PortRange Listable[string] `json:"port_range,omitempty"` ProcessName Listable[string] `json:"process_name,omitempty"` ProcessPath Listable[string] `json:"process_path,omitempty"` - ProcessPathPrefix Listable[string] `json:"process_path_prefix,omitempty"` ProcessPathRegex Listable[string] `json:"process_path_regex,omitempty"` PackageName Listable[string] `json:"package_name,omitempty"` User Listable[string] `json:"user,omitempty"` diff --git a/option/rule_set.go b/option/rule_set.go index fdc979eb..b6ec113e 100644 --- a/option/rule_set.go +++ b/option/rule_set.go @@ -144,26 +144,25 @@ func (r HeadlessRule) IsValid() bool { } type DefaultHeadlessRule struct { - QueryType Listable[DNSQueryType] `json:"query_type,omitempty"` - Network Listable[string] `json:"network,omitempty"` - Domain Listable[string] `json:"domain,omitempty"` - DomainSuffix Listable[string] `json:"domain_suffix,omitempty"` - DomainKeyword Listable[string] `json:"domain_keyword,omitempty"` - DomainRegex Listable[string] `json:"domain_regex,omitempty"` - SourceIPCIDR Listable[string] `json:"source_ip_cidr,omitempty"` - IPCIDR Listable[string] `json:"ip_cidr,omitempty"` - SourcePort Listable[uint16] `json:"source_port,omitempty"` - SourcePortRange Listable[string] `json:"source_port_range,omitempty"` - Port Listable[uint16] `json:"port,omitempty"` - PortRange Listable[string] `json:"port_range,omitempty"` - ProcessName Listable[string] `json:"process_name,omitempty"` - ProcessPath Listable[string] `json:"process_path,omitempty"` - ProcessPathPrefix Listable[string] `json:"process_path_prefix,omitempty"` - ProcessPathRegex Listable[string] `json:"process_path_regex,omitempty"` - PackageName Listable[string] `json:"package_name,omitempty"` - WIFISSID Listable[string] `json:"wifi_ssid,omitempty"` - WIFIBSSID Listable[string] `json:"wifi_bssid,omitempty"` - Invert bool `json:"invert,omitempty"` + QueryType Listable[DNSQueryType] `json:"query_type,omitempty"` + Network Listable[string] `json:"network,omitempty"` + Domain Listable[string] `json:"domain,omitempty"` + DomainSuffix Listable[string] `json:"domain_suffix,omitempty"` + DomainKeyword Listable[string] `json:"domain_keyword,omitempty"` + DomainRegex Listable[string] `json:"domain_regex,omitempty"` + SourceIPCIDR Listable[string] `json:"source_ip_cidr,omitempty"` + IPCIDR Listable[string] `json:"ip_cidr,omitempty"` + SourcePort Listable[uint16] `json:"source_port,omitempty"` + SourcePortRange Listable[string] `json:"source_port_range,omitempty"` + Port Listable[uint16] `json:"port,omitempty"` + PortRange Listable[string] `json:"port_range,omitempty"` + ProcessName Listable[string] `json:"process_name,omitempty"` + ProcessPath Listable[string] `json:"process_path,omitempty"` + ProcessPathRegex Listable[string] `json:"process_path_regex,omitempty"` + PackageName Listable[string] `json:"package_name,omitempty"` + WIFISSID Listable[string] `json:"wifi_ssid,omitempty"` + WIFIBSSID Listable[string] `json:"wifi_bssid,omitempty"` + Invert bool `json:"invert,omitempty"` DomainMatcher *domain.Matcher `json:"-"` SourceIPSet *netipx.IPSet `json:"-"` diff --git a/route/rule_default.go b/route/rule_default.go index de6cb711..40b93e5f 100644 --- a/route/rule_default.go +++ b/route/rule_default.go @@ -179,11 +179,6 @@ func NewDefaultRule(router adapter.Router, logger log.ContextLogger, options opt rule.items = append(rule.items, item) rule.allItems = append(rule.allItems, item) } - if len(options.ProcessPathPrefix) > 0 { - item := NewProcessPathPrefixItem(options.ProcessPathPrefix) - rule.items = append(rule.items, item) - rule.allItems = append(rule.allItems, item) - } if len(options.ProcessPathRegex) > 0 { item, err := NewProcessPathRegexItem(options.ProcessPathRegex) if err != nil { diff --git a/route/rule_dns.go b/route/rule_dns.go index 708de58c..616f956a 100644 --- a/route/rule_dns.go +++ b/route/rule_dns.go @@ -183,11 +183,6 @@ func NewDefaultDNSRule(router adapter.Router, logger log.ContextLogger, options rule.items = append(rule.items, item) rule.allItems = append(rule.allItems, item) } - if len(options.ProcessPathPrefix) > 0 { - item := NewProcessPathPrefixItem(options.ProcessPathPrefix) - rule.items = append(rule.items, item) - rule.allItems = append(rule.allItems, item) - } if len(options.ProcessPathRegex) > 0 { item, err := NewProcessPathRegexItem(options.ProcessPathRegex) if err != nil { diff --git a/route/rule_headless.go b/route/rule_headless.go index 0425776a..23a98c72 100644 --- a/route/rule_headless.go +++ b/route/rule_headless.go @@ -123,11 +123,6 @@ func NewDefaultHeadlessRule(router adapter.Router, options option.DefaultHeadles rule.items = append(rule.items, item) rule.allItems = append(rule.allItems, item) } - if len(options.ProcessPathPrefix) > 0 { - item := NewProcessPathPrefixItem(options.ProcessPathPrefix) - rule.items = append(rule.items, item) - rule.allItems = append(rule.allItems, item) - } if len(options.ProcessPathRegex) > 0 { item, err := NewProcessPathRegexItem(options.ProcessPathRegex) if err != nil { diff --git a/route/rule_item_process_path_prefix.go b/route/rule_item_process_path_prefix.go deleted file mode 100644 index 60874ada..00000000 --- a/route/rule_item_process_path_prefix.go +++ /dev/null @@ -1,42 +0,0 @@ -package route - -import ( - "strings" - - "github.com/sagernet/sing-box/adapter" -) - -var _ RuleItem = (*ProcessPathPrefixItem)(nil) - -type ProcessPathPrefixItem struct { - processes []string -} - -func NewProcessPathPrefixItem(directories []string) *ProcessPathPrefixItem { - return &ProcessPathPrefixItem{ - processes: directories, - } -} - -func (r *ProcessPathPrefixItem) Match(metadata *adapter.InboundContext) bool { - if metadata.ProcessInfo == nil || metadata.ProcessInfo.ProcessPath == "" { - return false - } - for _, processe := range r.processes { - if strings.HasPrefix(metadata.ProcessInfo.ProcessPath, processe) { - return true - } - } - return false -} - -func (r *ProcessPathPrefixItem) String() string { - var description string - pLen := len(r.processes) - if pLen == 1 { - description = "process_path_prefix=" + r.processes[0] - } else { - description = "process_path_prefix=[" + strings.Join(r.processes, " ") + "]" - } - return description -}