aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2017-02-20 18:05:34 -0500
committerUnknwon <u@gogs.io>2017-02-20 18:05:34 -0500
commit6002d7260329e4fa22c1069434d58dcc258b15c8 (patch)
treed48cbb7cfde86d41c731a279e02c195a90ae7a21
parent934734a85a1e4cb68d8c1aa68c518b511c7be190 (diff)
router: fix 404 when repository name contains dot
E.g. atomi.github.io
-rw-r--r--cmd/web.go11
-rw-r--r--gogs.go2
-rw-r--r--modules/context/repo.go12
-rw-r--r--templates/.VERSION2
4 files changed, 15 insertions, 12 deletions
diff --git a/cmd/web.go b/cmd/web.go
index 92fbe2a7..7f00e239 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -632,14 +632,17 @@ func runWeb(ctx *cli.Context) error {
}, ignSignIn, context.RepoAssignment(), context.RepoRef())
m.Group("/:username", func() {
- m.Group("/:reponame", func() {
- m.Get("", repo.Home)
- m.Get("\\.git$", repo.Home)
+ m.Group("", func() {
+ m.Get("/:reponame", repo.Home)
}, ignSignIn, context.RepoAssignment(true), context.RepoRef())
m.Group("/:reponame", func() {
m.Head("/tasks/trigger", repo.TriggerTask)
- m.Route("\\.git/*", "GET,POST", ignSignInAndCsrf, repo.HTTPContexter(), repo.HTTP)
+ })
+ // Use the regexp to match the repository name validation
+ m.Group("/:reponame([\\d\\w-_\\.]+\\.git$)", func() {
+ m.Get("", ignSignIn, context.RepoAssignment(true), context.RepoRef(), repo.Home)
+ m.Route("/*", "GET,POST", ignSignInAndCsrf, repo.HTTPContexter(), repo.HTTP)
})
})
// ***** END: Repository *****
diff --git a/gogs.go b/gogs.go
index 76a4a107..412c899e 100644
--- a/gogs.go
+++ b/gogs.go
@@ -16,7 +16,7 @@ import (
"github.com/gogits/gogs/modules/setting"
)
-const APP_VER = "0.9.161.0220"
+const APP_VER = "0.9.162.0220"
func init() {
setting.AppVer = APP_VER
diff --git a/modules/context/repo.go b/modules/context/repo.go
index 97fd3e36..710cbbf6 100644
--- a/modules/context/repo.go
+++ b/modules/context/repo.go
@@ -146,18 +146,18 @@ func RepoAssignment(args ...bool) macaron.Handler {
err error
)
- userName := ctx.Params(":username")
- repoName := ctx.Params(":reponame")
+ ownerName := ctx.Params(":username")
+ repoName := strings.TrimSuffix(ctx.Params(":reponame"), ".git")
refName := ctx.Params(":branchname")
if len(refName) == 0 {
refName = ctx.Params(":path")
}
// Check if the user is the same as the repository owner
- if ctx.IsSigned && ctx.User.LowerName == strings.ToLower(userName) {
+ if ctx.IsSigned && ctx.User.LowerName == strings.ToLower(ownerName) {
owner = ctx.User
} else {
- owner, err = models.GetUserByName(userName)
+ owner, err = models.GetUserByName(ownerName)
if err != nil {
if models.IsErrUserNotExist(err) {
if ctx.Query("go-get") == "1" {
@@ -230,9 +230,9 @@ func RepoAssignment(args ...bool) macaron.Handler {
ctx.Data["RepoName"] = ctx.Repo.Repository.Name
ctx.Data["IsBareRepo"] = ctx.Repo.Repository.IsBare
- gitRepo, err := git.OpenRepository(models.RepoPath(userName, repoName))
+ gitRepo, err := git.OpenRepository(models.RepoPath(ownerName, repoName))
if err != nil {
- ctx.Handle(500, "RepoAssignment Invalid repo "+models.RepoPath(userName, repoName), err)
+ ctx.Handle(500, "RepoAssignment Invalid repo "+models.RepoPath(ownerName, repoName), err)
return
}
ctx.Repo.GitRepo = gitRepo
diff --git a/templates/.VERSION b/templates/.VERSION
index 720049a6..9d96dbb8 100644
--- a/templates/.VERSION
+++ b/templates/.VERSION
@@ -1 +1 @@
-0.9.161.0220 \ No newline at end of file
+0.9.162.0220 \ No newline at end of file