|  | @@ -6,6 +6,7 @@ package repo
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import (
 | 
	
		
			
				|  |  |  	"fmt"
 | 
	
		
			
				|  |  | +	"net/url"
 | 
	
		
			
				|  |  |  	"os"
 | 
	
		
			
				|  |  |  	"path"
 | 
	
		
			
				|  |  |  	"strings"
 | 
	
	
		
			
				|  | @@ -180,11 +181,20 @@ func MigratePost(ctx *middleware.Context, form auth.MigrateRepoForm) {
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	authStr := strings.Replace(fmt.Sprintf("://%s:%s",
 | 
	
		
			
				|  |  | -		form.AuthUserName, form.AuthPasswd), "@", "%40", -1)
 | 
	
		
			
				|  |  | -	url := strings.Replace(form.HttpsUrl, "://", authStr+"@", 1)
 | 
	
		
			
				|  |  | +	u, err := url.Parse(form.HttpsUrl)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if err != nil || u.Scheme != "https" {
 | 
	
		
			
				|  |  | +		ctx.Data["Err_HttpsUrl"] = true
 | 
	
		
			
				|  |  | +		ctx.RenderWithErr(ctx.Tr("form.url_error"), MIGRATE, &form)
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if len(form.AuthUserName) > 0 || len(form.AuthPasswd) > 0 {
 | 
	
		
			
				|  |  | +		u.User = url.UserPassword(form.AuthUserName, form.AuthPasswd)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	repo, err := models.MigrateRepository(ctxUser, form.RepoName, form.Description, form.Private,
 | 
	
		
			
				|  |  | -		form.Mirror, url)
 | 
	
		
			
				|  |  | +		form.Mirror, u.String())
 | 
	
		
			
				|  |  |  	if err == nil {
 | 
	
		
			
				|  |  |  		log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName)
 | 
	
		
			
				|  |  |  		ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + form.RepoName)
 |