From 3f802a28464491b6b9b84579bac4fec53d4586db Mon Sep 17 00:00:00 2001 From: Lauris BH Date: Wed, 30 Jan 2019 23:29:44 +0200 Subject: [PATCH] Fix go-get URL generation (#5905) (#5907) --- models/repo.go | 3 ++- modules/context/context.go | 2 +- modules/context/repo.go | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/models/repo.go b/models/repo.go index e1e111a01..03f4b6bee 100644 --- a/models/repo.go +++ b/models/repo.go @@ -11,6 +11,7 @@ import ( "fmt" "html/template" "io/ioutil" + "net/url" "os" "os/exec" "path" @@ -824,7 +825,7 @@ type CloneLink struct { // ComposeHTTPSCloneURL returns HTTPS clone URL based on given owner and repository name. func ComposeHTTPSCloneURL(owner, repo string) string { - return fmt.Sprintf("%s%s/%s.git", setting.AppURL, owner, repo) + return fmt.Sprintf("%s%s/%s.git", setting.AppURL, url.QueryEscape(owner), url.QueryEscape(repo)) } func (repo *Repository) cloneLink(e Engine, isWiki bool) *CloneLink { diff --git a/modules/context/context.go b/modules/context/context.go index b9736e56e..421d1d5f4 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -209,7 +209,7 @@ func Contexter() macaron.Handler { if err == nil && len(repo.DefaultBranch) > 0 { branchName = repo.DefaultBranch } - prefix := setting.AppURL + path.Join(ownerName, repoName, "src", "branch", branchName) + prefix := setting.AppURL + path.Join(url.QueryEscape(ownerName), url.QueryEscape(repoName), "src", "branch", branchName) c.Header().Set("Content-Type", "text/html") c.WriteHeader(http.StatusOK) c.Write([]byte(com.Expand(` diff --git a/modules/context/repo.go b/modules/context/repo.go index 55d607a28..ad910caf1 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -8,6 +8,7 @@ package context import ( "fmt" "io/ioutil" + "net/url" "path" "strings" @@ -162,7 +163,7 @@ func RetrieveBaseRepo(ctx *Context, repo *models.Repository) { // ComposeGoGetImport returns go-get-import meta content. func ComposeGoGetImport(owner, repo string) string { - return path.Join(setting.Domain, setting.AppSubURL, owner, repo) + return path.Join(setting.Domain, setting.AppSubURL, url.QueryEscape(owner), url.QueryEscape(repo)) } // EarlyResponseForGoGetMeta responses appropriate go-get meta with status 200