Match package_name in process_path rule on Android

This commit is contained in:
世界
2026-03-23 18:47:19 +08:00
parent 0045103d14
commit 9ac1e2ff32

View File

@@ -4,6 +4,7 @@ import (
"strings"
"github.com/sagernet/sing-box/adapter"
C "github.com/sagernet/sing-box/constant"
)
var _ RuleItem = (*ProcessPathItem)(nil)
@@ -25,10 +26,20 @@ func NewProcessPathItem(processNameList []string) *ProcessPathItem {
}
func (r *ProcessPathItem) Match(metadata *adapter.InboundContext) bool {
if metadata.ProcessInfo == nil || metadata.ProcessInfo.ProcessPath == "" {
if metadata.ProcessInfo == nil {
return false
}
return r.processMap[metadata.ProcessInfo.ProcessPath]
if metadata.ProcessInfo.ProcessPath != "" && r.processMap[metadata.ProcessInfo.ProcessPath] {
return true
}
if C.IsAndroid {
for _, packageName := range metadata.ProcessInfo.AndroidPackageNames {
if r.processMap[packageName] {
return true
}
}
}
return false
}
func (r *ProcessPathItem) String() string {