mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 14:31:02 +00:00 
			
		
		
		
	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
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			49 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)
 | |
| 	}
 | |
| }
 |