cmd/golangorg: fix golang.google.cn/dl
Fixes golang/go#47750.
Change-Id: I1816df0dbd629705118b6f5b23c264efab73b04b
Reviewed-on: https://go-review.googlesource.com/c/website/+/343009
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Website-Publish: Russ Cox <rsc@golang.org>
diff --git a/cmd/golangorg/server.go b/cmd/golangorg/server.go
index 97be166..cc72ae4 100644
--- a/cmd/golangorg/server.go
+++ b/cmd/golangorg/server.go
@@ -155,7 +155,8 @@
if err != nil {
log.Fatalf("newSite: %v", err)
}
- if _, err := newSite(mux, "golang.google.cn", content, gorootFS); err != nil {
+ chinaSite, err := newSite(mux, "golang.google.cn", content, gorootFS)
+ if err != nil {
log.Fatalf("newSite: %v", err)
}
@@ -193,12 +194,13 @@
}
if runningOnAppEngine {
- appEngineSetup(site, mux)
- } else {
- // Register a redirect handler for /dl/ to the golang.org download page.
- mux.Handle("/dl/", http.RedirectHandler("https://golang.org/dl/", http.StatusFound))
+ appEngineSetup(site, chinaSite, mux)
}
+ // Register a redirect handler for /dl/ to the golang.org download page.
+ // (golang.org/dl and golang.google.cn/dl are registered separately.)
+ mux.Handle("/dl/", http.RedirectHandler("https://golang.org/dl/", http.StatusFound))
+
godev, err := godevHandler(filepath.Join(contentDir, "../go.dev/_content"))
if err != nil {
log.Fatalf("godevHandler: %v", err)
@@ -304,7 +306,7 @@
}
}
-func appEngineSetup(site *web.Site, mux *http.ServeMux) {
+func appEngineSetup(site, chinaSite *web.Site, mux *http.ServeMux) {
googleAnalytics = os.Getenv("GOLANGORG_ANALYTICS")
log.Printf("GODEV_IN_GO_DISCOVERY %q PROJECT %q", os.Getenv("GODEV_IN_GO_DISCOVERY"), os.Getenv("PROJECT_ID"))
@@ -329,7 +331,9 @@
}
memcacheClient := memcache.New(redisAddr)
- dl.RegisterHandlers(mux, site, datastoreClient, memcacheClient)
+ dl.RegisterHandlers(mux, site, "golang.org", datastoreClient, memcacheClient)
+ dl.RegisterHandlers(mux, chinaSite, "golang.google.cn", datastoreClient, memcacheClient)
+
short.RegisterHandlers(mux, datastoreClient, memcacheClient)
proxy.RegisterHandlers(mux, googleCN)
diff --git a/internal/dl/server.go b/internal/dl/server.go
index a663ac8..ba7dbbb 100644
--- a/internal/dl/server.go
+++ b/internal/dl/server.go
@@ -30,11 +30,11 @@
memcache *memcache.CodecClient
}
-func RegisterHandlers(mux *http.ServeMux, site *web.Site, dc *datastore.Client, mc *memcache.Client) {
+func RegisterHandlers(mux *http.ServeMux, site *web.Site, host string, dc *datastore.Client, mc *memcache.Client) {
s := server{site, dc, mc.WithCodec(memcache.Gob)}
- mux.HandleFunc("/dl", s.getHandler)
- mux.HandleFunc("/dl/", s.getHandler) // also serves listHandler
- mux.HandleFunc("/dl/upload", s.uploadHandler)
+ mux.HandleFunc(host+"/dl", s.getHandler)
+ mux.HandleFunc(host+"/dl/", s.getHandler) // also serves listHandler
+ mux.HandleFunc(host+"/dl/upload", s.uploadHandler)
// NOTE(cbro): this only needs to be run once per project,
// and should be behind an admin login.