From c61c29fe563134f752ea14e794d08031982145e8 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 21 Aug 2019 10:43:49 -0400 Subject: [PATCH] cmd/go: accept GOSUMDB=sum.golang.google.cn This CL makes the go command understand that GOSUMDB=sum.golang.google.cn should connect to that domain but expect to find a checksum database signed by sum.golang.org there. The host sum.golang.google.cn is not yet completely configured; we hope it will be available in a few weeks. Change-Id: Ie0fc4323f0c7084dda59bd3b45fc406717fa16d9 Reviewed-on: https://go-review.googlesource.com/c/go/+/191137 Run-TryBot: Russ Cox Reviewed-by: Andrew Bonventre --- src/cmd/go/alldocs.go | 8 +++++--- src/cmd/go/internal/modfetch/fetch.go | 8 +++++--- src/cmd/go/internal/modfetch/sumdb.go | 12 +++++++++++- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index 63ec2321be5..ebbead5d316 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -2743,9 +2743,11 @@ // GOSUMDB="sum.golang.org+" // GOSUMDB="sum.golang.org+ https://sum.golang.org" // -// The go command knows the public key of sum.golang.org; use of any other -// database requires giving the public key explicitly. The URL defaults to -// "https://" followed by the database name. +// The go command knows the public key of sum.golang.org, and also that the name +// sum.golang.google.cn (available inside mainland China) connects to the +// sum.golang.org checksum database; use of any other database requires giving +// the public key explicitly. +// The URL defaults to "https://" followed by the database name. // // GOSUMDB defaults to "sum.golang.org", the Go checksum database run by Google. // See https://sum.golang.org/privacy for the service's privacy policy. diff --git a/src/cmd/go/internal/modfetch/fetch.go b/src/cmd/go/internal/modfetch/fetch.go index 74e36cc6fc1..51a56028c4a 100644 --- a/src/cmd/go/internal/modfetch/fetch.go +++ b/src/cmd/go/internal/modfetch/fetch.go @@ -701,9 +701,11 @@ to use and optionally its public key and URL, as in: GOSUMDB="sum.golang.org+" GOSUMDB="sum.golang.org+ https://sum.golang.org" -The go command knows the public key of sum.golang.org; use of any other -database requires giving the public key explicitly. The URL defaults to -"https://" followed by the database name. +The go command knows the public key of sum.golang.org, and also that the name +sum.golang.google.cn (available inside mainland China) connects to the +sum.golang.org checksum database; use of any other database requires giving +the public key explicitly. +The URL defaults to "https://" followed by the database name. GOSUMDB defaults to "sum.golang.org", the Go checksum database run by Google. See https://sum.golang.org/privacy for the service's privacy policy. diff --git a/src/cmd/go/internal/modfetch/sumdb.go b/src/cmd/go/internal/modfetch/sumdb.go index b0bb3d4d5ea..1c24ec273b5 100644 --- a/src/cmd/go/internal/modfetch/sumdb.go +++ b/src/cmd/go/internal/modfetch/sumdb.go @@ -60,7 +60,17 @@ func dbDial() (dbName string, db *sumweb.Conn, err error) { // $GOSUMDB can be "key" or "key url", // and the key can be a full verifier key // or a host on our list of known keys. - key := strings.Fields(cfg.GOSUMDB) + + // Special case: sum.golang.google.cn + // is an alias, reachable inside mainland China, + // for sum.golang.org. If there are more + // of these we should add a map like knownGOSUMDB. + gosumdb := cfg.GOSUMDB + if gosumdb == "sum.golang.google.cn" { + gosumdb = "sum.golang.org https://sum.golang.google.cn" + } + + key := strings.Fields(gosumdb) if len(key) >= 1 { if k := knownGOSUMDB[key[0]]; k != "" { key[0] = k