]> source.dussan.org Git - gitea.git/commit
Refactor LFS SSH and internal routers (#32473)
authorwxiaoguang <wxiaoguang@gmail.com>
Tue, 12 Nov 2024 02:38:22 +0000 (10:38 +0800)
committerGitHub <noreply@github.com>
Tue, 12 Nov 2024 02:38:22 +0000 (02:38 +0000)
commit580e21dd2e9dfb3a3f86f51c4eb188c1bbfa8b11
treec09fe6839b5c2a8b1d829535a6faee4bb6d53774
parentf35e2b0cd1aaee389e4efda5a54976520b9bd4cb
Refactor LFS SSH and internal routers (#32473)

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.
18 files changed:
cmd/serv.go
models/fixtures/lfs_meta_object.yml
models/migrations/v1_21/v276.go
modules/git/batch_reader.go
modules/lfstransfer/backend/backend.go
modules/lfstransfer/backend/lock.go
modules/lfstransfer/backend/util.go
modules/private/internal.go
modules/web/route.go
routers/common/lfs.go [new file with mode: 0644]
routers/private/internal.go
routers/web/web.go
tests/integration/api_repo_file_get_test.go
tests/integration/git_general_test.go [new file with mode: 0644]
tests/integration/git_lfs_ssh_test.go [new file with mode: 0644]
tests/integration/git_misc_test.go [new file with mode: 0644]
tests/integration/git_test.go [deleted file]
tests/test_utils.go