| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package protocol
- import (
- "github.com/v2ray/v2ray-core/common/dice"
- )
- type UserLevel byte
- const (
- UserLevelAdmin = UserLevel(255)
- UserLevelUntrusted = UserLevel(0)
- )
- type User struct {
- ID *ID
- AlterIDs []*ID
- Level UserLevel
- }
- func NewUser(id *ID, level UserLevel, alterIdCount uint16) *User {
- u := &User{
- ID: id,
- Level: level,
- }
- if alterIdCount > 0 {
- u.AlterIDs = make([]*ID, alterIdCount)
- prevId := id.UUID()
- for idx, _ := range u.AlterIDs {
- newid := prevId.Next()
- // TODO: check duplicate
- u.AlterIDs[idx] = NewID(newid)
- prevId = newid
- }
- }
- return u
- }
- 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
- }
|