Add uid and app status in routing rule

This commit is contained in:
世界 2021-08-27 13:00:13 +08:00
parent 707efd6d12
commit 16d96aa54d
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
12 changed files with 429 additions and 133 deletions

View file

@ -239,3 +239,11 @@ func (v *User) Build() *protocol.User {
Level: uint32(v.LevelByte),
}
}
type UidList []uint32
func (l UidList) Build() *net.UidList {
return &net.UidList{
Uid: l,
}
}

View file

@ -498,6 +498,8 @@ func parseFieldRule(msg json.RawMessage) (*router.RoutingRule, error) {
InboundTag *StringList `json:"inboundTag"`
Protocols *StringList `json:"protocol"`
Attributes string `json:"attrs"`
UidList *UidList `json:"uidList"`
AppStatus *StringList `json:"appStatus"`
}
rawFieldRule := new(RawFieldRule)
err := json.Unmarshal(msg, rawFieldRule)
@ -593,6 +595,16 @@ func parseFieldRule(msg json.RawMessage) (*router.RoutingRule, error) {
rule.Attributes = rawFieldRule.Attributes
}
if rawFieldRule.UidList != nil && len(*rawFieldRule.UidList) > 0 {
rule.UidList = rawFieldRule.UidList.Build()
}
if rawFieldRule.AppStatus != nil && rawFieldRule.AppStatus.Len() > 0 {
for _, s := range *rawFieldRule.AppStatus {
rule.AppStatus = append(rule.AppStatus, s)
}
}
return rule, nil
}