35 lines
826 B
Go
35 lines
826 B
Go
package loon
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/perfect-panel/server/pkg/adapter/proxy"
|
|
)
|
|
|
|
func buildShadowsocks(data proxy.Proxy, password string) string {
|
|
shadowsocks := data.Option.(proxy.Shadowsocks)
|
|
// If the method is 2022-blake3-chacha20-poly1305, it means that the server is a relay server
|
|
if shadowsocks.Method == "2022-blake3-chacha20-poly1305" {
|
|
return ""
|
|
}
|
|
|
|
if strings.Contains(shadowsocks.Method, "2022") {
|
|
serverKey, userKey := proxy.GenerateShadowsocks2022Password(shadowsocks, password)
|
|
password = fmt.Sprintf("%s:%s", serverKey, userKey)
|
|
}
|
|
|
|
configs := []string{
|
|
fmt.Sprintf("%s=Shadowsocks", data.Name),
|
|
data.Server,
|
|
strconv.Itoa(data.Port),
|
|
shadowsocks.Method,
|
|
password,
|
|
"fast-open=false",
|
|
"udp=true",
|
|
}
|
|
uri := strings.Join(configs, ",")
|
|
return uri + "\r\n"
|
|
}
|