Documentation ¶
Index ¶
- type Meter
- func (u *Meter) AddIP(ip string) bool
- func (u *Meter) AddTraffic(sent, recv int)
- func (u *Meter) Close() error
- func (u *Meter) DelIP(ip string) bool
- func (u *Meter) GetAndResetTraffic() (uint64, uint64)
- func (u *Meter) GetIP() int
- func (u *Meter) GetIPLimit() int
- func (u *Meter) GetSpeed() (uint64, uint64)
- func (u *Meter) GetSpeedLimit() (send, recv int)
- func (u *Meter) GetTraffic() (uint64, uint64)
- func (u *Meter) Hash() string
- func (u *Meter) ResetTraffic()
- func (u *Meter) SetIPLimit(n int)
- func (u *Meter) SetSpeedLimit(send, recv int)
- func (u *Meter) SetTraffic(send, recv uint64)
- type MeterManager
- type User
- type UserManager
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 (*Meter) AddTraffic ¶
func (*Meter) GetAndResetTraffic ¶
func (*Meter) GetIPLimit ¶
func (*Meter) GetSpeedLimit ¶
func (*Meter) GetTraffic ¶
func (*Meter) ResetTraffic ¶
func (u *Meter) ResetTraffic()
func (*Meter) SetIPLimit ¶
func (*Meter) SetSpeedLimit ¶
func (*Meter) SetTraffic ¶
type MeterManager ¶
A simple UserManager implementation for Meter
func NewMeterManager ¶
func NewMeterManager(ctx context.Context, hashes ...string) *MeterManager
Create Authenticator from user ids
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) }
Click to show internal directories.
Click to hide internal directories.