Handle insecure and ports in go get (#7041)
* Handle insecure and ports in go get * Fix IsExternalURL for non-standard ports
This commit is contained in:
		
							parent
							
								
									9ca7fcddbb
								
							
						
					
					
						commit
						69d81b6569
					
				
					 4 changed files with 16 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue