aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/transport/common.go
diff options
context:
space:
mode:
authorJ. Fernando Sánchez <balkian@gmail.com>2017-09-28 17:21:16 +0200
committerJ. Fernando Sánchez <balkian@gmail.com>2017-09-28 17:35:46 +0200
commit04765bb11cbadf22ed01ea12cb6f2834e9ee1ec5 (patch)
treef7166ce541db95311b43f00c075edc3c588b2fe5 /plumbing/transport/common.go
parent7d1595faba108f5c6c9b678288eb5092ba555bd1 (diff)
downloadgo-git-04765bb11cbadf22ed01ea12cb6f2834e9ee1ec5.tar.gz
Adds port to SCP Endpoints
The port for SCP-like URLs was hardcoded to 22. This commit modifies the regex to find a port (optional), and adds a new test case that covers this scenario.
Diffstat (limited to 'plumbing/transport/common.go')
-rw-r--r--plumbing/transport/common.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/plumbing/transport/common.go b/plumbing/transport/common.go
index 2088500..202c498 100644
--- a/plumbing/transport/common.go
+++ b/plumbing/transport/common.go
@@ -187,6 +187,7 @@ func (e urlEndpoint) Path() string {
type scpEndpoint struct {
user string
host string
+ port string
path string
}
@@ -194,8 +195,14 @@ func (e *scpEndpoint) Protocol() string { return "ssh" }
func (e *scpEndpoint) User() string { return e.user }
func (e *scpEndpoint) Password() string { return "" }
func (e *scpEndpoint) Host() string { return e.host }
-func (e *scpEndpoint) Port() int { return 22 }
func (e *scpEndpoint) Path() string { return e.path }
+func (e *scpEndpoint) Port() int {
+ i, err := strconv.Atoi(e.port)
+ if err != nil {
+ return 22
+ }
+ return i
+}
func (e *scpEndpoint) String() string {
var user string
@@ -220,7 +227,7 @@ func (e *fileEndpoint) String() string { return e.path }
var (
isSchemeRegExp = regexp.MustCompile(`^[^:]+://`)
- scpLikeUrlRegExp = regexp.MustCompile(`^(?:(?P<user>[^@]+)@)?(?P<host>[^:\s]+):(?P<path>[^\\].*)$`)
+ scpLikeUrlRegExp = regexp.MustCompile(`^(?:(?P<user>[^@]+)@)?(?P<host>[^:\s]+):(?:(?P<port>[0-9]+):)?(?P<path>[^\\].*)$`)
)
func parseSCPLike(endpoint string) (Endpoint, bool) {
@@ -232,7 +239,8 @@ func parseSCPLike(endpoint string) (Endpoint, bool) {
return &scpEndpoint{
user: m[1],
host: m[2],
- path: m[3],
+ port: m[3],
+ path: m[4],
}, true
}