Files
v2ray_simple/proxy/user.go
T
hahafool 27872e7dfc rename
2022-04-25 18:33:24 +08:00

66 lines
1.2 KiB
Go

package proxy
import (
"io"
"github.com/e1732a364fed/v2ray_simple/utils"
)
//User是一个唯一身份标识。
type User interface {
GetIdentityStr() string //每个user唯一,通过比较这个string 即可 判断两个User 是否相等
GetIdentityBytes() []byte
}
type UserClient interface {
Client
GetUser() User
}
type UserContainer interface {
GetUserByStr(idStr string) User
GetUserByBytes(bs []byte) User
//tlsLayer.UserHaser
HasUserByBytes(bs []byte) bool
UserBytesLen() int
}
// 可以控制 User 登入和登出 的接口, 就像一辆公交车一样,或者一座航站楼。Bus也可以理解为总线。
type UserBus interface {
AddUser(User) error
DelUser(User)
}
type UserServer interface {
Server
UserContainer
}
type UserConn interface {
io.ReadWriter
User
GetProtocolVersion() int
}
//一种专门用于v2ray协议族(vmess/vless)的 用于标识用户的符号 , 实现 User 接口
type V2rayUser [16]byte
func (u V2rayUser) GetIdentityStr() string {
return utils.UUIDToStr(u)
}
func (u V2rayUser) GetIdentityBytes() []byte {
return u[:]
}
func NewV2rayUser(s string) (V2rayUser, error) {
uuid, err := utils.StrToUUID(s)
if err != nil {
return V2rayUser{}, err
}
return uuid, nil
}