From 0eafd1288bc16aeb7741507142668cfa0ce3e1c4 Mon Sep 17 00:00:00 2001 From: markus812498 Date: Tue, 27 Jan 2026 14:57:21 +1300 Subject: [PATCH 1/3] return URL as part of the instance get --- cmd/instance_get.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/instance_get.go b/cmd/instance_get.go index ed13dac..f55c5cf 100644 --- a/cmd/instance_get.go +++ b/cmd/instance_get.go @@ -44,6 +44,7 @@ var instanceGetCmd = &cobra.Command{ fmt.Printf("Plan = %s\n", instance.Plan) fmt.Printf("Region = %s\n", instance.Region) fmt.Printf("Tags = %s\n", strings.Join(instance.Tags, ",")) + fmt.Printf("URL = %s\n", instance.URL) fmt.Printf("Hostname = %s\n", instance.HostnameExternal) ready := "No" if instance.Ready { From f1de1c818a671d39c33cb45e70e25996f35b6cc4 Mon Sep 17 00:00:00 2001 From: markus812498 Date: Tue, 27 Jan 2026 15:11:10 +1300 Subject: [PATCH 2/3] mask url unless specified as its sensitive --- cmd/instance_get.go | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/cmd/instance_get.go b/cmd/instance_get.go index f55c5cf..7ab2a19 100644 --- a/cmd/instance_get.go +++ b/cmd/instance_get.go @@ -2,6 +2,7 @@ package cmd import ( "fmt" + "net/url" "strconv" "strings" @@ -9,6 +10,33 @@ import ( "github.com/spf13/cobra" ) +func maskPassword(urlStr string) string { + parsedURL, err := url.Parse(urlStr) + if err != nil { + return urlStr // Return original if parsing fails + } + + if parsedURL.User == nil { + return urlStr // No user info to mask + } + + username := parsedURL.User.Username() + + // Manually construct the URL to avoid encoding issues with asterisks + result := parsedURL.Scheme + "://" + username + ":****@" + parsedURL.Host + if parsedURL.Path != "" { + result += parsedURL.Path + } + if parsedURL.RawQuery != "" { + result += "?" + parsedURL.RawQuery + } + if parsedURL.Fragment != "" { + result += "#" + parsedURL.Fragment + } + + return result +} + var instanceGetCmd = &cobra.Command{ Use: "get --id ", Short: "Get details of a specific CloudAMQP instance", @@ -44,7 +72,14 @@ var instanceGetCmd = &cobra.Command{ fmt.Printf("Plan = %s\n", instance.Plan) fmt.Printf("Region = %s\n", instance.Region) fmt.Printf("Tags = %s\n", strings.Join(instance.Tags, ",")) - fmt.Printf("URL = %s\n", instance.URL) + + showURL, _ := cmd.Flags().GetBool("show-url") + if showURL { + fmt.Printf("URL = %s\n", instance.URL) + } else { + fmt.Printf("URL = %s\n", maskPassword(instance.URL)) + } + fmt.Printf("Hostname = %s\n", instance.HostnameExternal) ready := "No" if instance.Ready { @@ -59,5 +94,6 @@ var instanceGetCmd = &cobra.Command{ func init() { instanceGetCmd.Flags().StringP("id", "", "", "Instance ID (required)") instanceGetCmd.MarkFlagRequired("id") + instanceGetCmd.Flags().BoolP("show-url", "", false, "Show full connection URL with credentials") instanceGetCmd.RegisterFlagCompletionFunc("id", completeInstanceIDFlag) } From 3836358cfa24b3412672ce300d8e63a0da59472c Mon Sep 17 00:00:00 2001 From: markus812498 Date: Tue, 27 Jan 2026 15:19:35 +1300 Subject: [PATCH 3/3] without needing to rewrite the url --- cmd/instance_get.go | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/cmd/instance_get.go b/cmd/instance_get.go index 7ab2a19..314d644 100644 --- a/cmd/instance_get.go +++ b/cmd/instance_get.go @@ -13,28 +13,19 @@ import ( func maskPassword(urlStr string) string { parsedURL, err := url.Parse(urlStr) if err != nil { - return urlStr // Return original if parsing fails + return urlStr } if parsedURL.User == nil { - return urlStr // No user info to mask + return urlStr } - username := parsedURL.User.Username() - - // Manually construct the URL to avoid encoding issues with asterisks - result := parsedURL.Scheme + "://" + username + ":****@" + parsedURL.Host - if parsedURL.Path != "" { - result += parsedURL.Path - } - if parsedURL.RawQuery != "" { - result += "?" + parsedURL.RawQuery - } - if parsedURL.Fragment != "" { - result += "#" + parsedURL.Fragment + password, hasPassword := parsedURL.User.Password() + if !hasPassword || password == "" { + return urlStr } - return result + return strings.Replace(urlStr, password, "****", 1) } var instanceGetCmd = &cobra.Command{