mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-30 16:55:25 +01:00 
			
		
		
		
	Correctly match login by ssh host with port (#391)
fixes #380 note: It seems like it was expected that `SSHHost` only contains the host portion. So this may be breaking (although I don't believe many people used the feature like that with a custom ssh port). I can't think of a good reason to *not* specify the port in that field, including the port seems more intuitive Co-authored-by: Norwin <git@nroo.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/391 Reviewed-by: Andrew Thornton <art27@cantab.net> Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: Norwin <noerw@noreply.gitea.io> Co-committed-by: Norwin <noerw@noreply.gitea.io>
This commit is contained in:
		| @@ -185,8 +185,9 @@ func contextFromLocalRepo(repoPath, remoteValue string) (*git.TeaRepo, *config.L | |||||||
| 		return repo, nil, "", err | 		return repo, nil, "", err | ||||||
| 	} | 	} | ||||||
| 	for _, l := range logins { | 	for _, l := range logins { | ||||||
|  | 		sshHost := l.GetSSHHost() | ||||||
| 		for _, u := range remoteConfig.URLs { | 		for _, u := range remoteConfig.URLs { | ||||||
| 			p, err := git.ParseURL(strings.TrimSpace(u)) | 			p, err := git.ParseURL(u) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				return repo, nil, "", fmt.Errorf("Git remote URL parse failed: %s", err.Error()) | 				return repo, nil, "", fmt.Errorf("Git remote URL parse failed: %s", err.Error()) | ||||||
| 			} | 			} | ||||||
| @@ -197,8 +198,8 @@ func contextFromLocalRepo(repoPath, remoteValue string) (*git.TeaRepo, *config.L | |||||||
| 					return repo, &l, strings.TrimSuffix(path, ".git"), nil | 					return repo, &l, strings.TrimSuffix(path, ".git"), nil | ||||||
| 				} | 				} | ||||||
| 			} else if strings.EqualFold(p.Scheme, "ssh") { | 			} else if strings.EqualFold(p.Scheme, "ssh") { | ||||||
| 				if l.GetSSHHost() == strings.Split(p.Host, ":")[0] { | 				if sshHost == p.Host { | ||||||
| 					return repo, &l, strings.TrimLeft(strings.TrimSuffix(p.Path, ".git"), "/"), nil | 					return repo, &l, strings.TrimLeft(p.Path, "/"), nil | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -20,6 +20,10 @@ type URLParser struct { | |||||||
|  |  | ||||||
| // Parse parses the git URL | // Parse parses the git URL | ||||||
| func (p *URLParser) Parse(rawURL string) (u *url.URL, err error) { | func (p *URLParser) Parse(rawURL string) (u *url.URL, err error) { | ||||||
|  | 	rawURL = strings.TrimSpace(rawURL) | ||||||
|  |  | ||||||
|  | 	// convert the weird git ssh url format to a canonical url: | ||||||
|  | 	// git@gitea.com:gitea/tea -> ssh://git@gitea.com/gitea/tea | ||||||
| 	if !protocolRe.MatchString(rawURL) && | 	if !protocolRe.MatchString(rawURL) && | ||||||
| 		strings.Contains(rawURL, ":") && | 		strings.Contains(rawURL, ":") && | ||||||
| 		// not a Windows path | 		// not a Windows path | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Norwin
					Norwin