| // Copyright 2020 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build go1.16 |
| // +build go1.16 |
| |
| package main |
| |
| import ( |
| "net/http" |
| "strings" |
| |
| "golang.org/x/website/internal/env" |
| ) |
| |
| // googleCN reports whether request r is considered |
| // to be served from golang.google.cn. |
| // TODO: This is duplicated within internal/proxy. Move to a common location. |
| func googleCN(r *http.Request) bool { |
| if r.FormValue("googlecn") != "" { |
| return true |
| } |
| if strings.HasSuffix(r.Host, ".cn") { |
| return true |
| } |
| if !env.CheckCountry() { |
| return false |
| } |
| switch r.Header.Get("X-Appengine-Country") { |
| case "", "ZZ", "CN": |
| return true |
| } |
| return false |
| } |