user.go 665 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package vmess
  2. import (
  3. "math/rand"
  4. )
  5. type UserLevel int
  6. const (
  7. UserLevelAdmin = UserLevel(999)
  8. UserLevelUntrusted = UserLevel(0)
  9. )
  10. type User struct {
  11. ID *ID
  12. AlterIDs []*ID
  13. Level UserLevel
  14. }
  15. func (this *User) AnyValidID() *ID {
  16. if len(this.AlterIDs) == 0 {
  17. return this.ID
  18. }
  19. if len(this.AlterIDs) == 1 {
  20. return this.AlterIDs[0]
  21. }
  22. idx := rand.Intn(len(this.AlterIDs))
  23. return this.AlterIDs[idx]
  24. }
  25. type UserSettings struct {
  26. PayloadReadTimeout int
  27. }
  28. func GetUserSettings(level UserLevel) UserSettings {
  29. settings := UserSettings{
  30. PayloadReadTimeout: 120,
  31. }
  32. if level > 0 {
  33. settings.PayloadReadTimeout = 0
  34. }
  35. return settings
  36. }