1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-30 19:15:23 +00:00
v2fly/userset.go

41 lines
836 B
Go
Raw Normal View History

2015-09-07 21:48:19 +00:00
package core
import (
"encoding/base64"
)
2015-09-12 20:11:54 +00:00
type UserSet struct {
validUserIds []ID
userIdsAskHash map[string]int
}
2015-09-12 20:11:54 +00:00
func NewUserSet() *UserSet {
vuSet := new(UserSet)
vuSet.validUserIds = make([]ID, 0, 16)
2015-09-08 23:11:02 +00:00
vuSet.userIdsAskHash = make(map[string]int)
return vuSet
}
func hashBytesToString(hash []byte) string {
return base64.StdEncoding.EncodeToString(hash)
}
2015-09-12 20:11:54 +00:00
func (us *UserSet) AddUser(user User) error {
id := user.Id
us.validUserIds = append(us.validUserIds, id)
idBase64 := hashBytesToString(id.Hash([]byte("ASK")))
us.userIdsAskHash[idBase64] = len(us.validUserIds) - 1
return nil
}
2015-09-12 20:11:54 +00:00
func (us UserSet) IsValidUserId(askHash []byte) (*ID, bool) {
askBase64 := hashBytesToString(askHash)
idIndex, found := us.userIdsAskHash[askBase64]
if found {
return &us.validUserIds[idIndex], true
}
return nil, false
2015-09-07 21:48:19 +00:00
}