mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-12-24 13:27:56 +08:00
66 lines
1.2 KiB
Go
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
|
||
}
|