2023-11-02 17:14:33 +03:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package web
import (
"net/http"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/web/repo"
2024-02-27 10:12:22 +03:00
"code.gitea.io/gitea/services/context"
2023-11-02 17:14:33 +03:00
)
func requireSignIn ( ctx * context . Context ) {
if ! setting . Service . RequireSignInView {
return
}
// rely on the results of Contexter
if ! ctx . IsSigned {
// TODO: support digit auth - which would be Authorization header with digit
ctx . Resp . Header ( ) . Set ( "WWW-Authenticate" , ` Basic realm="Gitea" ` )
ctx . Error ( http . StatusUnauthorized )
}
}
func gitHTTPRouters ( m * web . Route ) {
m . Group ( "" , func ( ) {
2023-12-25 15:13:18 +03:00
m . Methods ( "POST,OPTIONS" , "/git-upload-pack" , repo . ServiceUploadPack )
m . Methods ( "POST,OPTIONS" , "/git-receive-pack" , repo . ServiceReceivePack )
m . Methods ( "GET,OPTIONS" , "/info/refs" , repo . GetInfoRefs )
m . Methods ( "GET,OPTIONS" , "/HEAD" , repo . GetTextFile ( "HEAD" ) )
m . Methods ( "GET,OPTIONS" , "/objects/info/alternates" , repo . GetTextFile ( "objects/info/alternates" ) )
m . Methods ( "GET,OPTIONS" , "/objects/info/http-alternates" , repo . GetTextFile ( "objects/info/http-alternates" ) )
m . Methods ( "GET,OPTIONS" , "/objects/info/packs" , repo . GetInfoPacks )
m . Methods ( "GET,OPTIONS" , "/objects/info/{file:[^/]*}" , repo . GetTextFile ( "" ) )
2024-01-19 19:05:02 +03:00
m . Methods ( "GET,OPTIONS" , "/objects/{head:[0-9a-f]{2}}/{hash:[0-9a-f]{38,62}}" , repo . GetLooseObject )
m . Methods ( "GET,OPTIONS" , "/objects/pack/pack-{file:[0-9a-f]{40,64}}.pack" , repo . GetPackFile )
m . Methods ( "GET,OPTIONS" , "/objects/pack/pack-{file:[0-9a-f]{40,64}}.idx" , repo . GetIdxFile )
2024-02-27 10:12:22 +03:00
} , ignSignInAndCsrf , requireSignIn , repo . HTTPGitEnabledHandler , repo . CorsHandler ( ) , context . UserAssignmentWeb ( ) )
2023-11-02 17:14:33 +03:00
}