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:
yuhan6665 2024-11-03 00:25:23 -04:00 committed by GitHub
parent b7aacd3245
commit 85a1c33709
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
30 changed files with 982 additions and 293 deletions

View file

@ -1,8 +1,11 @@
package protocol
import "google.golang.org/protobuf/proto"
// Account is a user identity used for authentication.
type Account interface {
Equals(Account) bool
ToProto() proto.Message
}
// AsAccount is an object can be converted into account.

View file

@ -1,6 +1,9 @@
package protocol
import "github.com/xtls/xray-core/common/errors"
import (
"github.com/xtls/xray-core/common/errors"
"github.com/xtls/xray-core/common/serial"
)
func (u *User) GetTypedAccount() (Account, error) {
if u.GetAccount() == nil {
@ -32,6 +35,17 @@ func (u *User) ToMemoryUser() (*MemoryUser, error) {
}, nil
}
func ToProtoUser(mu *MemoryUser) *User {
if mu == nil {
return nil
}
return &User{
Account: serial.ToTypedMessage(mu.Account.ToProto()),
Email: mu.Email,
Level: mu.Level,
}
}
// MemoryUser is a parsed form of User, to reduce number of parsing of Account proto.
type MemoryUser struct {
// Account is the parsed account of the protocol.