diff --git a/api/api.go b/api/api.go index 69efa6d..0a251b8 100644 --- a/api/api.go +++ b/api/api.go @@ -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 { diff --git a/api/user.go b/api/user.go index ff94f65..0e106ca 100644 --- a/api/user.go +++ b/api/user.go @@ -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 } diff --git a/service/controller/controller.go b/service/controller/controller.go index 00278a2..d0ec6b5 100644 --- a/service/controller/controller.go +++ b/service/controller/controller.go @@ -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++