Merge pull request #1215 from k0001/netrc-1

Add netrc-file support
This commit is contained in:
Eelco Dolstra 2017-02-16 12:45:44 +01:00 committed by GitHub
commit d1139ff36b
2 changed files with 23 additions and 0 deletions

View file

@ -430,6 +430,21 @@ flag, e.g. <literal>--option gc-keep-outputs false</literal>.</para>
</varlistentry> </varlistentry>
<varlistentry><term><literal>netrc-file</literal></term>
<listitem><para>If set to an absolute path to a <filename>netrc</filename>
file, Nix will use the HTTP authentication credentials in this file when
trying to download from a remote host through HTTP or HTTPS. Defaults to
<filename>$NIX_CONF_DIR/netrc</filename>.</para>
<para>The <filename>netrc</filename> file consists of zero or more lines
like: <literal>machine <replaceable>my-machine</replaceable> login
<replaceable>my-username</replaceable> password
<replaceable>my-password</replaceable></literal>.</para></listitem>
</varlistentry>
<varlistentry><term><literal>system</literal></term> <varlistentry><term><literal>system</literal></term>
<listitem><para>This option specifies the canonical Nix system <listitem><para>This option specifies the canonical Nix system

View file

@ -231,6 +231,14 @@ struct CurlDownloader : public Downloader
curl_easy_setopt(req, CURLOPT_SSL_VERIFYHOST, 0); curl_easy_setopt(req, CURLOPT_SSL_VERIFYHOST, 0);
} }
/* If no file exist in the specified path, curl continues to work
* anyway as if netrc support was disabled. */
Path netrcFile = settings.get("netrc-file",
(format("%1%/%2%") % settings.nixConfDir % "netrc").str());
/* Curl copies the given C string, so the following call is safe. */
curl_easy_setopt(req, CURLOPT_NETRC_FILE, netrcFile.c_str());
curl_easy_setopt(req, CURLOPT_NETRC, CURL_NETRC_OPTIONAL);
result.data = std::make_shared<std::string>(); result.data = std::make_shared<std::string>();
} }