summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author无闻 <u@gogs.io>2015-01-22 19:31:51 +0800
committer无闻 <u@gogs.io>2015-01-22 19:31:51 +0800
commitedbfbfa66e451aa5fd899c94ff21ac468f6945bb (patch)
treecd0ca2988a8c2428209e7ca385a1f225c9ca5579
parent830bc751070b0fd62ba9b01f864cdb41d9f46078 (diff)
parentd016eaaa09d5bcc1730b5d8c065511dd77e8e8bb (diff)
downloadgitea-edbfbfa66e451aa5fd899c94ff21ac468f6945bb.tar.gz
gitea-edbfbfa66e451aa5fd899c94ff21ac468f6945bb.zip
Merge pull request #822 from phsmit/fix_807
Fix #807 parse the userinfo with the golang tools
-rw-r--r--routers/repo/repo.go18
1 files changed, 14 insertions, 4 deletions
diff --git a/routers/repo/repo.go b/routers/repo/repo.go
index 70b0c05ece..48f7b09bc0 100644
--- a/routers/repo/repo.go
+++ b/routers/repo/repo.go
@@ -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)