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" "net/url" "strings" )
type addheaders struct { h http.Handler headers []string }
func (a addheaders) ServeHTTP(w http.ResponseWriter, r *http.Request) { for _, header := range a.headers { headerSplit := strings.SplitN(header, ": ", 2) w.Header().Add(headerSplit[0], headerSplit[1]) }
a.h.ServeHTTP(w, r) }
func AddHeaders(headers []string) func(http.Handler) http.Handler { fn := func(h http.Handler) http.Handler { return addheaders{h, headers} } return fn }
func getSiteURL(r *http.Request) string { if Config.siteURL != "" { return Config.siteURL } else { u := &url.URL{} u.Host = r.Host
if Config.sitePath != "" { u.Path = Config.sitePath }
if scheme := r.Header.Get("X-Forwarded-Proto"); scheme != "" { u.Scheme = scheme } else if Config.certFile != "" || (r.TLS != nil && r.TLS.HandshakeComplete == true) { u.Scheme = "https" } else { u.Scheme = "http" }
return u.String() } }
|