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:
parent
d36452eb56
commit
bdd4201552
@ -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")
|
||||
|
@ -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)
|
||||
|
19
src/cmd/go/testdata/script/mod_proxy_https.txt
vendored
Normal file
19
src/cmd/go/testdata/script/mod_proxy_https.txt
vendored
Normal 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.
|
Loading…
Reference in New Issue
Block a user