Contains the Concourse pipeline definition for building a line-server container
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package main
import ( "net/http" "os" "path" "strings"
"github.com/zenazn/goji/web" )
func fileServeHandler(c web.C, w http.ResponseWriter, r *http.Request) { fileName := c.URLParams["name"] filePath := path.Join(Config.filesDir, fileName)
if !fileExistsAndNotExpired(fileName) { notFoundHandler(c, w, r) return }
if !Config.allowHotlink { referer := r.Header.Get("Referer") if referer != "" && !strings.HasPrefix(referer, Config.siteURL) { w.WriteHeader(403) return } }
http.ServeFile(w, r, filePath) }
func fileExistsAndNotExpired(filename string) bool { filePath := path.Join(Config.filesDir, filename)
_, err := os.Stat(filePath) if err != nil { return false }
if isFileExpired(filename) { os.Remove(path.Join(Config.filesDir, filename)) os.Remove(path.Join(Config.metaDir, filename)) return false }
return true }
|