diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-09-06 21:44:59 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-06 21:44:59 +0800 |
commit | 88e1c29df192df411c3d1721d32e311daaab4f09 (patch) | |
tree | 56462b86a0fc01f839f2abd4656a324cfe790158 | |
parent | c03d75fbd51174d0e7ffdbaf9e9e253438d06cf7 (diff) | |
download | gitea-88e1c29df192df411c3d1721d32e311daaab4f09.tar.gz gitea-88e1c29df192df411c3d1721d32e311daaab4f09.zip |
Fix Go 1.13 private repository go get issue (#8112)
* Fix Go 1.13 invalid import path creation
Signed-off-by: Rutger Broekhoff <rutger@viasalix.nl>
* Apply suggested changes from #8100
Signed-off-by: Rutger Broekhoff <rutger@viasalix.nl>
-rw-r--r-- | modules/context/context.go | 15 | ||||
-rw-r--r-- | modules/context/repo.go | 8 |
2 files changed, 20 insertions, 3 deletions
diff --git a/modules/context/context.go b/modules/context/context.go index e89b2e25c4..ef6c19ed12 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -250,6 +250,19 @@ func Contexter() macaron.Handler { if ctx.Query("go-get") == "1" { ownerName := c.Params(":username") repoName := c.Params(":reponame") + trimmedRepoName := strings.TrimSuffix(repoName, ".git") + + if ownerName == "" || trimmedRepoName == "" { + _, _ = c.Write([]byte(`<!doctype html> +<html> + <body> + invalid import path + </body> +</html> +`)) + c.WriteHeader(400) + return + } branchName := "master" repo, err := models.GetRepositoryByOwnerAndName(ownerName, repoName) @@ -277,7 +290,7 @@ func Contexter() macaron.Handler { </body> </html> `, map[string]string{ - "GoGetImport": ComposeGoGetImport(ownerName, strings.TrimSuffix(repoName, ".git")), + "GoGetImport": ComposeGoGetImport(ownerName, trimmedRepoName), "CloneLink": models.ComposeHTTPSCloneURL(ownerName, repoName), "GoDocDirectory": prefix + "{/dir}", "GoDocFile": prefix + "{/dir}/{file}#L{line}", diff --git a/modules/context/repo.go b/modules/context/repo.go index 1499145f74..3ef726f2e8 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -201,10 +201,14 @@ func ComposeGoGetImport(owner, repo string) string { // .netrc file. func EarlyResponseForGoGetMeta(ctx *Context) { username := ctx.Params(":username") - reponame := ctx.Params(":reponame") + reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git") + if username == "" || reponame == "" { + ctx.PlainText(400, []byte("invalid repository path")) + return + } ctx.PlainText(200, []byte(com.Expand(`<meta name="go-import" content="{GoGetImport} git {CloneLink}">`, map[string]string{ - "GoGetImport": ComposeGoGetImport(username, strings.TrimSuffix(reponame, ".git")), + "GoGetImport": ComposeGoGetImport(username, reponame), "CloneLink": models.ComposeHTTPSCloneURL(username, reponame), }))) } |