V2bX/core/xray/vmess.go
2023-07-29 19:27:15 +08:00

51 lines
1.4 KiB
Go

package xray
import (
"github.com/InazumaV/V2bX/api/panel"
"github.com/InazumaV/V2bX/common/format"
"github.com/xtls/xray-core/common/protocol"
"github.com/xtls/xray-core/common/serial"
"github.com/xtls/xray-core/infra/conf"
"github.com/xtls/xray-core/proxy/vless"
)
func buildVmessUsers(tag string, userInfo []panel.UserInfo) (users []*protocol.User) {
users = make([]*protocol.User, len(userInfo))
for i, user := range userInfo {
users[i] = buildVmessUser(tag, &user)
}
return users
}
func buildVmessUser(tag string, userInfo *panel.UserInfo) (user *protocol.User) {
vmessAccount := &conf.VMessAccount{
ID: userInfo.Uuid,
Security: "auto",
}
return &protocol.User{
Level: 0,
Email: format.UserTag(tag, userInfo.Uuid), // Uid: InboundTag|email
Account: serial.ToTypedMessage(vmessAccount.Build()),
}
}
func buildVlessUsers(tag string, userInfo []panel.UserInfo, flow string) (users []*protocol.User) {
users = make([]*protocol.User, len(userInfo))
for i := range userInfo {
users[i] = buildVlessUser(tag, &(userInfo)[i], flow)
}
return users
}
func buildVlessUser(tag string, userInfo *panel.UserInfo, flow string) (user *protocol.User) {
vlessAccount := &vless.Account{
Id: userInfo.Uuid,
}
vlessAccount.Flow = flow
return &protocol.User{
Level: 0,
Email: format.UserTag(tag, userInfo.Uuid),
Account: serial.ToTypedMessage(vlessAccount),
}
}