Generate config: Properly handle ipv6 endpoints

This commit is contained in:
Leander Schulten 2024-07-08 19:35:56 +02:00
parent 2fdafd34ca
commit 05fd3a025c

View file

@ -62,13 +62,29 @@ func BuildClientConfig(client model.Client, server model.Server, setting model.G
desiredHost := setting.EndpointAddress desiredHost := setting.EndpointAddress
desiredPort := server.Interface.ListenPort desiredPort := server.Interface.ListenPort
if strings.Contains(desiredHost, ":") { is_ipv4 := strings.Contains(desiredHost, ".")
split := strings.Split(desiredHost, ":") if is_ipv4 {
desiredHost = split[0] if strings.Contains(desiredHost, ":") {
if n, err := strconv.Atoi(split[1]); err == nil { split := strings.Split(desiredHost, ":")
desiredPort = n desiredHost = split[0]
if n, err := strconv.Atoi(split[1]); err == nil {
desiredPort = n
} else {
log.Error("Endpoint appears to be incorrectly formatted: ", err)
}
}
} else {
if strings.Contains(desiredHost, "]") {
// IPv6 with port
split := strings.Split(desiredHost, "]")
desiredHost = split[0] + "]"
if n, err := strconv.Atoi(split[1][1:]); err == nil {
desiredPort = n
} else {
log.Error("Endpoint appears to be incorrectly formatted: ", err)
}
} else { } else {
log.Error("Endpoint appears to be incorrectly formatted: ", err) desiredHost = "[" + desiredHost + "]"
} }
} }
peerEndpoint := fmt.Sprintf("Endpoint = %s:%d\n", desiredHost, desiredPort) peerEndpoint := fmt.Sprintf("Endpoint = %s:%d\n", desiredHost, desiredPort)