user.go 830 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package protocol
  2. import (
  3. "github.com/v2ray/v2ray-core/common/dice"
  4. )
  5. type UserLevel byte
  6. const (
  7. UserLevelAdmin = UserLevel(255)
  8. UserLevelUntrusted = UserLevel(0)
  9. )
  10. type User struct {
  11. ID *ID
  12. AlterIDs []*ID
  13. Level UserLevel
  14. Email string
  15. }
  16. func NewUser(primary *ID, secondary []*ID, level UserLevel, email string) *User {
  17. return &User{
  18. ID: primary,
  19. AlterIDs: secondary,
  20. Level: level,
  21. Email: email,
  22. }
  23. }
  24. func (this *User) AnyValidID() *ID {
  25. if len(this.AlterIDs) == 0 {
  26. return this.ID
  27. }
  28. return this.AlterIDs[dice.Roll(len(this.AlterIDs))]
  29. }
  30. type UserSettings struct {
  31. PayloadReadTimeout int
  32. }
  33. func GetUserSettings(level UserLevel) UserSettings {
  34. settings := UserSettings{
  35. PayloadReadTimeout: 120,
  36. }
  37. if level > 0 {
  38. settings.PayloadReadTimeout = 0
  39. }
  40. return settings
  41. }