44 lines
1.4 KiB
Go
44 lines
1.4 KiB
Go
package singbox
|
|
|
|
import (
|
|
"github.com/perfect-panel/server/pkg/adapter/proxy"
|
|
)
|
|
|
|
type VMessOutboundOptions struct {
|
|
ServerOptions
|
|
UUID string `json:"uuid"`
|
|
Security string `json:"security"`
|
|
AlterId int `json:"alter_id,omitempty"`
|
|
GlobalPadding bool `json:"global_padding,omitempty"`
|
|
AuthenticatedLength bool `json:"authenticated_length,omitempty"`
|
|
Network string `json:"network,omitempty"`
|
|
PacketEncoding string `json:"packet_encoding,omitempty"`
|
|
Multiplex *OutboundMultiplexOptions `json:"multiplex,omitempty"`
|
|
Transport *V2RayTransportOptions `json:"transport,omitempty"`
|
|
OutboundTLSOptionsContainer
|
|
}
|
|
|
|
func ParseVMess(data proxy.Proxy, uuid string) (*Proxy, error) {
|
|
vmess := data.Option.(proxy.Vmess)
|
|
p := &Proxy{
|
|
Type: VMess,
|
|
VMessOptions: &VMessOutboundOptions{
|
|
ServerOptions: ServerOptions{
|
|
Tag: data.Name,
|
|
Type: VMess,
|
|
Server: data.Server,
|
|
ServerPort: data.Port,
|
|
},
|
|
UUID: uuid,
|
|
Security: "auto",
|
|
AlterId: 0,
|
|
},
|
|
}
|
|
// Transport options
|
|
p.VMessOptions.Transport = NewV2RayTransportOptions(vmess.Transport, vmess.TransportConfig)
|
|
// Security options
|
|
p.VMessOptions.TLS = NewOutboundTLSOptions(vmess.Security, vmess.SecurityConfig)
|
|
|
|
return p, nil
|
|
}
|