| 
									
										
										
										
											2016-07-13 14:21:18 +08:00
										 |  |  | /* | 
					
						
							|  |  |  |  * Minio Cloud Storage, (C) 2016 Minio, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  |  * you may not use this file except in compliance with the License. | 
					
						
							|  |  |  |  * You may obtain a copy of the License at | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *     http://www.apache.org/licenses/LICENSE-2.0
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  |  * distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  |  * See the License for the specific language governing permissions and | 
					
						
							|  |  |  |  * limitations under the License. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-19 07:23:42 +08:00
										 |  |  | package cmd | 
					
						
							| 
									
										
										
										
											2016-07-13 14:21:18 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"runtime" | 
					
						
							|  |  |  | 	"strings" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/minio/mc/pkg/console" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Documentation links, these are part of message printing code.
 | 
					
						
							|  |  |  | const ( | 
					
						
							| 
									
										
										
										
											2016-07-27 06:54:11 +08:00
										 |  |  | 	mcQuickStartGuide   = "https://docs.minio.io/docs/minio-client-quickstart-guide" | 
					
						
							| 
									
										
										
										
											2016-07-13 14:21:18 +08:00
										 |  |  | 	goQuickStartGuide   = "https://docs.minio.io/docs/golang-client-quickstart-guide" | 
					
						
							|  |  |  | 	jsQuickStartGuide   = "https://docs.minio.io/docs/javascript-client-quickstart-guide" | 
					
						
							|  |  |  | 	javaQuickStartGuide = "https://docs.minio.io/docs/java-client-quickstart-guide" | 
					
						
							|  |  |  | 	pyQuickStartGuide   = "https://docs.minio.io/docs/python-client-quickstart-guide" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // generates format string depending on the string length and padding.
 | 
					
						
							|  |  |  | func getFormatStr(strLen int, padding int) string { | 
					
						
							|  |  |  | 	formatStr := fmt.Sprintf("%ds", strLen+padding) | 
					
						
							|  |  |  | 	return "%" + formatStr | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Prints the formatted startup message.
 | 
					
						
							|  |  |  | func printStartupMessage(endPoints []string) { | 
					
						
							|  |  |  | 	printServerCommonMsg(endPoints) | 
					
						
							|  |  |  | 	printCLIAccessMsg(endPoints[0]) | 
					
						
							|  |  |  | 	printObjectAPIMsg() | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Prints common server startup message. Prints credential, region and browser access.
 | 
					
						
							|  |  |  | func printServerCommonMsg(endPoints []string) { | 
					
						
							|  |  |  | 	// Get saved credentials.
 | 
					
						
							|  |  |  | 	cred := serverConfig.GetCredential() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Get saved region.
 | 
					
						
							|  |  |  | 	region := serverConfig.GetRegion() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	endPointStr := strings.Join(endPoints, "  ") | 
					
						
							|  |  |  | 	// Colorize the message and print.
 | 
					
						
							| 
									
										
										
										
											2016-07-14 05:27:36 +08:00
										 |  |  | 	console.Println(colorBlue("\nEndpoint: ") + colorBold(fmt.Sprintf(getFormatStr(len(endPointStr), 1), endPointStr))) | 
					
						
							|  |  |  | 	console.Println(colorBlue("AccessKey: ") + colorBold(fmt.Sprintf("%s ", cred.AccessKeyID))) | 
					
						
							|  |  |  | 	console.Println(colorBlue("SecretKey: ") + colorBold(fmt.Sprintf("%s ", cred.SecretAccessKey))) | 
					
						
							|  |  |  | 	console.Println(colorBlue("Region: ") + colorBold(fmt.Sprintf(getFormatStr(len(region), 3), region))) | 
					
						
							| 
									
										
										
										
											2016-09-14 16:11:03 +08:00
										 |  |  | 	printEventNotifiers() | 
					
						
							| 
									
										
										
										
											2016-09-14 02:00:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	console.Println(colorBlue("\nBrowser Access:")) | 
					
						
							|  |  |  | 	console.Println(fmt.Sprintf(getFormatStr(len(endPointStr), 3), endPointStr)) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Prints bucket notification configurations.
 | 
					
						
							|  |  |  | func printEventNotifiers() { | 
					
						
							|  |  |  | 	if globalEventNotifier == nil { | 
					
						
							|  |  |  | 		// In case initEventNotifier() was not done or failed.
 | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-09-14 16:11:03 +08:00
										 |  |  | 	arnMsg := colorBlue("SQS ARNs: ") | 
					
						
							| 
									
										
										
										
											2016-09-14 02:00:40 +08:00
										 |  |  | 	if len(globalEventNotifier.queueTargets) == 0 { | 
					
						
							| 
									
										
										
										
											2016-09-14 16:11:03 +08:00
										 |  |  | 		arnMsg += colorBold(fmt.Sprintf(getFormatStr(len("<none>"), 1), "<none>")) | 
					
						
							| 
									
										
										
										
											2016-09-14 02:00:40 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-09-10 17:23:28 +08:00
										 |  |  | 	for queueArn := range globalEventNotifier.queueTargets { | 
					
						
							| 
									
										
										
										
											2016-09-14 16:11:03 +08:00
										 |  |  | 		arnMsg += colorBold(fmt.Sprintf(getFormatStr(len(queueArn), 1), queueArn)) | 
					
						
							| 
									
										
										
										
											2016-09-10 17:23:28 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	console.Println(arnMsg) | 
					
						
							| 
									
										
										
										
											2016-07-13 14:21:18 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Prints startup message for command line access. Prints link to our documentation
 | 
					
						
							|  |  |  | // and custom platform specific message.
 | 
					
						
							|  |  |  | func printCLIAccessMsg(endPoint string) { | 
					
						
							|  |  |  | 	// Get saved credentials.
 | 
					
						
							|  |  |  | 	cred := serverConfig.GetCredential() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Configure 'mc', following block prints platform specific information for minio client.
 | 
					
						
							| 
									
										
										
										
											2016-07-14 05:27:36 +08:00
										 |  |  | 	console.Println(colorBlue("\nCommand-line Access: ") + mcQuickStartGuide) | 
					
						
							| 
									
										
										
										
											2016-07-13 14:21:18 +08:00
										 |  |  | 	if runtime.GOOS == "windows" { | 
					
						
							|  |  |  | 		mcMessage := fmt.Sprintf("$ mc.exe config host add myminio %s %s %s", endPoint, cred.AccessKeyID, cred.SecretAccessKey) | 
					
						
							| 
									
										
										
										
											2016-07-14 05:27:36 +08:00
										 |  |  | 		console.Println(fmt.Sprintf(getFormatStr(len(mcMessage), 3), mcMessage)) | 
					
						
							| 
									
										
										
										
											2016-07-13 14:21:18 +08:00
										 |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2016-07-13 15:56:00 +08:00
										 |  |  | 		mcMessage := fmt.Sprintf("$ mc config host add myminio %s %s %s", endPoint, cred.AccessKeyID, cred.SecretAccessKey) | 
					
						
							| 
									
										
										
										
											2016-07-14 05:27:36 +08:00
										 |  |  | 		console.Println(fmt.Sprintf(getFormatStr(len(mcMessage), 3), mcMessage)) | 
					
						
							| 
									
										
										
										
											2016-07-13 14:21:18 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Prints startup message for Object API acces, prints link to our SDK documentation.
 | 
					
						
							|  |  |  | func printObjectAPIMsg() { | 
					
						
							| 
									
										
										
										
											2016-07-13 15:56:00 +08:00
										 |  |  | 	console.Println(colorBlue("\nObject API (Amazon S3 compatible):")) | 
					
						
							| 
									
										
										
										
											2016-07-14 05:27:36 +08:00
										 |  |  | 	console.Println(colorBlue("   Go: ") + fmt.Sprintf(getFormatStr(len(goQuickStartGuide), 8), goQuickStartGuide)) | 
					
						
							|  |  |  | 	console.Println(colorBlue("   Java: ") + fmt.Sprintf(getFormatStr(len(javaQuickStartGuide), 6), javaQuickStartGuide)) | 
					
						
							|  |  |  | 	console.Println(colorBlue("   Python: ") + fmt.Sprintf(getFormatStr(len(pyQuickStartGuide), 4), pyQuickStartGuide)) | 
					
						
							|  |  |  | 	console.Println(colorBlue("   JavaScript: ") + jsQuickStartGuide) | 
					
						
							| 
									
										
										
										
											2016-07-13 14:21:18 +08:00
										 |  |  | } |