Merge branch 'dev' of https://github.com/Dreamacro/clash into Alpha

This commit is contained in:
wwqgtxx
2022-11-12 20:43:48 +08:00
51 changed files with 641 additions and 742 deletions

View File

@ -14,7 +14,11 @@ type Process struct {
}
func (ps *Process) RuleType() C.RuleType {
return C.Process
if ps.nameOnly {
return C.Process
}
return C.ProcessPath
}
func (ps *Process) Match(metadata *C.Metadata) (bool, string) {

View File

@ -13,7 +13,7 @@ import (
type Uid struct {
*Base
uids []utils.Range[int32]
uids []utils.Range[uint32]
oUid string
adapter string
}
@ -26,7 +26,7 @@ func NewUid(oUid, adapter string) (*Uid, error) {
return nil, fmt.Errorf("uid rule not support this platform")
}
var uidRange []utils.Range[int32]
var uidRange []utils.Range[uint32]
for _, u := range strings.Split(oUid, "/") {
if u == "" {
continue
@ -45,14 +45,14 @@ func NewUid(oUid, adapter string) (*Uid, error) {
switch subUidsLen {
case 1:
uidRange = append(uidRange, *utils.NewRange(int32(uidStart), int32(uidStart)))
uidRange = append(uidRange, *utils.NewRange(uint32(uidStart), uint32(uidStart)))
case 2:
uidEnd, err := strconv.ParseUint(strings.Trim(subUids[1], "[ ]"), 10, 32)
if err != nil {
return nil, errPayload
}
uidRange = append(uidRange, *utils.NewRange(int32(uidStart), int32(uidEnd)))
uidRange = append(uidRange, *utils.NewRange(uint32(uidStart), uint32(uidEnd)))
}
}
@ -76,19 +76,21 @@ func (u *Uid) Match(metadata *C.Metadata) (bool, string) {
if err != nil {
return false, ""
}
var uid int32
var uid *uint32
if metadata.Uid != nil {
uid = *metadata.Uid
uid = metadata.Uid
} else if uid, err = process.FindUid(metadata.NetWork.String(), metadata.SrcIP, int(srcPort)); err == nil {
metadata.Uid = &uid
metadata.Uid = uid
} else {
log.Warnln("[UID] could not get uid from %s", metadata.String())
return false, ""
}
for _, _uid := range u.uids {
if _uid.Contains(uid) {
return true, u.adapter
if uid != nil {
for _, _uid := range u.uids {
if _uid.Contains(*uid) {
return true, u.adapter
}
}
}
return false, ""