40 lines
1001 B
Go
40 lines
1001 B
Go
package quantumultx
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/perfect-panel/server/pkg/adapter/proxy"
|
|
)
|
|
|
|
// 生成 Trojan 配置
|
|
func buildTrojan(data proxy.Proxy, password string) string {
|
|
trojan := data.Option.(proxy.Trojan)
|
|
|
|
addr := fmt.Sprintf("trojan=%s:%d", data.Server, data.Port)
|
|
config := []string{
|
|
addr,
|
|
fmt.Sprintf("password=%s", password),
|
|
"fast-open=true",
|
|
"udp-relay=true",
|
|
fmt.Sprintf("tag=%s", data.Name),
|
|
}
|
|
|
|
if trojan.Transport == "websocket" {
|
|
config = append(config, "obfs=wss")
|
|
if trojan.TransportConfig.Path != "" {
|
|
config = append(config, fmt.Sprintf("obfs-uri=%s", trojan.TransportConfig.Path))
|
|
}
|
|
if trojan.TransportConfig.Host != "" {
|
|
config = append(config, fmt.Sprintf("obfs-host=%s", trojan.TransportConfig.Host))
|
|
}
|
|
} else {
|
|
config = append(config, "over-tls=true")
|
|
if trojan.SecurityConfig.SNI != "" {
|
|
config = append(config, fmt.Sprintf("tls-host=%s", trojan.SecurityConfig.SNI))
|
|
}
|
|
}
|
|
|
|
return strings.Join(config, ",") + "\r\n"
|
|
}
|