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.

26 lines
545 B

  1. package main
  2. import (
  3. "net/http"
  4. "strings"
  5. )
  6. func strictReferrerCheck(r *http.Request, prefix string, whitelistHeaders []string) bool {
  7. p := strings.TrimSuffix(prefix, "/")
  8. if origin := r.Header.Get("Origin"); origin != "" {
  9. // if there's an Origin header, check it and ignore the rest
  10. return strings.HasPrefix(origin, p)
  11. }
  12. for _, header := range whitelistHeaders {
  13. if r.Header.Get(header) != "" {
  14. return true
  15. }
  16. }
  17. if referrer := r.Header.Get("Referer"); !strings.HasPrefix(referrer, p) {
  18. return false
  19. }
  20. return true
  21. }