* Handle insecure and ports in go get * Fix IsExternalURL for non-standard portstags/v1.9.0-rc1
@@ -257,6 +257,13 @@ func Contexter() macaron.Handler { | |||
branchName = repo.DefaultBranch | |||
} | |||
prefix := setting.AppURL + path.Join(url.PathEscape(ownerName), url.PathEscape(repoName), "src", "branch", util.PathEscapeSegments(branchName)) | |||
appURL, _ := url.Parse(setting.AppURL) | |||
insecure := "" | |||
if appURL.Scheme == string(setting.HTTP) { | |||
insecure = "--insecure " | |||
} | |||
c.Header().Set("Content-Type", "text/html") | |||
c.WriteHeader(http.StatusOK) | |||
c.Write([]byte(com.Expand(`<!doctype html> | |||
@@ -266,7 +273,7 @@ func Contexter() macaron.Handler { | |||
<meta name="go-source" content="{GoGetImport} _ {GoDocDirectory} {GoDocFile}"> | |||
</head> | |||
<body> | |||
go get {GoGetImport} | |||
go get {Insecure}{GoGetImport} | |||
</body> | |||
</html> | |||
`, map[string]string{ | |||
@@ -274,6 +281,7 @@ func Contexter() macaron.Handler { | |||
"CloneLink": models.ComposeHTTPSCloneURL(ownerName, repoName), | |||
"GoDocDirectory": prefix + "{/dir}", | |||
"GoDocFile": prefix + "{/dir}/{file}#L{line}", | |||
"Insecure": insecure, | |||
}))) | |||
return | |||
} |
@@ -188,7 +188,10 @@ 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, url.PathEscape(owner), url.PathEscape(repo)) | |||
/// setting.AppUrl is guaranteed to be parse as url | |||
appURL, _ := url.Parse(setting.AppURL) | |||
return path.Join(appURL.Host, setting.AppSubURL, url.PathEscape(owner), url.PathEscape(repo)) | |||
} | |||
// EarlyResponseForGoGetMeta responses appropriate go-get meta with status 200 |
@@ -52,7 +52,8 @@ func IsExternalURL(rawURL string) bool { | |||
if err != nil { | |||
return true | |||
} | |||
if len(parsed.Host) != 0 && strings.Replace(parsed.Host, "www.", "", 1) != strings.Replace(setting.Domain, "www.", "", 1) { | |||
appURL, _ := url.Parse(setting.AppURL) | |||
if len(parsed.Host) != 0 && strings.Replace(parsed.Host, "www.", "", 1) != strings.Replace(appURL.Host, "www.", "", 1) { | |||
return true | |||
} | |||
return false |
@@ -46,7 +46,7 @@ func TestURLJoin(t *testing.T) { | |||
} | |||
func TestIsExternalURL(t *testing.T) { | |||
setting.Domain = "try.gitea.io" | |||
setting.AppURL = "https://try.gitea.io" | |||
type test struct { | |||
Expected bool | |||
RawURL string |