log: Startup banner should strip standard ports. (#4443)

APIEndpoints list should strip off standard ports
to avoid confusion with clients.
master
Harshavardhana 8 years ago committed by GitHub
parent 975972d57e
commit 28352f3f5d
  1. 36
      cmd/server-startup-msg.go
  2. 30
      cmd/server-startup-msg_test.go

@ -19,6 +19,7 @@ package cmd
import ( import (
"crypto/x509" "crypto/x509"
"fmt" "fmt"
"net/url"
"runtime" "runtime"
"strings" "strings"
@ -44,12 +45,14 @@ func getFormatStr(strLen int, padding int) string {
// Prints the formatted startup message. // Prints the formatted startup message.
func printStartupMessage(apiEndPoints []string) { func printStartupMessage(apiEndPoints []string) {
strippedAPIEndpoints := stripStandardPorts(apiEndPoints)
// Prints credential, region and browser access. // Prints credential, region and browser access.
printServerCommonMsg(apiEndPoints) printServerCommonMsg(strippedAPIEndpoints)
// Prints `mc` cli configuration message chooses // Prints `mc` cli configuration message chooses
// first endpoint as default. // first endpoint as default.
printCLIAccessMsg(apiEndPoints[0]) printCLIAccessMsg(strippedAPIEndpoints[0])
// Prints documentation message. // Prints documentation message.
printObjectAPIMsg() 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. // Prints common server startup message. Prints credential, region and browser access.
func printServerCommonMsg(apiEndpoints []string) { func printServerCommonMsg(apiEndpoints []string) {
// Get saved credentials. // Get saved credentials.
@ -76,6 +107,7 @@ func printServerCommonMsg(apiEndpoints []string) {
region := serverConfig.GetRegion() region := serverConfig.GetRegion()
apiEndpointStr := strings.Join(apiEndpoints, " ") apiEndpointStr := strings.Join(apiEndpoints, " ")
// Colorize the message and print. // Colorize the message and print.
log.Println(colorBlue("\nEndpoint: ") + colorBold(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 1), apiEndpointStr))) log.Println(colorBlue("\nEndpoint: ") + colorBold(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 1), apiEndpointStr)))
log.Println(colorBlue("AccessKey: ") + colorBold(fmt.Sprintf("%s ", cred.AccessKey))) log.Println(colorBlue("AccessKey: ") + colorBold(fmt.Sprintf("%s ", cred.AccessKey)))

@ -20,6 +20,7 @@ import (
"crypto/x509" "crypto/x509"
"crypto/x509/pkix" "crypto/x509/pkix"
"fmt" "fmt"
"reflect"
"strings" "strings"
"testing" "testing"
"time" "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. // Test printing server common message.
func TestPrintServerCommonMessage(t *testing.T) { func TestPrintServerCommonMessage(t *testing.T) {
root, err := newTestConfig(globalMinioDefaultRegion) root, err := newTestConfig(globalMinioDefaultRegion)
@ -103,7 +127,7 @@ func TestPrintServerCommonMessage(t *testing.T) {
} }
defer removeAll(root) defer removeAll(root)
apiEndpoints := []string{"127.0.0.1:9000"} apiEndpoints := []string{"http://127.0.0.1:9000"}
printServerCommonMsg(apiEndpoints) printServerCommonMsg(apiEndpoints)
} }
@ -115,7 +139,7 @@ func TestPrintCLIAccessMsg(t *testing.T) {
} }
defer removeAll(root) defer removeAll(root)
apiEndpoints := []string{"127.0.0.1:9000"} apiEndpoints := []string{"http://127.0.0.1:9000"}
printCLIAccessMsg(apiEndpoints[0]) printCLIAccessMsg(apiEndpoints[0])
} }
@ -127,6 +151,6 @@ func TestPrintStartupMessage(t *testing.T) {
} }
defer removeAll(root) defer removeAll(root)
apiEndpoints := []string{"127.0.0.1:9000"} apiEndpoints := []string{"http://127.0.0.1:9000"}
printStartupMessage(apiEndpoints) printStartupMessage(apiEndpoints)
} }

Loading…
Cancel
Save