diff --git a/agent/utils/cloud_storage/client/sftp.go b/agent/utils/cloud_storage/client/sftp.go index b1e9d179fe1c..edc899bf5cef 100644 --- a/agent/utils/cloud_storage/client/sftp.go +++ b/agent/utils/cloud_storage/client/sftp.go @@ -1,7 +1,6 @@ package client import ( - "fmt" "io" "net" "os" @@ -53,11 +52,12 @@ func NewSftpClient(vars map[string]interface{}) (*sftpClient, error) { return nil }, } - if _, err := ssh.Dial("tcp", fmt.Sprintf("%s:%s", address, port), clientConfig); err != nil { + addr := net.JoinHostPort(address, port) + if _, err := ssh.Dial("tcp", addr, clientConfig); err != nil { return nil, err } - return &sftpClient{connInfo: fmt.Sprintf("%s:%s", address, port), config: clientConfig}, nil + return &sftpClient{connInfo: addr, config: clientConfig}, nil } func (s sftpClient) Upload(src, target string) (bool, error) { diff --git a/agent/utils/cloud_storage/client/webdav.go b/agent/utils/cloud_storage/client/webdav.go index a7f581654ef3..f82d467fc26d 100644 --- a/agent/utils/cloud_storage/client/webdav.go +++ b/agent/utils/cloud_storage/client/webdav.go @@ -2,8 +2,8 @@ package client import ( "crypto/tls" - "fmt" "io" + "net" "net/http" "os" "path" @@ -25,7 +25,7 @@ func NewWebDAVClient(vars map[string]interface{}) (*webDAVClient, error) { username := loadParamFromVars("username", vars) bucket := loadParamFromVars("bucket", vars) - url := fmt.Sprintf("%s:%s", address, port) + url := net.JoinHostPort(address, port) if len(port) == 0 { url = address } diff --git a/agent/utils/ssh/ssh.go b/agent/utils/ssh/ssh.go index d64264e7e984..d00f700e4896 100644 --- a/agent/utils/ssh/ssh.go +++ b/agent/utils/ssh/ssh.go @@ -2,6 +2,7 @@ package ssh import ( "fmt" + "net" "strings" "time" @@ -24,12 +25,10 @@ type SSHClient struct { } func NewClient(c ConnInfo) (*SSHClient, error) { - if strings.Contains(c.Addr, ":") { - c.Addr = fmt.Sprintf("[%s]", c.Addr) - } config := &gossh.ClientConfig{} config.SetDefaults() - addr := fmt.Sprintf("%s:%d", c.Addr, c.Port) + + addr := net.JoinHostPort(c.Addr, fmt.Sprintf("%d", c.Port)) config.User = c.User if c.AuthMode == "password" { config.Auth = []gossh.AuthMethod{gossh.Password(c.Password)} diff --git a/core/utils/cloud_storage/client/sftp.go b/core/utils/cloud_storage/client/sftp.go index 617b609ea549..32ff9669229e 100644 --- a/core/utils/cloud_storage/client/sftp.go +++ b/core/utils/cloud_storage/client/sftp.go @@ -1,7 +1,6 @@ package client import ( - "fmt" "io" "net" "os" @@ -56,11 +55,12 @@ func NewSftpClient(vars map[string]interface{}) (*sftpClient, error) { return nil }, } - if _, err := ssh.Dial("tcp", fmt.Sprintf("%s:%s", address, port), clientConfig); err != nil { + addr := net.JoinHostPort(address, port) + if _, err := ssh.Dial("tcp", addr, clientConfig); err != nil { return nil, err } - return &sftpClient{connInfo: fmt.Sprintf("%s:%s", address, port), config: clientConfig, bucket: bucket}, nil + return &sftpClient{connInfo: addr, config: clientConfig, bucket: bucket}, nil } func (s sftpClient) Upload(src, target string) (bool, error) { diff --git a/core/utils/cloud_storage/client/webdav.go b/core/utils/cloud_storage/client/webdav.go index 38d236b1066b..89d4c36f2178 100644 --- a/core/utils/cloud_storage/client/webdav.go +++ b/core/utils/cloud_storage/client/webdav.go @@ -2,7 +2,7 @@ package client import ( "crypto/tls" - "fmt" + "net" "net/http" "os" "path" @@ -25,7 +25,7 @@ func NewWebDAVClient(vars map[string]interface{}) (*webDAVClient, error) { username := loadParamFromVars("username", vars) bucket := loadParamFromVars("bucket", vars) - url := fmt.Sprintf("%s:%s", address, port) + url := net.JoinHostPort(address, port) if len(port) == 0 { url = address } diff --git a/core/utils/ssh/ssh.go b/core/utils/ssh/ssh.go index 107f128a3866..c50b11db464a 100644 --- a/core/utils/ssh/ssh.go +++ b/core/utils/ssh/ssh.go @@ -29,12 +29,9 @@ type SSHClient struct { } func NewClient(c ConnInfo) (*SSHClient, error) { - if strings.Contains(c.Addr, ":") { - c.Addr = fmt.Sprintf("[%s]", c.Addr) - } config := &gossh.ClientConfig{} config.SetDefaults() - addr := fmt.Sprintf("%s:%d", c.Addr, c.Port) + addr := net.JoinHostPort(c.Addr, fmt.Sprintf("%d", c.Port)) config.User = c.User if c.AuthMode == "password" { config.Auth = []gossh.AuthMethod{gossh.Password(c.Password)}