|
@@ -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)
|