fullstorydev / grpcurl

Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers
MIT License
10.75k stars 502 forks source link

feat: add support for HTTPS_PROXY #306

Open denysvitali opened 2 years ago

denysvitali commented 2 years ago

This commit adds support for the HTTPS_PROXY environment variable. At the moment the NO_PROXY environment variable is ignored, please be aware of that!

This should close #166

On top of that, this adds support for SOCKS_PROXY via the ProxyFromEnvironment method of golang.org/x/net/proxy

celloni commented 2 years ago

Thanks a lot for the PR! curl is also respecting lowercase https_proxy do you think it make sense to do this here as well?

dragonsinth commented 2 years ago

Hi @denysvitali thanks for the contribution. Is there a reason we'd need a new third party lib instead of using Go's native proxying?

CpuID commented 2 years ago

can confirm this is working great for us - would love to see it merged 👍

denysvitali commented 2 years ago

Hi @denysvitali thanks for the contribution. Is there a reason we'd need a new third party lib instead of using Go's native proxying?

https://github.com/mwitkow/go-http-dialer README explains it:

Some enterprises have fairly restrictive networking environments. They typically operate HTTP forward proxies that require user authentication. These proxies usually allow HTTPS (TCP to :443) to pass through the proxy using the CONNECT method. The CONNECT method is basically a HTTP-negotiated "end-to-end" TCP stream... which is exactly what net.Conn is :)

net/proxy cannot be used here AFAIK because you can't have a dialer that uses TCP over HTTP. The only way to do it is to use a SOCKS5 proxy.

dragonsinth commented 2 years ago

I think I'd be trivially fine with a patch to just change (&net.Dialer{}).DialContext(ctx, network, address) => proxy.Dial(ctx, network, address) which would solve at least some of the cases. But the http dialer stuff seems... very unusual and special case.

savely-krasovsky commented 2 years ago

Release with this patch: https://github.com/L11R/grpcurl/releases/tag/v1.8.8