microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
163.28k stars 28.89k forks source link

Help Wanted: Test new networking stack #22214

Closed joaomoreno closed 7 years ago

joaomoreno commented 7 years ago

If you were pinged to this thread, it's because you helped out in #18103.

With #21879, all network communication was moved to the Chrome's network stack. We'll try to fix the proxy issues over that layer, instead of having two layers.

The latest Insiders release is already out, please give it a try:

Please check whether you can:

  1. Browse extensions
  2. Install extensions

If stuff fails, please open the dev tools (F1, Developer Tools), try again and check the Network tab for failing requests.

Note: The http.proxy and http.proxyStrictSSL settings are ignored in this build, it doesn't matter what you put in there. The proxy settings are automatically picked up from your system's configuration. So, if stuff fails, the first thing you can check if whether your system is correctly configured to use your proxy.


@dfroze @akcorp2003 @fazouane-marouane @ywmail @abargstaedt @liaoya @R3V07T @hbuckle @ocean @joewood @martinmcwhorter @critesjm @dotalchemy @Jule- @diggamies @Efluminor @egamma @the-shank @raphabi @ununseptium @Platzer @williamchang @rfc791 @iamitava @ramdacxp @jrieken @abdinfos @ericc4 @lcrok @wiz @Harpagon @equinoxel @sattlt @nassoman @jithurjacob @sebastienraillet @rafaelcneves @FloMaetschke @JesusSerranoGL @kad @roblourens @leonibr @eolandezhang @xapienz @temurphy @atierant

leonibr commented 7 years ago

Windows link is dead

Em 08/03/2017 08:51, "João Moreno" notifications@github.com escreveu:

If you were pinged to this thread, it's because you helped out in #18103 https://github.com/Microsoft/vscode/issues/18103.

With #21879 https://github.com/Microsoft/vscode/pull/21879, all network communication was moved to the Chrome's network stack. We'll try to fix the proxy issues over that layer, instead of having two layers.

The latest Insiders release is already out, please give it a try:

Please check whether you can:

  1. Browse extensions
  2. Install extensions

If stuff fails, please open the dev tools (F1, Developer Tools), try again and check the Network tab for failing requests.

@dfroze https://github.com/dfroze @akcorp2003 https://github.com/akcorp2003 @fazouane-marouane https://github.com/fazouane-marouane @ywmail https://github.com/ywmail @abargstaedt https://github.com/abargstaedt @liaoya https://github.com/liaoya @R3V07T https://github.com/R3V07T @hbuckle https://github.com/hbuckle @ocean https://github.com/ocean @joewood https://github.com/joewood @martinmcwhorter https://github.com/martinmcwhorter @critesjm https://github.com/critesjm @dotalchemy https://github.com/dotalchemy @Jule- https://github.com/Jule- @diggamies https://github.com/diggamies @Efluminor https://github.com/Efluminor @egamma https://github.com/egamma @the-shank https://github.com/the-shank @raphabi https://github.com/raphabi @ununseptium https://github.com/ununseptium @Platzer https://github.com/Platzer @williamchang https://github.com/williamchang @rfc791 https://github.com/rfc791 @iamitava https://github.com/iamitava @ramdacxp https://github.com/ramdacxp @jrieken https://github.com/jrieken @abdinfos https://github.com/abdinfos @ericc4 https://github.com/ericc4 @lcrok https://github.com/lcrok @wiz https://github.com/wiz @Harpagon https://github.com/Harpagon @equinoxel https://github.com/equinoxel @sattlt https://github.com/sattlt @nassoman https://github.com/nassoman @jithurjacob https://github.com/jithurjacob @sebastienraillet https://github.com/sebastienraillet @rafaelcneves https://github.com/rafaelcneves @FloMaetschke https://github.com/FloMaetschke @JesusSerranoGL https://github.com/JesusSerranoGL @kad https://github.com/kad @roblourens https://github.com/roblourens @leonibr https://github.com/leonibr @eolandezhang https://github.com/eolandezhang @xapienz https://github.com/xapienz @temurphy https://github.com/temurphy @atierant https://github.com/atierant

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Microsoft/vscode/issues/22214, or mute the thread https://github.com/notifications/unsubscribe-auth/AHjPFWiWCO7Vf94_f6cy_y5AdjVTe8eqks5rjpYngaJpZM4MWsMK .

rafaelcneves commented 7 years ago

The "Linux 32" link is with "Linux 64" url, the same issue with "Linux 64" link

fazouane-marouane commented 7 years ago

The link to vscode insider https://code.visualstudio.com/insiders

@joaomoreno Thanks for the update. I'll test it this afternoon.

Update It works like a charm! 😁

xapienz commented 7 years ago

Hello @joaomoreno, thank you for your effort. I installed latest linux-64 deb from https://code.visualstudio.com/insiders (same build number as in tar.gz here - 1.11.0-1488956710_amd64).

After the update the problem #18920 didn't disappear, it still persists (net::ERR_INSECURE_RESPONSE in developer console). Moreover, after the update I cannot check for updates using "Help - Check for updates" (menu item disables forever, no messages appear in developer console). In previous version I could check for updates correctly.

Then I started code-insiders with code-insiders --verbose and noticed the message as in #17360 (ERROR:cert_verify_proc_nss.cc(942)] CERT_PKIXVerifyCert). So the workaround with certutil could help me (though nothing works without applying workaround).

In short, my problem seems to be not in proxy settings, it is the problem in accepting the corporate certificate despite using http.proxyStrictSSL: false.

rafaelcneves commented 7 years ago

I installed the latest version of code-insiders from the ppa, and I've tried with the links above too on linux x64.

And the error persists, I'm getting net::ERR_CONNECTION_TIMED_OUT in developer console.

I have sure that proxy is correctly configured because I tried to simulate the same request on Postman and curl and there it works.

equinoxel commented 7 years ago

I've installed latest update for windows and I get the same error.

FloMaetschke commented 7 years ago

Hi @joaomoreno jaomoreno!

I still get the problem with ERR_TUNNEL_CONNECTION_FAILED.

I am using http_proxy setting in system env which works fine with npm.

workbench.main.js:142 POST https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery net::ERR_TUNNEL_CONNECTION_FAILED(anonymous function)

image

workbench.main.js:142 POST https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery net::ERR_TUNNEL_CONNECTION_FAILED(anonymous function) @ workbench.main.js:142n.Class.derive._oncancel @ workbench.main.js:32t.xhrRequest @ workbench.main.js:142e.request @ workbench.main.js:142n.request @ workbench.main.js:142(anonymous function) @ workbench.main.js:142then @ workbench.main.js:32e.queryGallery @ workbench.main.js:142e.query @ workbench.main.js:142e.queryGallery @ workbench.main.js:97t.query @ workbench.main.js:138t.doSearch @ workbench.main.js:138(anonymous function) @ workbench.main.js:138e.queue @ workbench.main.js:32(anonymous function) @ workbench.main.js:32(anonymous function) @ workbench.main.js:32g @ workbench.main.js:32enter @ workbench.main.js:32_run @ workbench.main.js:32_completed @ workbench.main.js:32(anonymous function) @ workbench.main.js:32
4workbench.main.js:103 An unknown error occurred. Please consult the log for more details.e.doShow @ workbench.main.js:103e.show @ workbench.main.js:103(anonymous function) @ workbench.main.js:103e.show @ workbench.main.js:103t.onError @ workbench.main.js:138(anonymous function) @ workbench.main.js:138done @ workbench.main.js:32v @ workbench.main.js:32enter @ workbench.main.js:32_run @ workbench.main.js:32_chainedError @ workbench.main.js:32n @ workbench.main.js:32v @ workbench.main.js:32enter @ workbench.main.js:32_run @ workbench.main.js:32_error @ workbench.main.js:32(anonymous function) @ workbench.main.js:32done @ workbench.main.js:32v @ workbench.main.js:32enter @ workbench.main.js:32_run @ workbench.main.js:32_error @ workbench.main.js:32(anonymous function) @ workbench.main.js:32done @ workbench.main.js:32v @ workbench.main.js:32enter @ workbench.main.js:32_run @ workbench.main.js:32_error @ workbench.main.js:32u @ workbench.main.js:32(anonymous function) @ workbench.main.js:32v @ workbench.main.js:32enter @ workbench.main.js:32_run @ workbench.main.js:32_chainedError @ workbench.main.js:32n @ workbench.main.js:32then @ workbench.main.js:32enter @ workbench.main.js:32_run @ workbench.main.js:32_setCompleteValue @ workbench.main.js:32v @ workbench.main.js:32enter @ workbench.main.js:32_run @ workbench.main.js:32_chainedError @ workbench.main.js:32n @ workbench.main.js:32v @ workbench.main.js:32enter @ workbench.main.js:32_run @ workbench.main.js:32_error @ workbench.main.js:32
FloMaetschke commented 7 years ago

@joaomoreno

" The proxy settings are automatically picked up from your system's configuration. So, if stuff fails, the first thing you can check if whether your system is correctly configured to use your proxy."

  • What exactly do you mean with this statement: HTTP_PROXY enviroment variables? Windows Proxy Settings(IE)?
JesusSerranoGL commented 7 years ago

Insiders version worked for me! Thanks!

joaomoreno commented 7 years ago

Fixed the links, sorry guys. 😨

joaomoreno commented 7 years ago

@xapienz I'm now investigating on how to support the scenario of untrusted certificates. 👍

@rafaelcneves Strange. Chrome works well in your system? Do you have Firefox? If so, do you manually configure the proxy settings in it?

@FloMaetschke I mean the Windows Proxy Settings(IE). The HTTP_PROXY doesn't work anymore.

FloMaetschke commented 7 years ago

@joaomoreno Proxy Settings are set but not working.

joaomoreno commented 7 years ago

@FloMaetschke Does Google Chrome work in your machine? How about Firefox?

joaomoreno commented 7 years ago

I'll try to be active in our Gitter room: just ping me there directly. Gitter

martinmcwhorter commented 7 years ago

Windows

I am still seeing the same non working result as @FloMaetschke is:

(failed) net::ERR_TUNNEL_CONNECTION_FAILED

while requesting https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery

rafaelcneves commented 7 years ago

@joaomoreno Yes, but I need to configure it manually as well as Firefox.

I'm using Ubuntu, and it doesn't have an effective system proxy configuration with auth options, because of this I need to set HTTP_PROXY env vars on profile, and it works at most of applications.

joaomoreno commented 7 years ago

@rafaelcneves Can you show me the Chrome network configuration dialog?

Don't you have this system settings dialog?

image

Thiruppathi commented 7 years ago

@joaomoreno I'm trying to setup the proxy at VS Code level, not at the system level; Here is my firefox proxy settings.

screen shot 2017-03-08 at 15 38 13

Is it possible to do this kind of setup in VS Code? Is there any plugins? I've tried Toggle Proxy; unfortunately there is no option to configure socks5 proxy.

Thanks

joaomoreno commented 7 years ago

@Thiruppathi Yes, you can do it, I just don't expose it yet.

Can you give this a try?

So, that' be:

code --proxy-server=socks5://myproxyaddress

Let me know how it goes.

Also, can you check whether it works if you configure it at the system level instead?

Thiruppathi commented 7 years ago

@joaomoreno Thanks for the quick response. I've tried the following command

code --proxy-server=socks5://localhost:8888

and got the following response

open: unrecognized option --proxy-server=socks5://localhost:8888'

I've tried the same with VS Code Insiders as well using alias(code-insiders)

code-insiders --proxy-server=socks5://localhost:8888

I'm not sure how system(macOS) level configuration works; didn't want to mess it up; 😟

rafaelcneves commented 7 years ago

@joaomoreno I set it on chrome passing --proxy-server option, on linux chrome does not have support to proxy, that I can only get this by using a plugin.

I have that system settings dialog, but I can't set auth on that.

joaomoreno commented 7 years ago

@Thiruppathi You still have a very old Code launcher set up. Open your bashrc and remove the code alias there. Then, in Code go F1 and run the Install 'code' command in PATH command. Then, try again!

martinmcwhorter commented 7 years ago

Is there a command line switch to turn off proxy strict ssl?

On Wed, 8 Mar 2017, 16:36 Rafael César Neves, notifications@github.com wrote:

@joaomoreno https://github.com/joaomoreno I set it on chrome passing --proxy-server option, on linux chrome does not have support to proxy, that I can only get this by using a plugin.

I have that system settings dialog, but I can't set auth on that.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Microsoft/vscode/issues/22214#issuecomment-285092818, or mute the thread https://github.com/notifications/unsubscribe-auth/ABI5-iELNUAWfJidf4jpiWZ7sKKdB73Dks5rjtkAgaJpZM4MWsMK .

joaomoreno commented 7 years ago

@rafaelcneves Can you try passing the very same --proxy-server opt to Code?

To confirm: you can't set the systems dialog due to lack of permissions?

joaomoreno commented 7 years ago

@martinmcwhorter Not yet.

Thiruppathi commented 7 years ago

@joaomoreno Thanks for the instruction; now I'm able to launch code with

code --proxy-server=socks5://localhost:8888

Unfortunately, I'm unable to access the url I wanted to access from code. Got the following error.

443: Operation timed out

joaomoreno commented 7 years ago

Can you show me the error in the devtools? A screenshot?

rafaelcneves commented 7 years ago

@joaomoreno Not, I'm talking about proxy user settings, my proxy config is like this: user:password@proxy:port

With this --proxy-server option I get net::ERR_TUNNEL_CONNECTION_FAILED probably because this proxy user is not set.

joaomoreno commented 7 years ago

@rafaelcneves I don't understand. I thought you had a working value for --proxy-server which you use for Chrome:

@joaomoreno I set it on chrome passing --proxy-server option

If you pass the same value to Code, you get that net::ERR_TUNNEL_CONNECTION_FAILED error?

rafaelcneves commented 7 years ago

@joaomoreno It's because chrome throws me a dialog to pass user and password, code doesn't do this.

rafaelcneves commented 7 years ago

@joaomoreno This is what happen on chrome:

proxy

Jule- commented 7 years ago

@joaomoreno Indeed I got the same issue than @rafaelcneves. I am behind an authenticated proxy and in Windows proxy settings you can't save your credentials (and you don't want to, even if most of the time you have no choice, for dev purpose, than saving your password in clear in your http_proxy environment variable...). So we need some alternative to the proxy credential popup shown in the @joaomoreno screenshot.

And I don't know if it matters but my proxy is not a socks proxy.

lcrok commented 7 years ago

@joaomoreno Installed this version and everything is working perfectly. I could remove the http_proxy setting and it got the system wide proxy. No more errors. Thanks for working on that.

FloMaetschke commented 7 years ago

I totally agree with @Jule- !

But anyway, why don't you just add these 3 lines of code for checking HTTP_PROXY and setting their values to the new single network stack on startup? HTTP_PROXY is a common way, why don't you support it anymore?

Update:

I tried your suggestions with the startup parameters:

--proxy-server="http://user:pw@ip:port/" --proxy-server="ip:port" --proxy-server="user:pw@ip:port"

I always get the following error: net::ERR_NO_SUPPORTED_PROXIES

When using this parameter, i get again: --proxy-pac-url=http://url.to.my.pac

Failed to load resource: net::ERR_TUNNEL_CONNECTION_FAILED

I also tried: --ignore-certificate-errors but without any success.

joaomoreno commented 7 years ago

@rafaelcneves @Jule- Very interesting. I will try to reproduce your setup. I assume the ideal scenario is that Code shows you a similar auth popup and just remembers the credentials from then on?

Also, does it work if you inline the credentials in the proxy url? `user:pass@host

@lcrok Great to know thanks. What is your OS btw?

@FloMaetschke Are you also behind an authenticated proxy?

FloMaetschke commented 7 years ago

@joaomoreno Yes! I am sorry i can't be in gitter because its completely blocked by corporate proxy.

I tried adding Fiddler 4. Configured my proxy there as gateway, so it forwards the request.

The result is, that the proxy responds with a HTTP/1.1 407 Proxy Authentication Required.

Now i used chrome with the option to automatically detect settings (system proxy config) and it uses fiddler4, too. Chrome then shows up a proxy credentials input like @rafaelcneves already mentioned above.

UPDATE:

Ok i found a temporarily solution which might help us fix the problem:

I used fiddler 4, set my proxy there and followed this guide to set the proxy auth header with my credentials: http://stackoverflow.com/questions/25686108/fiddler-gateway-proxy-username-password

I also had to set the following startup parameters: --ignore-certificate-errors otherwise i would get a: net::ERR_INSECURE_RESPONSE

So to get it working, there should be a header in each http request like: Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

where: dXNlcm5hbWU6cGFzc3dvcmQ= is a base64 encoded: username:password

This might help? https://github.com/electron/electron/pull/3250

lcrok commented 7 years ago

@lcrok Great to know thanks. What is your OS btw?

@joaomoreno I'm using Windows 10 anniversary edition. Behind a corporate proxy authenticated by smart cards. I don't have any username and password to put in, but it is now working with the authentication handled by windows. It is working just like the browser does. Original Issue Post.

Jule- commented 7 years ago

@joaomoreno

I assume the ideal scenario is that Code shows you a similar auth popup and just remembers the credentials from then on?

Yes! 😃

Also, does it work if you inline the credentials in the proxy url? user:pass@host:port

You can't do that in Windows proxy settings and you told us that the http.proxy parameter in Code is not used anymore, so no it does not work.

joaomoreno commented 7 years ago

@Jule- Alright, let me see if I can sketch up that auth dialog.

akcorp2003 commented 7 years ago

I'm using MacOS El Capitan 10.11.6. I have the proxy configured for my system. I didn't change anything in the preferences for VS Code.

However, I still can't install or find extensions.

screen shot 2017-03-09 at 8 56 27 am screen shot 2017-03-09 at 8 57 43 am

Here are my network settings. Not showing the addresses for obvious reasons. Also, I have a PAC file under Automatic Proxy Configuration.

screen shot 2017-03-09 at 8 59 55 am

Please let me know if I can provide anything else. Thanks for the work you have done fixing this issue!! :D

joaomoreno commented 7 years ago

Leaving this here for my own reference.

I was able to install and configure Squid proxy on my dev machine. The magic sauce is:

auth_param basic program /usr/local/opt/squid/libexec/basic_ncsa_auth /Users/joao/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
joaomoreno commented 7 years ago

@rafaelcneves @Jule- I don't see a Remember credentials checkbox in that screenshot. Do you really input your credentials every time you open Chrome up?

Jule- commented 7 years ago

@joaomoreno no the credentials are saved. In fact when you validate your credentials you have the Chrome popup near the address bar on the key icon that asking you if you want to save them. I'm not sure about that but I think it can be synced with your Google account.

joaomoreno commented 7 years ago

Maybe they go onto the OS's keychain?

Harpagon commented 7 years ago

Error still persist.Ubuntu 14.04 x32 with corporate proxy (squid/3.2.3) with auth. http_proxy and https_proxy environment variables exists. Google Chrome not installed.

--proxy-server="http(s)://user:pw@ip:port/" raising : net::ERR_NO_SUPPORTED_PROXIES

default

fazouane-marouane commented 7 years ago

Have you tried passing only "--proxy-auto-detect" ? If it doesn't work try "--winhttp-proxy-resolver" (the flag is compatible with windows and mac)

FloMaetschke commented 7 years ago

Maybe they go onto the OS's keychain?

@joaomoreno They are saved into chromes credential storage. (settings-> search for password)

joaomoreno commented 7 years ago

Auth support coming: #22369

@Harpagon You can't pass in the credentials in the URL, apparently. Gotta wait for #22369

dpwiz commented 7 years ago

Works with --proxy-server=http://127.0.0.1:3128 but does not catch system proxy settings and/or http_proxy env var.

xuthief commented 7 years ago

start with code --proxy-server=socks5://localhost:1080
but failed with tcp timeout:

golint:
Error: Command failed: /usr/local/bin/go get -u -v github.com/golang/lint/golint
github.com/golang/lint (download)
Fetching https://golang.org/x/tools/go/gcexportdata?go-get=1
https fetch failed: Get https://golang.org/x/tools/go/gcexportdata?go-get=1: dial tcp 216.239.37.1:443: i/o timeout