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…
	
		Reference in a new issue