server/pkg/adapter/loon/trojan.go
Chang lue Tsen 8addcc584b init: 1.0.0
2025-04-25 12:08:29 +09:00

45 lines
1.0 KiB
Go

package loon
import (
"fmt"
"strings"
"github.com/perfect-panel/ppanel-server/pkg/adapter/proxy"
)
func buildTrojan(data proxy.Proxy, password string) string {
trojan := data.Option.(proxy.Trojan)
configs := []string{
fmt.Sprintf("%s=trojan", data.Name),
data.Server,
fmt.Sprintf("%d", data.Port),
"auto",
password,
"fast-open=false",
"udp=true",
}
if trojan.SecurityConfig.SNI != "" {
configs = append(configs, fmt.Sprintf("sni=%s", trojan.SecurityConfig.SNI))
}
if trojan.SecurityConfig.AllowInsecure {
configs = append(configs, "skip-cert-verify=true")
} else {
configs = append(configs, "skip-cert-verify=false")
}
if trojan.Transport == "websocket" {
configs = append(configs, "transport=ws")
if trojan.TransportConfig.Path != "" {
configs = append(configs, fmt.Sprintf("path=%s", trojan.TransportConfig.Path))
}
if trojan.TransportConfig.Host != "" {
configs = append(configs, fmt.Sprintf("host=%s", trojan.TransportConfig.Host))
}
}
uri := strings.Join(configs, ",")
return uri + "\r\n"
}