This commit is contained in:
yuzuki999 2022-06-09 21:19:57 +08:00
parent c3995c79e9
commit aa8ae319db
3 changed files with 17 additions and 30 deletions

View File

@ -42,16 +42,15 @@ type Client struct {
Key string
NodeType string
//EnableSS2022 bool
EnableVless bool
EnableXTLS bool
SpeedLimit float64
DeviceLimit int
LocalRuleList []DetectRule
RemoteRuleCache *Rule
access sync.Mutex
NodeInfoRspMd5 [16]byte
NodeRuleRspMd5 [16]byte
UserListCheckNum int
EnableVless bool
EnableXTLS bool
SpeedLimit float64
DeviceLimit int
LocalRuleList []DetectRule
RemoteRuleCache *Rule
access sync.Mutex
NodeInfoRspMd5 [16]byte
NodeRuleRspMd5 [16]byte
}
func New(apiConfig *Config) API {

View File

@ -69,16 +69,6 @@ func (c *Client) GetUserList() (UserList *[]UserInfo, err error) {
if err != nil {
return nil, fmt.Errorf("unmarshal userlist error: %s", err)
}
l := len(userList.Data)
checkNum := userList.Data[l-1].UID + userList.Data[l/2-1].UID +
userList.Data[l/3-1].UID + userList.Data[l/4-1].UID +
userList.Data[l/5-1].UID + userList.Data[0].UID
if c.UserListCheckNum != 0 {
if c.UserListCheckNum == checkNum {
return nil, nil
}
}
c.UserListCheckNum = checkNum
return &userList.Data, nil
}

View File

@ -190,9 +190,7 @@ func (c *Controller) nodeInfoMonitor() (err error) {
return nil
}
if nodeInfoChanged {
if newUserInfo != nil {
c.userList = newUserInfo
}
c.userList = newUserInfo
newUserInfo = nil
err = c.addNewUser(c.userList, newNodeInfo)
if err != nil {
@ -206,7 +204,7 @@ func (c *Controller) nodeInfoMonitor() (err error) {
return nil
}
runtime.GC()
} else if newUserInfo != nil {
} else {
deleted, added := compareUserList(c.userList, newUserInfo)
if len(deleted) > 0 {
deletedEmail := make([]string, len(deleted))
@ -337,15 +335,15 @@ func (c *Controller) addNewUserFromIndex(userInfo *[]api.UserInfo, userIndex *[]
}
func compareUserList(old, new *[]api.UserInfo) (deleted, added []int) {
tmp := map[int]struct{}{}
tmp2 := map[int]struct{}{}
tmp := map[string]struct{}{}
tmp2 := map[string]struct{}{}
for i := range *old {
tmp[(*old)[i].UID] = struct{}{}
tmp[(*old)[i].GetUserEmail()] = struct{}{}
}
l := len(tmp)
for i := range *new {
tmp[(*new)[i].UID] = struct{}{}
tmp2[(*new)[i].UID] = struct{}{}
tmp[(*old)[i].GetUserEmail()] = struct{}{}
tmp2[(*new)[i].GetUserEmail()] = struct{}{}
if l != len(tmp) {
added = append(added, i)
l++
@ -354,7 +352,7 @@ func compareUserList(old, new *[]api.UserInfo) (deleted, added []int) {
tmp = nil
l = len(tmp2)
for i := range *old {
tmp2[(*old)[i].UID] = struct{}{}
tmp2[(*old)[i].GetUserEmail()] = struct{}{}
if l != len(tmp2) {
deleted = append(deleted, i)
l++