From d93cecbf5b1fd8d7315d5586f30a1c1aac24c750 Mon Sep 17 00:00:00 2001 From: des Date: Sun, 29 Nov 2015 14:26:59 +0000 Subject: Use .netrc for HTTP sites and proxies, not just FTP. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR: 193740 Submitted by: TEUBEL György MFC after: 1 week --- lib/libfetch/fetch.3 | 6 +++--- lib/libfetch/http.c | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'lib/libfetch') diff --git a/lib/libfetch/fetch.3 b/lib/libfetch/fetch.3 index 53a4e42..0ad9166 100644 --- a/lib/libfetch/fetch.3 +++ b/lib/libfetch/fetch.3 @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 25, 2015 +.Dd November 29, 2015 .Dt FETCH 3 .Os .Sh NAME @@ -631,11 +631,11 @@ If defined but empty, no User-Agent header is sent. .It Ev NETRC Specifies a file to use instead of .Pa ~/.netrc -to look up login names and passwords for FTP sites. +to look up login names and passwords for FTP and HTTP sites as well as +HTTP proxies. See .Xr ftp 1 for a description of the file format. -This feature is experimental. .It Ev NO_PROXY Either a single asterisk, which disables the use of proxies altogether, or a comma- or whitespace-separated list of hosts for diff --git a/lib/libfetch/http.c b/lib/libfetch/http.c index f6a7454..f678b36 100644 --- a/lib/libfetch/http.c +++ b/lib/libfetch/http.c @@ -1658,6 +1658,9 @@ http_request_body(struct url *URL, const char *op, struct url_stat *us, http_seterr(HTTP_NEED_PROXY_AUTH); goto ouch; } + } else if (fetch_netrc_auth(purl) == 0) { + aparams.user = strdup(purl->user); + aparams.password = strdup(purl->pwd); } http_authorize(conn, "Proxy-Authorization", &proxy_challenges, &aparams, url); @@ -1685,6 +1688,11 @@ http_request_body(struct url *URL, const char *op, struct url_stat *us, http_seterr(HTTP_NEED_AUTH); goto ouch; } + } else if (fetch_netrc_auth(url) == 0) { + aparams.user = url->user ? + strdup(url->user) : strdup(""); + aparams.password = url->pwd ? + strdup(url->pwd) : strdup(""); } else if (fetchAuthMethod && fetchAuthMethod(url) == 0) { aparams.user = strdup(url->user); -- cgit v1.1