share: remove the allowShare guard

We have determined that since x/website prevents /_/share traffic from
being served for golang.google.cn, we no longer need to guard sharing in
x/playground based on X-AppEngine-Country.

Fixes golang/go#65081

Change-Id: Iba078d38bc39fe4c532cb6a78c082559f344b6e2
Reviewed-on: https://go-review.googlesource.com/c/playground/+/556315
Run-TryBot: Robert Findley <rfindley@google.com>
Commit-Queue: Robert Findley <rfindley@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/edit.go b/edit.go
index 9cb49c9..4e00d1e 100644
--- a/edit.go
+++ b/edit.go
@@ -20,7 +20,6 @@
 
 type editData struct {
 	Snippet   *snippet
-	Share     bool
 	Analytics bool
 	GoVersion string
 	Gotip     bool
@@ -48,11 +47,6 @@
 
 	snip := &snippet{Body: []byte(s.examples.hello())}
 	if strings.HasPrefix(r.URL.Path, "/p/") {
-		if !allowShare(r) {
-			w.WriteHeader(http.StatusUnavailableForLegalReasons)
-			w.Write([]byte(`<h1>Unavailable For Legal Reasons</h1><p>Viewing and/or sharing code snippets is not available in your country for legal reasons. This message might also appear if your country is misdetected. If you believe this is an error, please <a href="https://golang.org/issue">file an issue</a>.</p>`))
-			return
-		}
 		id := r.URL.Path[3:]
 		serveText := false
 		if strings.HasSuffix(id, ".go") {
@@ -88,7 +82,6 @@
 	w.Header().Set("Content-Type", "text/html; charset=utf-8")
 	data := &editData{
 		Snippet:   snip,
-		Share:     allowShare(r),
 		GoVersion: runtime.Version(),
 		Gotip:     s.gotip,
 		Examples:  s.examples.examples,
diff --git a/edit.html b/edit.html
index 1045005..422d1f4 100644
--- a/edit.html
+++ b/edit.html
@@ -25,10 +25,8 @@
 				'runEl':        '#run, #embedRun',
 				'fmtEl':        '#fmt',
 				'fmtImportEl':  '#imports',
-				{{if $.Share}}
 				'shareEl':      '#share',
 				'shareURLEl':   '#shareURL',
-				{{end}}
 				'enableHistory': true,
 				'enableShortcuts': true,
 				'enableVet': true,
@@ -36,9 +34,7 @@
 			});
 			playgroundEmbed({
 				'codeEl':       '#code',
-				{{if $.Share}}
 				'shareEl':      '#share',
-				{{end}}
 				'embedEl':      '#embed',
 				'embedLabelEl': '#embedLabel',
 				'embedHTMLEl':  '#shareURL'
@@ -112,14 +108,12 @@
 					Imports
 				</label>
 			</div>
-			{{if $.Share}}
 			<input type="button" value="Share" id="share">
 			<input type="text" id="shareURL">
 			<label id="embedLabel">
 				<input type="checkbox" id="embed">
 				embed
 			</label>
-			{{end}}
 			<select class="js-playgroundToysEl">
 				{{range .Examples}}
 				<option value="{{.Path}}">{{.Title}}</option>
diff --git a/share.go b/share.go
index ef7a6d6..528f86d 100644
--- a/share.go
+++ b/share.go
@@ -11,7 +11,6 @@
 	"fmt"
 	"io"
 	"net/http"
-	"strings"
 )
 
 const (
@@ -53,11 +52,6 @@
 		http.Error(w, "Requires POST", http.StatusMethodNotAllowed)
 		return
 	}
-	if !allowShare(r) {
-		http.Error(w, "Either this isn't available in your country due to legal reasons, or our IP geolocation is wrong.",
-			http.StatusUnavailableForLegalReasons)
-		return
-	}
 
 	var body bytes.Buffer
 	_, err := io.Copy(&body, io.LimitReader(r.Body, maxSnippetSize+1))
@@ -82,37 +76,3 @@
 
 	fmt.Fprint(w, id)
 }
-
-// golang/go#65081: the IP prefixes below have been observed in proxied traffic
-// from go.dev to play.golang.org, and as of 2024-01-16 are incorrectly
-// identified as CN by X-AppEngine-Country. Using geoIP tooling, these were all
-// verified as having temporarily been categorized as CN in early January, but
-// are currently US.
-//
-// While this is being investigated, hard-code a temporary allow list for these
-// IPs to get the playground working again.
-//
-// Per https://www.gstatic.com/ipranges/goog.json, these are Google IPs.
-var temporaryAllowListIPPrefixes = []string{
-	"2600:1900:2001:2",
-	"2600:1900:2001:3",
-	"2600:1900:2000:1b",
-	"2600:1900:2000:1d",
-	"2600:1900:2000:38",
-	"2600:1900:2000:37",
-	"2600:1900:2000:9",
-}
-
-func allowShare(r *http.Request) bool {
-	if r.Header.Get("X-AppEngine-Country") != "CN" {
-		return true
-	}
-	for _, forward := range strings.Split(r.Header.Get("X-Forwarded-For"), ",") {
-		for _, prefix := range temporaryAllowListIPPrefixes {
-			if strings.HasPrefix(strings.TrimSpace(forward), prefix) {
-				return true
-			}
-		}
-	}
-	return false
-}