socks: support unix sockets for socks proxy

Usage:
  curl -x "socks5h://localhost/run/tor/socks" "https://example.com"

Updated runtests.pl to run a socksd server listening on unix socket

Added tests test1467 test1468

Added documentation for proxy command line option and socks proxy
options

Closes #8668
This commit is contained in:
Balakrishnan Balasubramanian 2022-05-19 15:33:22 +02:00 committed by Daniel Stenberg
parent ee52bead4d
commit dfa84a0450
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
12 changed files with 240 additions and 23 deletions

View file

@ -14,6 +14,9 @@ specified or http:// will be treated as HTTP proxy. Use socks4://, socks4a://,
socks5:// or socks5h:// to request a specific SOCKS version to be used.
(Added in 7.21.7)
Unix domain sockets are supported for socks proxy. Set localhost for the host
part. e.g. socks5h://localhost/path/to/socket.sock
HTTPS proxy support via https:// protocol prefix was added in 7.52.0 for
OpenSSL, GnuTLS and NSS.

View file

@ -10,6 +10,9 @@ Use the specified SOCKS4 proxy. If the port number is not specified, it is
assumed at port 1080. Using this socket type make curl resolve the host name
and passing the address on to the proxy.
To specify proxy on a unix domain socket, use localhost for host, e.g.
socks4://localhost/path/to/socket.sock
This option overrides any previous use of --proxy, as they are mutually
exclusive.

View file

@ -9,6 +9,9 @@ See-also: socks4 socks5 socks5-hostname
Use the specified SOCKS4a proxy. If the port number is not specified, it is
assumed at port 1080. This asks the proxy to resolve the host name.
To specify proxy on a unix domain socket, use localhost for host, e.g.
socks4a://localhost/path/to/socket.sock
This option overrides any previous use of --proxy, as they are mutually
exclusive.

View file

@ -9,6 +9,9 @@ See-also: socks5 socks4a
Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
the port number is not specified, it is assumed at port 1080.
To specify proxy on a unix domain socket, use localhost for host, e.g.
socks5h://localhost/path/to/socket.sock
This option overrides any previous use of --proxy, as they are mutually
exclusive.

View file

@ -9,6 +9,9 @@ See-also: socks5-hostname socks4a
Use the specified SOCKS5 proxy - but resolve the host name locally. If the
port number is not specified, it is assumed at port 1080.
To specify proxy on a unix domain socket, use localhost for host, e.g.
socks5://localhost/path/to/socket.sock
This option overrides any previous use of --proxy, as they are mutually
exclusive.

View file

@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@ -73,6 +73,9 @@ use of a proxy, even if there is an environment variable set for it.
A proxy host string can also include protocol scheme (http://) and embedded
user + password.
Unix domain sockets are supported for socks proxies since 7.84.0. Set
localhost for the host part. e.g. socks5h://localhost/path/to/socket.sock
The application does not have to keep the string around after setting this
option.
.SH "Environment variables"