| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | package vmessimport (	"encoding/json"	"github.com/v2ray/v2ray-core"	"github.com/v2ray/v2ray-core/log"	v2net "github.com/v2ray/v2ray-core/net")type VMessUser struct {	Id    string `json:"id"`	Email string `json:"email"`}func (u *VMessUser) ToVUser() (core.VUser, error) {	id, err := core.UUIDToVID(u.Id)	return core.VUser{id}, err}type VMessInboundConfig struct {	AllowedClients []VMessUser `json:"clients"`}func loadInboundConfig(rawConfig []byte) (VMessInboundConfig, error) {	config := VMessInboundConfig{}	err := json.Unmarshal(rawConfig, &config)	return config, err}type VNextConfig struct {	Address string      `json:"address"`	Port    uint16      `json:"port"`	Users   []VMessUser `json:"users"`}func (config VNextConfig) ToVNextServer() VNextServer {	users := make([]core.VUser, 0, len(config.Users))	for _, user := range config.Users {		vuser, err := user.ToVUser()		if err != nil {			panic(log.Error("Failed to convert %v to VUser.", user))		}		users = append(users, vuser)	}	return VNextServer{		v2net.DomainAddress(config.Address, config.Port),		users}}type VMessOutboundConfig struct {	VNextList []VNextConfig `json:"vnext"`}func loadOutboundConfig(rawConfig []byte) (VMessOutboundConfig, error) {	config := VMessOutboundConfig{}	err := json.Unmarshal(rawConfig, &config)	return config, err}
 |