| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | package protocolimport (	"github.com/v2ray/v2ray-core/common/dice")type UserLevel byteconst (	UserLevelAdmin     = UserLevel(255)	UserLevelUntrusted = UserLevel(0))type User struct {	ID       *ID	AlterIDs []*ID	Level    UserLevel	Email    string}func NewUser(primary *ID, secondary []*ID, level UserLevel, email string) *User {	return &User{		ID:       primary,		AlterIDs: secondary,		Level:    level,		Email:    email,	}}func (this *User) AnyValidID() *ID {	if len(this.AlterIDs) == 0 {		return this.ID	}	return this.AlterIDs[dice.Roll(len(this.AlterIDs))]}type UserSettings struct {	PayloadReadTimeout int}func GetUserSettings(level UserLevel) UserSettings {	settings := UserSettings{		PayloadReadTimeout: 120,	}	if level > 0 {		settings.PayloadReadTimeout = 0	}	return settings}
 |