diff --git a/cmd/common-main.go b/cmd/common-main.go index 6cc931c4b..952f31165 100644 --- a/cmd/common-main.go +++ b/cmd/common-main.go @@ -116,10 +116,11 @@ const consolePrefix = "CONSOLE_" func minioConfigToConsoleFeatures() { os.Setenv("CONSOLE_PBKDF_SALT", globalDeploymentID) os.Setenv("CONSOLE_PBKDF_PASSPHRASE", globalDeploymentID) - if globalMinioEndpoint == "" { - logger.Fatal(errInvalidArgument, "Unable to start console service MinIO Endpoint is empty") + if globalMinioEndpoint != "" { + os.Setenv("CONSOLE_MINIO_SERVER", globalMinioEndpoint) + } else { + os.Setenv("CONSOLE_MINIO_SERVER", getAPIEndpoints()[0]) } - os.Setenv("CONSOLE_MINIO_SERVER", globalMinioEndpoint) if value := env.Get("MINIO_LOG_QUERY_URL", ""); value != "" { os.Setenv("CONSOLE_LOG_QUERY_URL", value) if value := env.Get("MINIO_LOG_QUERY_AUTH_TOKEN", ""); value != "" { @@ -419,7 +420,7 @@ func handleCommonEnvVars() { } } - if serverURL := env.Get(config.EnvMinIOServerURL, globalEndpoints.Localhost()); serverURL != "" { + if serverURL := env.Get(config.EnvMinIOServerURL, ""); serverURL != "" { u, err := xnet.ParseHTTPURL(serverURL) if err != nil { logger.Fatal(err, "Invalid MINIO_SERVER_URL value in environment variable") diff --git a/cmd/erasure-server-pool.go b/cmd/erasure-server-pool.go index 0dbacc336..0f3b7326b 100644 --- a/cmd/erasure-server-pool.go +++ b/cmd/erasure-server-pool.go @@ -1644,7 +1644,7 @@ func (z *erasureServerPools) HealObjects(ctx context.Context, bucket, prefix str path = prefix } - if err := listPathRaw(ctx, listPathRawOptions{ + lopts := listPathRawOptions{ disks: disks, bucket: bucket, path: path, @@ -1660,7 +1660,9 @@ func (z *erasureServerPools) HealObjects(ctx context.Context, bucket, prefix str } }, finished: nil, - }); err != nil { + } + if err := listPathRaw(ctx, lopts); err != nil { + errCh <- fmt.Errorf("listPathRaw returned %w: opts(%#v)", err, lopts) cancel() return } diff --git a/cmd/server-startup-msg.go b/cmd/server-startup-msg.go index 6cb218e60..986c5008f 100644 --- a/cmd/server-startup-msg.go +++ b/cmd/server-startup-msg.go @@ -20,6 +20,7 @@ package cmd import ( "fmt" "net" + "net/url" "runtime" "strings" @@ -79,39 +80,41 @@ func printStartupMessage(apiEndpoints []string, err error) { } } -// Returns true if input is not IPv4, false if it is. -func isNotIPv4(host string) bool { +// Returns true if input is IPv6 +func isIPv6(host string) bool { h, _, err := net.SplitHostPort(host) if err != nil { h = host } ip := net.ParseIP(h) - ok := ip.To4() != nil // This is always true of IP is IPv4 - - // Returns true if input is not IPv4. - return !ok + return ip.To16() != nil && ip.To4() == nil } // strip api endpoints list with standard ports such as // port "80" and "443" before displaying on the startup // banner. Returns a new list of API endpoints. func stripStandardPorts(apiEndpoints []string, host string) (newAPIEndpoints []string) { - if len(apiEndpoints) == 1 && globalBrowserRedirectURL != nil { - if apiEndpoints[0] == globalBrowserRedirectURL.String() { - return []string{globalBrowserRedirectURL.String()} - } + if len(apiEndpoints) == 1 { + return apiEndpoints } newAPIEndpoints = make([]string, len(apiEndpoints)) // Check all API endpoints for standard ports and strip them. for i, apiEndpoint := range apiEndpoints { - u, err := xnet.ParseHTTPURL(apiEndpoint) + _, err := xnet.ParseHTTPURL(apiEndpoint) if err != nil { continue } - if host == "" && isNotIPv4(u.Host) { - // Skip all non-IPv4 endpoints when we bind to all interfaces. + u, err := url.Parse(apiEndpoint) + if err != nil { continue } + if host == "" && isIPv6(u.Hostname()) { + // Skip all IPv6 endpoints + continue + } + if u.Port() == "80" && u.Scheme == "http" || u.Port() == "443" && u.Scheme == "https" { + u.Host = u.Hostname() + } newAPIEndpoints[i] = u.String() } return newAPIEndpoints diff --git a/cmd/server-startup-msg_test.go b/cmd/server-startup-msg_test.go index 4c59bd338..3024addaf 100644 --- a/cmd/server-startup-msg_test.go +++ b/cmd/server-startup-msg_test.go @@ -58,7 +58,7 @@ func TestStripStandardPorts(t *testing.T) { apiEndpoints = []string{"http://%%%%%:9000"} newAPIEndpoints = stripStandardPorts(apiEndpoints, "") - if !reflect.DeepEqual([]string{""}, newAPIEndpoints) { + if !reflect.DeepEqual(apiEndpoints, newAPIEndpoints) { t.Fatalf("Expected %#v, got %#v", apiEndpoints, newAPIEndpoints) } diff --git a/go.mod b/go.mod index a5870e2d0..b089a6a24 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/mattn/go-runewidth v0.0.13 // indirect github.com/miekg/dns v1.1.35 github.com/minio/cli v1.22.0 - github.com/minio/console v0.8.2 + github.com/minio/console v0.8.3 github.com/minio/csvparser v1.0.0 github.com/minio/highwayhash v1.0.2 github.com/minio/kes v0.14.0 diff --git a/go.sum b/go.sum index 8faa5625d..42dad1f15 100644 --- a/go.sum +++ b/go.sum @@ -1007,8 +1007,8 @@ github.com/minio/cli v1.22.0 h1:VTQm7lmXm3quxO917X3p+el1l0Ca5X3S4PM2ruUYO68= github.com/minio/cli v1.22.0/go.mod h1:bYxnK0uS629N3Bq+AOZZ+6lwF77Sodk4+UL9vNuXhOY= github.com/minio/colorjson v1.0.1 h1:+hvfP8C1iMB95AT+ZFDRE+Knn9QPd9lg0CRJY9DRpos= github.com/minio/colorjson v1.0.1/go.mod h1:oPM3zQQY8Gz9NGtgvuBEjQ+gPZLKAGc7T+kjMlwtOgs= -github.com/minio/console v0.8.2 h1:lXrIW2BB3QI6gGFb84l7Om5fyuTYsiK1+Eba5kz5FxU= -github.com/minio/console v0.8.2/go.mod h1:HtWrypKxQjhkF4sAgkPpmzEIjwsBv1fw62uU8DxN9iE= +github.com/minio/console v0.8.3 h1:CPVbQa5c6Yfdes6C8cqgbrVJZeObLv2JuEeukz78cuI= +github.com/minio/console v0.8.3/go.mod h1:WxLPG3KdYPl7aOi3npLvvybQkxrnc4coffxFwMAu2kI= github.com/minio/csvparser v1.0.0 h1:xJEHcYK8ZAjeW4hNV9Zu30u+/2o4UyPnYgyjWp8b7ZU= github.com/minio/csvparser v1.0.0/go.mod h1:lKXskSLzPgC5WQyzP7maKH7Sl1cqvANXo9YCto8zbtM= github.com/minio/direct-csi v1.3.5-0.20210601185811-f7776f7961bf h1:wylCc/PdvdTIqYqVNEU9LJAZBanvfGY1TwTnjM3zQaA= @@ -1021,7 +1021,6 @@ github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLT github.com/minio/kes v0.11.0/go.mod h1:mTF1Bv8YVEtQqF/B7Felp4tLee44Pp+dgI0rhCvgNg8= github.com/minio/kes v0.14.0 h1:plCGm4LwR++T1P1sXsJbyFRX54CE1WRuo9PAPj6MC3Q= github.com/minio/kes v0.14.0/go.mod h1:OUensXz2BpgMfiogslKxv7Anyx/wj+6bFC6qA7BQcfA= -github.com/minio/madmin-go v1.0.6/go.mod h1:BK+z4XRx7Y1v8SFWXsuLNqQqnq5BO/axJ8IDJfgyvfs= github.com/minio/madmin-go v1.0.12/go.mod h1:BK+z4XRx7Y1v8SFWXsuLNqQqnq5BO/axJ8IDJfgyvfs= github.com/minio/madmin-go v1.0.17/go.mod h1:4nl9hvLWFnwCjkLfZSsZXEHgDODa2XSG6xGlIZyQ2oA= github.com/minio/madmin-go v1.0.20 h1:gb3zY97oUuBuw6BTxmn2THhiEXEgSRmSVqhhHZq3Pc0= @@ -1036,10 +1035,10 @@ github.com/minio/minio-go/v7 v7.0.11-0.20210302210017-6ae69c73ce78/go.mod h1:mTh github.com/minio/minio-go/v7 v7.0.11-0.20210607181445-e162fdb8e584/go.mod h1:WoyW+ySKAKjY98B9+7ZbI8z8S3jaxaisdcvj9TGlazA= github.com/minio/minio-go/v7 v7.0.13-0.20210715203016-9e713532886e h1:aVnxKPpUI1gVeEf9vC+QEt8OxMXiiNMeUWcrBM62oDU= github.com/minio/minio-go/v7 v7.0.13-0.20210715203016-9e713532886e/go.mod h1:S23iSP5/gbMwtxeY5FM71R+TkAYyzEdoNEDDwpt8yWs= -github.com/minio/operator v0.0.0-20210616045941-65f31f5f78ae h1:GONmqbjCi/KTEc1CGujnS/m1qeJeghcQ8dUBLh19qQo= -github.com/minio/operator v0.0.0-20210616045941-65f31f5f78ae/go.mod h1:8/mIXK+CFdL6VqyxRn1SwD+PEX0jsN8uqjoadaw/Np0= -github.com/minio/operator/logsearchapi v0.0.0-20210604224119-7e256f98cf90 h1:Qu6j6oE7+QNuq7Kr2DLyVYq3fqMdqFd/T8NAeNp47og= -github.com/minio/operator/logsearchapi v0.0.0-20210604224119-7e256f98cf90/go.mod h1:R+38Pf3wfm+JMiyLPb/r8OMrBm0vK2hZgUT4y4aYoSY= +github.com/minio/operator v0.0.0-20210803012017-0f43eee7fd7a h1:jvEyFZBLo1mIc5YTg+AIAieDkzoAnc9+j4yT5kZO15E= +github.com/minio/operator v0.0.0-20210803012017-0f43eee7fd7a/go.mod h1:zQqn6VGT46xlSpVXh1I/VZRv+eSgHtVu6URdg71YKX8= +github.com/minio/operator/logsearchapi v0.0.0-20210803012017-0f43eee7fd7a h1:tnyzzgWP0PXM1nrwHtlyawuBguY+6R9/yee0bezbGDY= +github.com/minio/operator/logsearchapi v0.0.0-20210803012017-0f43eee7fd7a/go.mod h1:R+38Pf3wfm+JMiyLPb/r8OMrBm0vK2hZgUT4y4aYoSY= github.com/minio/parquet-go v1.0.0 h1:fcWsEvub04Nsl/4hiRBDWlbqd6jhacQieV07a+nhiIk= github.com/minio/parquet-go v1.0.0/go.mod h1:aQlkSOfOq2AtQKkuou3mosNVMwNokd+faTacxxk/oHA= github.com/minio/pkg v1.0.3/go.mod h1:obU54TZ9QlMv0TRaDgQ/JTzf11ZSXxnSfLrm4tMtBP8=