mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 09:31:53 +01:00 
			
		
		
		
	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...)
 | |
| }
 |