mirror of
https://github.com/go-gitea/gitea.git
synced 2024-12-14 03:56:22 +08:00
580e21dd2e
Gitea instance keeps reporting a lot of errors like "LFS SSH transfer connection denied, pure SSH protocol is disabled". When starting debugging the problem, there are more problems found. Try to address most of them: * avoid unnecessary server side error logs (change `fail()` to not log them) * figure out the broken tests/user2/lfs.git (added comments) * avoid `migratePushMirrors` failure when a repository doesn't exist (ignore them) * avoid "Authorization" (internal&lfs) header conflicts, remove the tricky "swapAuth" and use "X-Gitea-Internal-Auth" * make internal token comparing constant time (it wasn't a serous problem because in a real world it's nearly impossible to timing-attack the token, but good to fix and backport) * avoid duplicate routers (introduce AddOwnerRepoGitLFSRoutes) * avoid "internal (private)" routes using session/web context (they should use private context) * fix incorrect "path" usages (use "filepath") * fix incorrect mocked route point handling (need to check func nil correctly) * split some tests from "git general tests" to "git misc tests" (to keep "git_general_test.go" simple) Still no correct result for Git LFS SSH tests. So the code is kept there (`tests/integration/git_lfs_ssh_test.go`) and a FIXME explains the details.
30 lines
930 B
Go
30 lines
930 B
Go
// Copyright 2024 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package common
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"code.gitea.io/gitea/modules/web"
|
|
"code.gitea.io/gitea/services/lfs"
|
|
)
|
|
|
|
func AddOwnerRepoGitLFSRoutes(m *web.Router, middlewares ...any) {
|
|
// shared by web and internal routers
|
|
m.Group("/{username}/{reponame}/info/lfs", func() {
|
|
m.Post("/objects/batch", lfs.CheckAcceptMediaType, lfs.BatchHandler)
|
|
m.Put("/objects/{oid}/{size}", lfs.UploadHandler)
|
|
m.Get("/objects/{oid}/{filename}", lfs.DownloadHandler)
|
|
m.Get("/objects/{oid}", lfs.DownloadHandler)
|
|
m.Post("/verify", lfs.CheckAcceptMediaType, lfs.VerifyHandler)
|
|
m.Group("/locks", func() {
|
|
m.Get("/", lfs.GetListLockHandler)
|
|
m.Post("/", lfs.PostLockHandler)
|
|
m.Post("/verify", lfs.VerifyLockHandler)
|
|
m.Post("/{lid}/unlock", lfs.UnLockHandler)
|
|
}, lfs.CheckAcceptMediaType)
|
|
m.Any("/*", http.NotFound)
|
|
}, middlewares...)
|
|
}
|