mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-11 20:44:55 +00:00
265cd70bdb
Backport #28587, the only conflict is the test file.
The CORS code has been unmaintained for long time, and the behavior is
not correct.
This PR tries to improve it. The key point is written as comment in
code. And add more tests.
Fix #28515
Fix #27642
Fix #17098
(cherry picked from commit 7a2786ca6c
)
50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package misc
|
|
|
|
import (
|
|
"net/http"
|
|
"path"
|
|
|
|
"code.gitea.io/gitea/modules/git"
|
|
"code.gitea.io/gitea/modules/httpcache"
|
|
"code.gitea.io/gitea/modules/log"
|
|
"code.gitea.io/gitea/modules/setting"
|
|
"code.gitea.io/gitea/modules/util"
|
|
)
|
|
|
|
func SSHInfo(rw http.ResponseWriter, req *http.Request) {
|
|
if !git.SupportProcReceive {
|
|
rw.WriteHeader(http.StatusNotFound)
|
|
return
|
|
}
|
|
rw.Header().Set("content-type", "text/json;charset=UTF-8")
|
|
_, err := rw.Write([]byte(`{"type":"gitea","version":1}`))
|
|
if err != nil {
|
|
log.Error("fail to write result: err: %v", err)
|
|
rw.WriteHeader(http.StatusInternalServerError)
|
|
return
|
|
}
|
|
rw.WriteHeader(http.StatusOK)
|
|
}
|
|
|
|
func DummyOK(w http.ResponseWriter, req *http.Request) {
|
|
w.WriteHeader(http.StatusOK)
|
|
}
|
|
|
|
func RobotsTxt(w http.ResponseWriter, req *http.Request) {
|
|
robotsTxt := util.FilePathJoinAbs(setting.CustomPath, "public/robots.txt")
|
|
if ok, _ := util.IsExist(robotsTxt); !ok {
|
|
robotsTxt = util.FilePathJoinAbs(setting.CustomPath, "robots.txt") // the legacy "robots.txt"
|
|
}
|
|
httpcache.SetCacheControlInHeader(w.Header(), setting.StaticCacheTime)
|
|
http.ServeFile(w, req, robotsTxt)
|
|
}
|
|
|
|
func StaticRedirect(target string) func(w http.ResponseWriter, req *http.Request) {
|
|
return func(w http.ResponseWriter, req *http.Request) {
|
|
http.Redirect(w, req, path.Join(setting.StaticURLPrefix, target), http.StatusMovedPermanently)
|
|
}
|
|
}
|