golang / vscode-go

Go extension for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=golang.Go
Other
3.87k stars 745 forks source link

Installing gopls fails with 403 forbidden #3118

Closed johanrex closed 9 months ago

johanrex commented 9 months ago

What version of Go, VS Code & VS Code Go extension are you using?

Version Information
* Run `go version` to get version of Go from _the VS Code integrated terminal_. - go version go1.21.5 windows/amd64 * Run `gopls -v version` to get version of Gopls from _the VS Code integrated terminal_. gopls: The term 'gopls' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. * Run `code -v` or `code-insiders -v` to get version of VS Code or VS Code Insiders. 1.85.1 0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2 x64 * Check your installed extensions to get the version of the VS Code Go extension - v0.40.1 * Run Ctrl+Shift+P (Cmd+Shift+P on Mac OS) > `Go: Locate Configured Go Tools` command. Checking configured tools.... GOBIN: undefined toolsGopath: gopath: C:\Users\serexj\go GOROOT: C:\Program Files\Go PATH: C:\Program Files\Python39\Scripts\;C:\Program Files\Python39\;C:\Python311\Scripts\;C:\Python311\;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin;C:\Program Files\SAP\hdbclient;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Azure Data Studio\bin;C:\Program Files\Perforce\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files\starship\bin\;C:\HashiCorp\Vagrant\bin;C:\Program Files\dotnet\;C:\Program Files (x86)\GitExtensions\;C:\Program Files\Git\cmd;C:\Program Files\Docker\Docker\resources\bin;C:\Program Files (x86)\Gpg4win\..\GnuPG\bin;C:\Program Files\ServiceNow\agent-client-collector\bin;C:\Program Files\ServiceNow\agent-client-collector\embedded\bin;C:\Program Files\PowerShell\7\;C:\Program Files\Go\bin;C:\Users\serexj\.cargo\bin;C:\Users\serexj\AppData\Local\Microsoft\WindowsApps;C:\Users\serexj\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\serexj\AppData\Local\Programs\Git\cmd;C:\Program Files\Azure Data Studio\bin;C:\Users\serexj\AppData\Roaming\npm;C:\Users\serexj\.dotnet\tools;C:\Users\serexj\go\bin go: C:\Program Files\Go\bin\go.exe: go version go1.21.5 windows/amd64 gopls: not installed gotests: not installed gomodifytags: not installed impl: not installed goplay: not installed dlv: not installed staticcheck: not installed go env Workspace Folder (golang_test): c:\tmp\golang_test set GO111MODULE= set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\serexj\AppData\Local\go-build set GOENV=C:\Users\serexj\AppData\Roaming\go\env set GOEXE=.exe set GOEXPERIMENT= set GOFLAGS= set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOINSECURE= set GOMODCACHE=C:\Users\serexj\go\pkg\mod set GONOPROXY= set GONOSUMDB= set GOOS=windows set GOPATH=C:\Users\serexj\go set GOPRIVATE= set GOPROXY=https://proxy.golang.org,direct set GOROOT=C:\Program Files\Go set GOSUMDB=sum.golang.org set GOTMPDIR= set GOTOOLCHAIN=auto set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64 set GOVCS= set GOVERSION=go1.21.5 set GCCGO=gccgo set GOAMD64=v1 set AR=ar set CC=gcc set CXX=g++ set CGO_ENABLED=0 set GOMOD=NUL set GOWORK= set CGO_CFLAGS=-O2 -g set CGO_CPPFLAGS= set CGO_CXXFLAGS=-O2 -g set CGO_FFLAGS=-O2 -g set CGO_LDFLAGS=-O2 -g set PKG_CONFIG=pkg-config set GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\serexj\AppData\Local\Temp\go-build799992729=/tmp/go-build -gno-record-gcc-switches

Share the Go related settings you have added/edited

Run Preferences: Open Settings (JSON) command to open your settings.json file. Share all the settings with the go. or ["go"] or gopls prefixes.

No such settings.

Describe the bug

gopls install from the "Analysis Tools Missing" window fails with 403 Forbidden error.

This command works correctly when I run it in a separate powershell window: curl https://proxy.golang.org/github.com/sergi/go-diff/@v/v1.1.0.zip

I.e. we can conclude that I have network access to the url. But when it's downloaded via the gopls install it fails. Could it have anything to do with gopls install not using proxy?

Expected behaviour: gopls installs successfully.

A clear and concise description of what the bug. A clear and concise description of what you expected to happen.

Steps to reproduce the behavior:

When opening a go file I am presented with the "Analysis Tools Missing" window that says: The "gopls" command is not available. Run "go install -v golang.org/x/tools/gopls@latest" to install

I click "Install".

In the Go output pane this is what I get:

Tools environment: GOPATH=C:\Users\serexj\go Installing 1 tool at C:\Users\serexj\go\bin gopls

Installing golang.org/x/tools/gopls@latest FAILED { "code": 1, "killed": false, "signal": null, "cmd": "C:\Program Files\Go\bin\go.exe install -v golang.org/x/tools/gopls@latest", "stdout": "", "stderr": "go: downloading golang.org/x/telemetry v0.0.0-20231114163143-69313e640400\ngo: downloading honnef.co/go/tools v0.4.5\ngo: downloading github.com/sergi/go-diff v1.1.0\ngo: downloading mvdan.cc/gofumpt v0.4.0\ngo: downloading mvdan.cc/xurls/v2 v2.4.0\ngo: downloading golang.org/x/mod v0.14.0\ngo: downloading golang.org/x/sync v0.4.0\ngo: downloading golang.org/x/vuln v1.0.1\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\diff.go:17:2: github.com/sergi/go-diff@v1.1.0: reading https://proxy.golang.org/github.com/sergi/go-diff/@v/v1.1.0.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\bug\bug.go:22:2: golang.org/x/telemetry@v0.0.0-20231114163143-69313e640400: reading https://proxy.golang.org/golang.org/x/telemetry/@v/v0.0.0-20231114163143-69313e640400.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\lsp\source\rename.go:58:2: golang.org/x/mod@v0.14.0: reading https://proxy.golang.org/golang.org/x/mod/@v/v0.14.0.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\lsp\source\implementation.go:19:2: golang.org/x/sync@v0.4.0: reading https://proxy.golang.org/golang.org/x/sync/@v/v0.4.0.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools@v0.14.1-0.20231114185516-c9d3e7de13fd\internal\gocommand\vendor.go:17:2: golang.org/x/mod@v0.14.0: reading https://proxy.golang.org/golang.org/x/mod/@v/v0.14.0.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools@v0.14.1-0.20231114185516-c9d3e7de13fd\internal\imports\mod.go:20:2: golang.org/x/mod@v0.14.0: reading https://proxy.golang.org/golang.org/x/mod/@v/v0.14.0.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:13:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:14:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:15:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:16:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:17:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\gofumpt_118.go:15:2: mvdan.cc/gofumpt@v0.4.0: reading https://proxy.golang.org/mvdan.cc/gofumpt/@v/v0.4.0.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\hooks.go:13:2: mvdan.cc/xurls/v2@v2.4.0: reading https://proxy.golang.org/mvdan.cc/xurls/v2/@v/v2.4.0.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\vulncheck\scan\command.go:30:2: golang.org/x/vuln@v1.0.1: reading https://proxy.golang.org/golang.org/x/vuln/@v/v1.0.1.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\telemetry\telemetry.go:13:2: golang.org/x/telemetry@v0.0.0-20231114163143-69313e640400: reading https://proxy.golang.org/golang.org/x/telemetry/@v/v0.0.0-20231114163143-69313e640400.zip: 403 Forbidden\nC:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\telemetry\telemetry.go:15:2: golang.org/x/telemetry@v0.0.0-20231114163143-69313e640400: reading https://proxy.golang.org/golang.org/x/telemetry/@v/v0.0.0-20231114163143-69313e640400.zip: 403 Forbidden\n" }

1 tools failed to install.

gopls: failed to install gopls(golang.org/x/tools/gopls@latest): Error: Command failed: C:\Program Files\Go\bin\go.exe install -v golang.org/x/tools/gopls@latest go: downloading golang.org/x/telemetry v0.0.0-20231114163143-69313e640400 go: downloading honnef.co/go/tools v0.4.5 go: downloading github.com/sergi/go-diff v1.1.0 go: downloading mvdan.cc/gofumpt v0.4.0 go: downloading mvdan.cc/xurls/v2 v2.4.0 go: downloading golang.org/x/mod v0.14.0 go: downloading golang.org/x/sync v0.4.0 go: downloading golang.org/x/vuln v1.0.1 C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\diff.go:17:2: github.com/sergi/go-diff@v1.1.0: reading https://proxy.golang.org/github.com/sergi/go-diff/@v/v1.1.0.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\bug\bug.go:22:2: golang.org/x/telemetry@v0.0.0-20231114163143-69313e640400: reading https://proxy.golang.org/golang.org/x/telemetry/@v/v0.0.0-20231114163143-69313e640400.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\lsp\source\rename.go:58:2: golang.org/x/mod@v0.14.0: reading https://proxy.golang.org/golang.org/x/mod/@v/v0.14.0.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\lsp\source\implementation.go:19:2: golang.org/x/sync@v0.4.0: reading https://proxy.golang.org/golang.org/x/sync/@v/v0.4.0.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools@v0.14.1-0.20231114185516-c9d3e7de13fd\internal\gocommand\vendor.go:17:2: golang.org/x/mod@v0.14.0: reading https://proxy.golang.org/golang.org/x/mod/@v/v0.14.0.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools@v0.14.1-0.20231114185516-c9d3e7de13fd\internal\imports\mod.go:20:2: golang.org/x/mod@v0.14.0: reading https://proxy.golang.org/golang.org/x/mod/@v/v0.14.0.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:13:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:14:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:15:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:16:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\analysis_119.go:17:2: honnef.co/go/tools@v0.4.5: reading https://proxy.golang.org/honnef.co/go/tools/@v/v0.4.5.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\gofumpt_118.go:15:2: mvdan.cc/gofumpt@v0.4.0: reading https://proxy.golang.org/mvdan.cc/gofumpt/@v/v0.4.0.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\hooks\hooks.go:13:2: mvdan.cc/xurls/v2@v2.4.0: reading https://proxy.golang.org/mvdan.cc/xurls/v2/@v/v2.4.0.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\vulncheck\scan\command.go:30:2: golang.org/x/vuln@v1.0.1: reading https://proxy.golang.org/golang.org/x/vuln/@v/v1.0.1.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\telemetry\telemetry.go:13:2: golang.org/x/telemetry@v0.0.0-20231114163143-69313e640400: reading https://proxy.golang.org/golang.org/x/telemetry/@v/v0.0.0-20231114163143-69313e640400.zip: 403 Forbidden C:\Users\serexj\go\pkg\mod\golang.org\x\tools\gopls@v0.14.2\internal\telemetry\telemetry.go:15:2: golang.org/x/telemetry@v0.0.0-20231114163143-69313e640400: reading https://proxy.golang.org/golang.org/x/telemetry/@v/v0.0.0-20231114163143-69313e640400.zip: 403 Forbidden

Screenshots or recordings

If applicable, add screenshots or recordings to help explain your problem.

johanrex commented 9 months ago

Turns out the network traffic was actually blocked by an antivirus and had to be approved first. I opened the failing url in a web browser which revealed that an antivirus was blocking it. After approving the first link manually all the others also succeeded.

findleyr commented 9 months ago

Thanks for following up, @johanrex. Will close this as a local issue.