44 lines
936 B
Go
44 lines
936 B
Go
package surge
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/perfect-panel/server/pkg/adapter/proxy"
|
|
)
|
|
|
|
func buildHysteria2(data proxy.Proxy, uuid string) string {
|
|
hysteria2, ok := data.Option.(proxy.Hysteria2)
|
|
if !ok {
|
|
return ""
|
|
}
|
|
|
|
var port int
|
|
if hysteria2.HopPorts != "" {
|
|
ports := strings.Split(hysteria2.HopPorts, ",")
|
|
p := ports[0]
|
|
if len(strings.Split(p, "-")) > 1 {
|
|
p = strings.Split(p, "-")[0]
|
|
}
|
|
port, _ = strconv.Atoi(p)
|
|
} else {
|
|
port = data.Port
|
|
}
|
|
|
|
config := []string{
|
|
fmt.Sprintf("%s=hysteria2,%s,%d", data.Name, data.Server, port),
|
|
"password=" + uuid,
|
|
"udp-relay=true",
|
|
}
|
|
if hysteria2.SecurityConfig.SNI != "" {
|
|
config = append(config, "sni="+hysteria2.SecurityConfig.SNI)
|
|
}
|
|
if hysteria2.SecurityConfig.AllowInsecure {
|
|
config = append(config, "skip-cert-verify=true")
|
|
} else {
|
|
config = append(config, "skip-cert-verify=false")
|
|
}
|
|
return strings.Join(config, ",") + "\r\n"
|
|
}
|