From dc1485dd7883f1512cfb4e0e1f2b80602d3b76b6 Mon Sep 17 00:00:00 2001 From: "chaturvedi.kna@ril.com" Date: Mon, 17 Jun 2024 09:24:03 -0400 Subject: [PATCH 1/2] Fix: Properly handle IPv6 addresses in connection strings --- main/main.go | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/main/main.go b/main/main.go index e0031ef..753fea4 100644 --- a/main/main.go +++ b/main/main.go @@ -177,6 +177,38 @@ func GetAgentConfigMetadata() map[string][]config.Parameter { return elements } +func processConnectionString(connection string) string { + // Check if the connection string contains an "@" character, indicating credentials + if strings.Contains(connection, "@") { + // Split the connection string into protocol part and host:port part + parts := strings.SplitN(connection, "@", 2) + if len(parts) == 2 { + protocol := parts[0] + "@" + hostPort := parts[1] + + // Split the host:port into host and port + hostPortParts := strings.SplitN(hostPort, ":", 2) + if len(hostPortParts) == 2 { + host := hostPortParts[0] + port := hostPortParts[1] + + // Further processing of host and port, including handling IPv6 brackets if necessary + if strings.Contains(host, ":") { + if !strings.HasPrefix(host, "[") && !strings.HasSuffix(host, "]") { + host = "[" + host + "]" + } + } + + // Reconstruct the connection string with corrected formatting + return protocol + host + ":" + port + } + } + } + + // Return the original connection string if no modifications were made + return connection +} + func main() { debug := flag.Bool("debug", false, "enables debugging logs") verbose := flag.Bool("verbose", false, "enables informational logs") @@ -257,7 +289,10 @@ func main() { sensuConnector := &connector.SensuConnector{} if sect, ok := cfg.Sections["sensu"]; ok { if opt, ok := sect.Options["connection"]; ok { - if len(opt.GetString()) > 0 { + if len(opt.GetString()) > 0 {i + connection := opt.GetString() + connection = processConnectionString(connection) + sect.Options["connection"] = config.NewConfigOption(connection sensuConnector, err = connector.ConnectSensu(cfg, log) if err != nil { log.Metadata(map[string]interface{}{"error": err, "connection": opt.GetString()}) @@ -278,6 +313,9 @@ func main() { if sect, ok := cfg.Sections["amqp1"]; ok { if opt, ok := sect.Options["connection"]; ok { if len(opt.GetString()) > 0 { + connection := opt.GetString() + connection = processConnectionString(connection) + sect.Options["connection"] = config.NewConfigOption(connection) amqpConnector, err = amqp10.ConnectAMQP10("sensubility", cfg, log) if err != nil { log.Metadata(map[string]interface{}{"error": err, "connection": opt.GetString()}) From ca43bc46851aa23103291ec90d0cdaa84f3c7d1b Mon Sep 17 00:00:00 2001 From: "chaturvedi.kna@ril.com" Date: Mon, 17 Jun 2024 09:37:31 -0400 Subject: [PATCH 2/2] Fix: Properly handle IPv6 addresses in connection strings --- main/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/main.go b/main/main.go index 753fea4..9ca38c8 100644 --- a/main/main.go +++ b/main/main.go @@ -289,7 +289,7 @@ func main() { sensuConnector := &connector.SensuConnector{} if sect, ok := cfg.Sections["sensu"]; ok { if opt, ok := sect.Options["connection"]; ok { - if len(opt.GetString()) > 0 {i + if len(opt.GetString()) > 0 { connection := opt.GetString() connection = processConnectionString(connection) sect.Options["connection"] = config.NewConfigOption(connection