mirror of
https://github.com/minio/minio.git
synced 2024-12-24 22:25:54 -05:00
log: Startup banner should strip standard ports. (#4443)
APIEndpoints list should strip off standard ports to avoid confusion with clients.
This commit is contained in:
parent
975972d57e
commit
28352f3f5d
@ -19,6 +19,7 @@ package cmd
|
||||
import (
|
||||
"crypto/x509"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
@ -44,12 +45,14 @@ func getFormatStr(strLen int, padding int) string {
|
||||
// Prints the formatted startup message.
|
||||
func printStartupMessage(apiEndPoints []string) {
|
||||
|
||||
strippedAPIEndpoints := stripStandardPorts(apiEndPoints)
|
||||
|
||||
// Prints credential, region and browser access.
|
||||
printServerCommonMsg(apiEndPoints)
|
||||
printServerCommonMsg(strippedAPIEndpoints)
|
||||
|
||||
// Prints `mc` cli configuration message chooses
|
||||
// first endpoint as default.
|
||||
printCLIAccessMsg(apiEndPoints[0])
|
||||
printCLIAccessMsg(strippedAPIEndpoints[0])
|
||||
|
||||
// Prints documentation message.
|
||||
printObjectAPIMsg()
|
||||
@ -67,6 +70,34 @@ func printStartupMessage(apiEndPoints []string) {
|
||||
}
|
||||
}
|
||||
|
||||
// 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) (newAPIEndpoints []string) {
|
||||
newAPIEndpoints = make([]string, len(apiEndpoints))
|
||||
// Check all API endpoints for standard ports and strip them.
|
||||
for i, apiEndpoint := range apiEndpoints {
|
||||
url, err := url.Parse(apiEndpoint)
|
||||
if err != nil {
|
||||
newAPIEndpoints[i] = apiEndpoint
|
||||
continue
|
||||
}
|
||||
host, port := mustSplitHostPort(url.Host)
|
||||
// For standard HTTP(s) ports such as "80" and "443"
|
||||
// apiEndpoints should only be host without port.
|
||||
switch {
|
||||
case url.Scheme == "http" && port == "80":
|
||||
fallthrough
|
||||
case url.Scheme == "https" && port == "443":
|
||||
url.Host = host
|
||||
newAPIEndpoints[i] = url.String()
|
||||
default:
|
||||
newAPIEndpoints[i] = apiEndpoint
|
||||
}
|
||||
}
|
||||
return newAPIEndpoints
|
||||
}
|
||||
|
||||
// Prints common server startup message. Prints credential, region and browser access.
|
||||
func printServerCommonMsg(apiEndpoints []string) {
|
||||
// Get saved credentials.
|
||||
@ -76,6 +107,7 @@ func printServerCommonMsg(apiEndpoints []string) {
|
||||
region := serverConfig.GetRegion()
|
||||
|
||||
apiEndpointStr := strings.Join(apiEndpoints, " ")
|
||||
|
||||
// Colorize the message and print.
|
||||
log.Println(colorBlue("\nEndpoint: ") + colorBold(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 1), apiEndpointStr)))
|
||||
log.Println(colorBlue("AccessKey: ") + colorBold(fmt.Sprintf("%s ", cred.AccessKey)))
|
||||
|
@ -20,6 +20,7 @@ import (
|
||||
"crypto/x509"
|
||||
"crypto/x509/pkix"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@ -95,6 +96,29 @@ func TestCertificateNotExpired(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// Tests stripping standard ports from apiEndpoints.
|
||||
func TestStripStandardPorts(t *testing.T) {
|
||||
apiEndpoints := []string{"http://127.0.0.1:9000", "http://127.0.0.2:80", "https://127.0.0.3:443"}
|
||||
expectedAPIEndpoints := []string{"http://127.0.0.1:9000", "http://127.0.0.2", "https://127.0.0.3"}
|
||||
newAPIEndpoints := stripStandardPorts(apiEndpoints)
|
||||
|
||||
if !reflect.DeepEqual(expectedAPIEndpoints, newAPIEndpoints) {
|
||||
t.Fatalf("Expected %#v, got %#v", expectedAPIEndpoints, newAPIEndpoints)
|
||||
}
|
||||
|
||||
apiEndpoints = []string{"http://%%%%%:9000"}
|
||||
newAPIEndpoints = stripStandardPorts(apiEndpoints)
|
||||
if !reflect.DeepEqual(apiEndpoints, newAPIEndpoints) {
|
||||
t.Fatalf("Expected %#v, got %#v", apiEndpoints, newAPIEndpoints)
|
||||
}
|
||||
|
||||
apiEndpoints = []string{"http://127.0.0.1:443", "https://127.0.0.1:80"}
|
||||
newAPIEndpoints = stripStandardPorts(apiEndpoints)
|
||||
if !reflect.DeepEqual(apiEndpoints, newAPIEndpoints) {
|
||||
t.Fatalf("Expected %#v, got %#v", apiEndpoints, newAPIEndpoints)
|
||||
}
|
||||
}
|
||||
|
||||
// Test printing server common message.
|
||||
func TestPrintServerCommonMessage(t *testing.T) {
|
||||
root, err := newTestConfig(globalMinioDefaultRegion)
|
||||
@ -103,7 +127,7 @@ func TestPrintServerCommonMessage(t *testing.T) {
|
||||
}
|
||||
defer removeAll(root)
|
||||
|
||||
apiEndpoints := []string{"127.0.0.1:9000"}
|
||||
apiEndpoints := []string{"http://127.0.0.1:9000"}
|
||||
printServerCommonMsg(apiEndpoints)
|
||||
}
|
||||
|
||||
@ -115,7 +139,7 @@ func TestPrintCLIAccessMsg(t *testing.T) {
|
||||
}
|
||||
defer removeAll(root)
|
||||
|
||||
apiEndpoints := []string{"127.0.0.1:9000"}
|
||||
apiEndpoints := []string{"http://127.0.0.1:9000"}
|
||||
printCLIAccessMsg(apiEndpoints[0])
|
||||
}
|
||||
|
||||
@ -127,6 +151,6 @@ func TestPrintStartupMessage(t *testing.T) {
|
||||
}
|
||||
defer removeAll(root)
|
||||
|
||||
apiEndpoints := []string{"127.0.0.1:9000"}
|
||||
apiEndpoints := []string{"http://127.0.0.1:9000"}
|
||||
printStartupMessage(apiEndpoints)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user