mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-04-30 01:08:33 +00:00
API: Add new Get Inbound User (#3644)
* Add GetInboundUser in proto * Add get user logic for all existing inbounds * Add inbounduser command * Add option to get all users * Fix shadowsocks2022 config * Fix init users in shadowsocks2022 * Fix copy * Add inbound user count command This api costs much less than get inbound user, could be useful in some case * Update from latest main
This commit is contained in:
parent
b7aacd3245
commit
85a1c33709
30 changed files with 982 additions and 293 deletions
|
@ -74,6 +74,40 @@ func (v *Validator) Del(email string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// GetByEmail Get a Shadowsocks user with a non-empty Email.
|
||||
func (v *Validator) GetByEmail(email string) *protocol.MemoryUser {
|
||||
if email == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
v.Lock()
|
||||
defer v.Unlock()
|
||||
|
||||
email = strings.ToLower(email)
|
||||
for _, u := range v.users {
|
||||
if strings.EqualFold(u.Email, email) {
|
||||
return u
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetAll get all users
|
||||
func (v *Validator) GetAll() []*protocol.MemoryUser {
|
||||
v.Lock()
|
||||
defer v.Unlock()
|
||||
dst := make([]*protocol.MemoryUser, len(v.users))
|
||||
copy(dst, v.users)
|
||||
return dst
|
||||
}
|
||||
|
||||
// GetCount get users count
|
||||
func (v *Validator) GetCount() int64 {
|
||||
v.Lock()
|
||||
defer v.Unlock()
|
||||
return int64(len(v.users))
|
||||
}
|
||||
|
||||
// Get a Shadowsocks user.
|
||||
func (v *Validator) Get(bs []byte, command protocol.RequestCommand) (u *protocol.MemoryUser, aead cipher.AEAD, ret []byte, ivLen int32, err error) {
|
||||
v.RLock()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue