40 lines
1010 B
Go

package singbox
import (
"github.com/perfect-panel/server/pkg/adapter/proxy"
)
type TrojanOutboundOptions struct {
ServerOptions
Password string `json:"password"`
Network string `json:"network,omitempty"`
OutboundTLSOptionsContainer
Multiplex *OutboundMultiplexOptions `json:"multiplex,omitempty"`
Transport *V2RayTransportOptions `json:"transport,omitempty"`
}
func ParseTrojan(data proxy.Proxy, uuid string) (*Proxy, error) {
trojan := data.Option.(proxy.Trojan)
p := &Proxy{
Tag: data.Name,
Type: Trojan,
TrojanOptions: &TrojanOutboundOptions{
ServerOptions: ServerOptions{
Tag: data.Name,
Type: Trojan,
Server: data.Server,
ServerPort: data.Port,
},
Password: uuid,
},
}
// Transport options
transport := NewV2RayTransportOptions(trojan.Transport, trojan.TransportConfig)
p.TrojanOptions.Transport = transport
// Security options
p.TrojanOptions.TLS = NewOutboundTLSOptions(trojan.Security, trojan.SecurityConfig)
return p, nil
}