1
0
mirror of https://github.com/golang/go synced 2024-11-17 02:54:45 -07:00

cmd/go: allow GOPROXY to elide the "https://" prefix

Fixes #32191

Change-Id: I6eebe1d4975e904c906e6b839cd6cab9447cbb34
Reviewed-on: https://go-review.googlesource.com/c/go/+/181019
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Bryan C. Mills 2019-06-06 14:43:28 -04:00
parent d36452eb56
commit bdd4201552
3 changed files with 29 additions and 1 deletions

View File

@ -12,7 +12,9 @@ import (
"io/ioutil"
"net/url"
"os"
"path"
pathpkg "path"
"path/filepath"
"strings"
"sync"
"time"
@ -110,6 +112,13 @@ func proxyURLs() ([]string, error) {
break
}
// Single-word tokens are reserved for built-in behaviors, and anything
// containing the string ":/" or matching an absolute file path must be a
// complete URL. For all other paths, implicitly add "https://".
if strings.ContainsAny(proxyURL, ".:/") && !strings.Contains(proxyURL, ":/") && !filepath.IsAbs(proxyURL) && !path.IsAbs(proxyURL) {
proxyURL = "https://" + proxyURL
}
// Check that newProxyRepo accepts the URL.
// It won't do anything with the path.
_, err := newProxyRepo(proxyURL, "golang.org/x/text")

View File

@ -145,7 +145,7 @@ func (c *dbClient) initBase() {
if proxyURL == "noproxy" {
continue
}
if proxyURL == "direct" {
if proxyURL == "direct" || proxyURL == "off" {
break
}
proxy, err := url.Parse(proxyURL)

View File

@ -0,0 +1,19 @@
env GO111MODULE=on
# GOPROXY file paths must provide the "file://" prefix explicitly.
env GOPROXY=$WORK/proxydir
! go list -versions -m golang.org/x/text
stderr 'invalid proxy URL.*proxydir'
[!net] stop
# GOPROXY HTTPS paths may elide the "https://" prefix.
# (See golang.org/issue/32191.)
env GOPROXY=proxy.golang.org
go list -versions -m golang.org/x/text
-- go.mod --
module example.com
go 1.13
-- $WORK/proxydir/README.md --
This proxy contains no data.