user

package
v0.0.0-...-c6b16a5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2020 License: GPL-3.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Meter

type Meter struct {
	// contains filtered or unexported fields
}

A simple User implementation

func NewMeter

func NewMeter(ctx context.Context, hash string) *Meter

Create Meter from user id

func (*Meter) AddIP

func (u *Meter) AddIP(ip string) bool

func (*Meter) AddTraffic

func (u *Meter) AddTraffic(sent, recv int)

func (*Meter) Close

func (u *Meter) Close() error

func (*Meter) DelIP

func (u *Meter) DelIP(ip string) bool

func (*Meter) GetAndResetTraffic

func (u *Meter) GetAndResetTraffic() (uint64, uint64)

func (*Meter) GetIP

func (u *Meter) GetIP() int

func (*Meter) GetIPLimit

func (u *Meter) GetIPLimit() int

func (*Meter) GetSpeed

func (u *Meter) GetSpeed() (uint64, uint64)

func (*Meter) GetSpeedLimit

func (u *Meter) GetSpeedLimit() (send, recv int)

func (*Meter) GetTraffic

func (u *Meter) GetTraffic() (uint64, uint64)

func (*Meter) Hash

func (u *Meter) Hash() string

func (*Meter) ResetTraffic

func (u *Meter) ResetTraffic()

func (*Meter) SetIPLimit

func (u *Meter) SetIPLimit(n int)

func (*Meter) SetSpeedLimit

func (u *Meter) SetSpeedLimit(send, recv int)

func (*Meter) SetTraffic

func (u *Meter) SetTraffic(send, recv uint64)

type MeterManager

type MeterManager struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

A simple UserManager implementation for Meter

func NewMeterManager

func NewMeterManager(ctx context.Context, hashes ...string) *MeterManager

Create Authenticator from user ids

func (*MeterManager) AddUser

func (a *MeterManager) AddUser(hash string, more ...string) error

func (*MeterManager) AuthUser

func (a *MeterManager) AuthUser(hash string) (bool, User)

func (*MeterManager) DelUser

func (a *MeterManager) DelUser(hash string) error

func (*MeterManager) ListUsers

func (a *MeterManager) ListUsers() []User

type User

type User interface {
	// 返回用户的标识,一般是明文的,e.g, uuid
	// 如果协议传输过程中需要对用户标识做加密,比如trojan协议对用户标识做了sha224散列,服务端就需要使用散列值来匹配用户,此时就需要给协议实现自定义User和UserManager
	Hash() string

	GetIP() int
	GetIPLimit() int
	SetIPLimit(n int)
	AddIP(ip string) bool
	DelIP(ip string) bool

	GetTraffic() (uint64, uint64)
	SetTraffic(send, recv uint64)
	ResetTraffic()
	AddTraffic(sent, recv int)
	GetAndResetTraffic() (uint64, uint64)

	GetSpeed() (uint64, uint64)
	SetSpeedLimit(send, recv int)
	GetSpeedLimit() (send, recv int)
}

type UserManager

type UserManager interface {
	ListUsers() []User
	AuthUser(hash string) (bool, User)
	AddUser(hash string, more ...string) error
	DelUser(hash string) error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL