1
0
Fork 0

Use standard library to join host and port

This way we get network addresses that are compatible with IPv6 hosts.
master
Philip O'Toole 9 months ago
parent d5d2c35262
commit 25403472ab

@ -41,7 +41,7 @@ func backup(ctx *cli.Context, filename string, argv *argT) error {
queryStr := url.Values{}
u := url.URL{
Scheme: argv.Protocol,
Host: fmt.Sprintf("%s:%d", argv.Host, argv.Port),
Host: address6(argv),
Path: fmt.Sprintf("%sdb/backup", argv.Prefix),
RawQuery: queryStr.Encode(),
}
@ -64,7 +64,7 @@ func dump(ctx *cli.Context, filename string, argv *argT) error {
queryStr.Set("fmt", "sql")
u := url.URL{
Scheme: argv.Protocol,
Host: fmt.Sprintf("%s:%d", argv.Host, argv.Port),
Host: address6(argv),
Path: fmt.Sprintf("%sdb/backup", argv.Prefix),
RawQuery: queryStr.Encode(),
}
@ -139,7 +139,7 @@ func restore(ctx *cli.Context, filename string, argv *argT) error {
queryStr := url.Values{}
restoreURL := url.URL{
Scheme: argv.Protocol,
Host: fmt.Sprintf("%s:%d", argv.Host, argv.Port),
Host: address6(argv),
Path: fmt.Sprintf("%sdb/load", argv.Prefix),
RawQuery: queryStr.Encode(),
}
@ -190,7 +190,7 @@ func boot(ctx *cli.Context, filename string, argv *argT) error {
}
defer fd.Close()
bootURL := fmt.Sprintf("%s://%s:%d/boot", argv.Protocol, argv.Host, argv.Port)
bootURL := fmt.Sprintf("%s://%s/boot", argv.Protocol, address6(argv))
req, err := http.NewRequest("POST", bootURL, fd)
if err != nil {
return err
@ -225,7 +225,7 @@ func boot(ctx *cli.Context, filename string, argv *argT) error {
}
func checkStatus(ctx *cli.Context, argv *argT) (*statusResponse, error) {
statusURL := fmt.Sprintf("%s://%s:%d/status", argv.Protocol, argv.Host, argv.Port)
statusURL := fmt.Sprintf("%s://%s/status", argv.Protocol, address6(argv))
client := http.Client{Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
TLSClientConfig: &tls.Config{InsecureSkipVerify: argv.Insecure},

@ -7,6 +7,7 @@ import (
"errors"
"fmt"
"io"
"net"
"net/http"
"net/url"
"os"
@ -90,7 +91,7 @@ func main() {
return nil
}
connectionStr := fmt.Sprintf("%s://%s:%d", argv.Protocol, argv.Host, argv.Port)
connectionStr := fmt.Sprintf("%s://%s", argv.Protocol, address6(argv))
version, err := getVersionWithClient(httpClient, argv)
if err != nil {
msg := err.Error()
@ -108,7 +109,7 @@ func main() {
timer := false
consistency := "weak"
prefix := fmt.Sprintf("%s:%d>", argv.Host, argv.Port)
prefix := fmt.Sprintf("%s>", address6(argv))
term, err := prompt.NewTerminal()
if err != nil {
ctx.String("%s %v\n", ctx.Color().Red("ERR!"), err)
@ -276,14 +277,14 @@ func help(ctx *cli.Context, cmd, line string, argv *argT) error {
}
func status(ctx *cli.Context, cmd, line string, argv *argT) error {
url := fmt.Sprintf("%s://%s:%d/status", argv.Protocol, argv.Host, argv.Port)
url := fmt.Sprintf("%s://%s/status", argv.Protocol, address6(argv))
return cliJSON(ctx, cmd, line, url, argv)
}
func ready(ctx *cli.Context, client *http.Client, argv *argT) error {
u := url.URL{
Scheme: argv.Protocol,
Host: fmt.Sprintf("%s:%d", argv.Host, argv.Port),
Host: address6(argv),
Path: fmt.Sprintf("%sreadyz", argv.Prefix),
}
urlStr := u.String()
@ -314,12 +315,12 @@ func ready(ctx *cli.Context, client *http.Client, argv *argT) error {
}
func nodes(ctx *cli.Context, cmd, line string, argv *argT) error {
url := fmt.Sprintf("%s://%s:%d/nodes", argv.Protocol, argv.Host, argv.Port)
url := fmt.Sprintf("%s://%s/nodes", argv.Protocol, address6(argv))
return cliJSON(ctx, cmd, line, url, argv)
}
func expvar(ctx *cli.Context, cmd, line string, argv *argT) error {
url := fmt.Sprintf("%s://%s:%d/debug/vars", argv.Protocol, argv.Host, argv.Port)
url := fmt.Sprintf("%s://%s/debug/vars", argv.Protocol, address6(argv))
return cliJSON(ctx, cmd, line, url, argv)
}
@ -355,7 +356,7 @@ func sysdump(ctx *cli.Context, client *http.Client, filename string, argv *argT)
func getNodes(client *http.Client, argv *argT) (Nodes, error) {
u := url.URL{
Scheme: argv.Protocol,
Host: fmt.Sprintf("%s:%d", argv.Host, argv.Port),
Host: address6(argv),
Path: fmt.Sprintf("%snodes", argv.Prefix),
}
urlStr := u.String()
@ -417,7 +418,7 @@ func getHTTPClient(argv *argT) (*http.Client, error) {
func getVersionWithClient(client *http.Client, argv *argT) (string, error) {
u := url.URL{
Scheme: argv.Protocol,
Host: fmt.Sprintf("%s:%d", argv.Host, argv.Port),
Host: address6(argv),
Path: fmt.Sprintf("%s/status", argv.Prefix),
}
urlStr := u.String()
@ -645,7 +646,13 @@ func urlsToWriter(client *http.Client, urls []string, w io.Writer, argv *argT) e
func createHostList(argv *argT) []string {
var hosts = make([]string, 0)
hosts = append(hosts, fmt.Sprintf("%s:%d", argv.Host, argv.Port))
hosts = append(hosts, address6(argv))
hosts = append(hosts, strings.Split(argv.Alternatives, ",")...)
return hosts
}
// address6 returns a string representation of the given address and port,
// which is compatible with IPv6 addresses.
func address6(argv *argT) string {
return net.JoinHostPort(argv.Host, fmt.Sprintf("%d", argv.Port))
}

@ -12,7 +12,7 @@ import (
func removeNode(client *http.Client, id string, argv *argT, timer bool) error {
u := url.URL{
Scheme: argv.Protocol,
Host: fmt.Sprintf("%s:%d", argv.Host, argv.Port),
Host: address6(argv),
Path: fmt.Sprintf("%sremove", argv.Prefix),
}
urlStr := u.String()

Loading…
Cancel
Save