From 42933c415ec99ab15ffa8b00de12e0b5d33767a1 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Thu, 12 Jul 2018 21:23:00 +0000 Subject: [PATCH] [release-branch.go1.10] godoc/dl: add meta tags for go get golang.org/dl/go1.N Updates golang/go#23223 Change-Id: I628cea181d3a0e6bb25fdd98e098581aa222e049 Reviewed-on: https://go-review.googlesource.com/123679 Reviewed-by: Andrew Bonventre (cherry picked from commit 827f47db85a5e5a57ef542da3ec035cdc3c024a4) Reviewed-on: https://go-review.googlesource.com/125175 --- godoc/dl/dl.go | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/godoc/dl/dl.go b/godoc/dl/dl.go index 6555940c..629b6caf 100644 --- a/godoc/dl/dl.go +++ b/godoc/dl/dl.go @@ -16,6 +16,7 @@ import ( "crypto/md5" "encoding/json" "fmt" + "html" "html/template" "io" "net/http" @@ -432,11 +433,31 @@ func getHandler(w http.ResponseWriter, r *http.Request) { listHandler(w, r) return } - if !fileRe.MatchString(name) { - http.NotFound(w, r) + if fileRe.MatchString(name) { + http.Redirect(w, r, downloadBaseURL+name, http.StatusFound) return } - http.Redirect(w, r, downloadBaseURL+name, http.StatusFound) + if goGetRe.MatchString(name) { + if r.Method == "GET" || r.Method == "HEAD" { + w.Header().Set("Content-Type", "text/html; charset=utf-8") + } + w.Header().Set("Location", "https://golang.org/dl/#"+name) + w.WriteHeader(http.StatusFound) + fmt.Fprintf(w, ` + + + + + + + +Nothing to see here; move along. + + +`, html.EscapeString(name), html.EscapeString(name)) + return + } + http.NotFound(w, r) } func validUser(user string) bool { @@ -453,7 +474,10 @@ func userKey(c context.Context, user string) string { return fmt.Sprintf("%x", h.Sum(nil)) } -var fileRe = regexp.MustCompile(`^go[0-9a-z.]+\.[0-9a-z.-]+\.(tar\.gz|pkg|msi|zip)$`) +var ( + fileRe = regexp.MustCompile(`^go[0-9a-z.]+\.[0-9a-z.-]+\.(tar\.gz|pkg|msi|zip)$`) + goGetRe = regexp.MustCompile(`^go[0-9a-z.]+\.[0-9a-z.-]+$`) +) func initHandler(w http.ResponseWriter, r *http.Request) { var fileRoot struct {