mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-10-07 01:32:57 +08:00
77 lines
1.5 KiB
Go
77 lines
1.5 KiB
Go
package proxy
|
||
|
||
import (
|
||
"io"
|
||
|
||
"github.com/hahahrfool/v2ray_simple/utils"
|
||
)
|
||
|
||
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 登入和登出 的接口, 就像一辆公交车一样,或者一座航站楼
|
||
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 nil, err
|
||
}
|
||
|
||
return (*V2rayUser)(&uuid), nil
|
||
}
|
||
|
||
/*
|
||
//vmess legacy代码,先放这里,什么时候想实现vmess了再说
|
||
// GetKey returns the key of AES-128-CFB encrypter
|
||
// Key:MD5(UUID + []byte('c48619fe-8f02-49e0-b9e9-edf763e17e21'))
|
||
func Get_cmdKey(uuid [16]byte) []byte {
|
||
md5hash := md5.New()
|
||
md5hash.Write(uuid[:])
|
||
md5hash.Write([]byte("c48619fe-8f02-49e0-b9e9-edf763e17e21"))
|
||
return md5hash.Sum(nil)
|
||
}
|
||
*/
|