user.go 976 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package protocol
  2. import (
  3. "v2ray.com/core/common/errors"
  4. )
  5. var (
  6. ErrUserMissing = errors.New("User is not specified.")
  7. ErrAccountMissing = errors.New("Account is not specified.")
  8. ErrNonMessageType = errors.New("Not a protobuf message.")
  9. ErrUnknownAccountType = errors.New("Unknown account type.")
  10. )
  11. func (v *User) GetTypedAccount() (Account, error) {
  12. if v.GetAccount() == nil {
  13. return nil, ErrAccountMissing
  14. }
  15. rawAccount, err := v.Account.GetInstance()
  16. if err != nil {
  17. return nil, err
  18. }
  19. if asAccount, ok := rawAccount.(AsAccount); ok {
  20. return asAccount.AsAccount()
  21. }
  22. if account, ok := rawAccount.(Account); ok {
  23. return account, nil
  24. }
  25. return nil, errors.New("Unknown account type: ", v.Account.Type)
  26. }
  27. func (v *User) GetSettings() UserSettings {
  28. settings := UserSettings{
  29. PayloadReadTimeout: 120,
  30. }
  31. if v.Level > 0 {
  32. settings.PayloadReadTimeout = 0
  33. }
  34. return settings
  35. }
  36. type UserSettings struct {
  37. PayloadReadTimeout uint32
  38. }