From 788a8f42c1ec146c812550d076e5fb720e83ae52 Mon Sep 17 00:00:00 2001 From: "Eugene V. Lyubimkin" Date: Mon, 15 Dec 2008 21:17:39 +0200 Subject: Make apt proxy options have the highest priority, unified proxy determining code. --- methods/ftp.cc | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'methods/ftp.cc') diff --git a/methods/ftp.cc b/methods/ftp.cc index 554a24cf5..c91600ad5 100644 --- a/methods/ftp.cc +++ b/methods/ftp.cc @@ -112,23 +112,28 @@ bool FTPConn::Open(pkgAcqMethod *Owner) Close(); // Determine the proxy setting - if (getenv("ftp_proxy") == 0) + string SpecificProxy = _config->Find("Acquire::ftp::Proxy::" + ServerName.Host); + if (!SpecificProxy.empty()) { - string DefProxy = _config->Find("Acquire::ftp::Proxy"); - string SpecificProxy = _config->Find("Acquire::ftp::Proxy::" + ServerName.Host); - if (SpecificProxy.empty() == false) - { - if (SpecificProxy == "DIRECT") - Proxy = ""; - else - Proxy = SpecificProxy; - } - else - Proxy = DefProxy; + if (SpecificProxy == "DIRECT") + Proxy = ""; + else + Proxy = SpecificProxy; } else - Proxy = getenv("ftp_proxy"); - + { + string DefProxy = _config->Find("Acquire::ftp::Proxy"); + if (!DefProxy.empty()) + { + Proxy = DefProxy; + } + else + { + char* result = getenv("ftp_proxy"); + Proxy = result ? result : ""; + } + } + // Parse no_proxy, a , separated list of domains if (getenv("no_proxy") != 0) { -- cgit v1.2.3-70-g09d2 From 1de1f70383ea2d44147ccaceff280fd70faf4c81 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 16 Oct 2009 15:42:05 +0200 Subject: add maybe_add_auth for ftp as well --- methods/ftp.cc | 4 +++- methods/http.cc | 2 +- methods/https.cc | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) (limited to 'methods/ftp.cc') diff --git a/methods/ftp.cc b/methods/ftp.cc index c91600ad5..eb398666f 100644 --- a/methods/ftp.cc +++ b/methods/ftp.cc @@ -982,7 +982,9 @@ bool FtpMethod::Fetch(FetchItem *Itm) FetchResult Res; Res.Filename = Itm->DestFile; Res.IMSHit = false; - + + maybe_add_auth (Get, _config->FindFile("Dir::Etc::netrc")); + // Connect to the server if (Server == 0 || Server->Comp(Get) == false) { diff --git a/methods/http.cc b/methods/http.cc index 6bfe80baf..50478b44c 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -725,9 +725,9 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) Req += string("Proxy-Authorization: Basic ") + Base64Encode(Proxy.User + ":" + Proxy.Password) + "\r\n"; + maybe_add_auth (Uri, _config->FindFile("Dir::Etc::netrc")); if (Uri.User.empty() == false || Uri.Password.empty() == false) { - maybe_add_auth (Uri, _config->FindFile("Dir::Etc::netrc")); Req += string("Authorization: Basic ") + Base64Encode(Uri.User + ":" + Uri.Password) + "\r\n"; } diff --git a/methods/https.cc b/methods/https.cc index a86c78029..075d655b7 100644 --- a/methods/https.cc +++ b/methods/https.cc @@ -127,7 +127,7 @@ bool HttpsMethod::Fetch(FetchItem *Itm) curl_easy_reset(curl); SetupProxy(); - maybe_add_auth (Uri, _config->FindFile("Dir::ETc::netrc")); + maybe_add_auth (Uri, _config->FindFile("Dir::Etc::netrc")); // callbacks curl_easy_setopt(curl, CURLOPT_URL, Itm->Uri.c_str()); -- cgit v1.2.3-70-g09d2 From f1c081b6ad0c5925e9668fd159f1ac6d8ab672bc Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 16 Oct 2009 16:04:41 +0200 Subject: add ftp support, basic debugging --- apt-pkg/contrib/netrc.cc | 5 +++- doc/examples/configure-index | 1 + methods/ftp.cc | 1 + po/apt-all.pot | 68 ++++++++++++++++++++++---------------------- 4 files changed, 40 insertions(+), 35 deletions(-) (limited to 'methods/ftp.cc') diff --git a/apt-pkg/contrib/netrc.cc b/apt-pkg/contrib/netrc.cc index 851b661a4..186527306 100644 --- a/apt-pkg/contrib/netrc.cc +++ b/apt-pkg/contrib/netrc.cc @@ -12,6 +12,7 @@ ##################################################################### */ /*}}}*/ +#include #include #include #include @@ -146,7 +147,9 @@ int parsenetrc (char *host, char *login, char *password, char *netrcfile = NULL) void maybe_add_auth (URI &Uri, string NetRCFile) { - if (Uri.Password.empty () == true && Uri.User.empty () == true) + if (_config->FindB("Debug::Acquire::netrc", false) == true) + std::clog << "maybe_add_auth: " << NetRCFile << std::endl; + if (Uri.Password.empty () == true || Uri.User.empty () == true) { if (NetRCFile.empty () == false) { diff --git a/doc/examples/configure-index b/doc/examples/configure-index index 3c236d7d9..fc2bede4e 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -365,6 +365,7 @@ Debug Acquire::gpgv "false"; // Show the gpgv traffic aptcdrom "false"; // Show found package files IdentCdrom "false"; + acquire::netrc "false"; // netrc parser } diff --git a/methods/ftp.cc b/methods/ftp.cc index eb398666f..3e1725823 100644 --- a/methods/ftp.cc +++ b/methods/ftp.cc @@ -19,6 +19,7 @@ #include #include #include +#include #include #include diff --git a/po/apt-all.pot b/po/apt-all.pot index ec2e73a13..b05e180c1 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -989,7 +989,7 @@ msgstr "" msgid "Calculating upgrade... " msgstr "" -#: cmdline/apt-get.cc:1897 methods/ftp.cc:707 methods/connect.cc:112 +#: cmdline/apt-get.cc:1897 methods/ftp.cc:708 methods/connect.cc:112 msgid "Failed" msgstr "" @@ -1566,147 +1566,147 @@ msgid "Invalid URI, local URIS must not start with //" msgstr "" #. Login must be before getpeername otherwise dante won't work. -#: methods/ftp.cc:167 +#: methods/ftp.cc:168 msgid "Logging in" msgstr "" -#: methods/ftp.cc:173 +#: methods/ftp.cc:174 msgid "Unable to determine the peer name" msgstr "" -#: methods/ftp.cc:178 +#: methods/ftp.cc:179 msgid "Unable to determine the local name" msgstr "" -#: methods/ftp.cc:209 methods/ftp.cc:237 +#: methods/ftp.cc:210 methods/ftp.cc:238 #, c-format msgid "The server refused the connection and said: %s" msgstr "" -#: methods/ftp.cc:215 +#: methods/ftp.cc:216 #, c-format msgid "USER failed, server said: %s" msgstr "" -#: methods/ftp.cc:222 +#: methods/ftp.cc:223 #, c-format msgid "PASS failed, server said: %s" msgstr "" -#: methods/ftp.cc:242 +#: methods/ftp.cc:243 msgid "" "A proxy server was specified but no login script, Acquire::ftp::ProxyLogin " "is empty." msgstr "" -#: methods/ftp.cc:270 +#: methods/ftp.cc:271 #, c-format msgid "Login script command '%s' failed, server said: %s" msgstr "" -#: methods/ftp.cc:296 +#: methods/ftp.cc:297 #, c-format msgid "TYPE failed, server said: %s" msgstr "" -#: methods/ftp.cc:334 methods/ftp.cc:445 methods/rsh.cc:183 methods/rsh.cc:226 +#: methods/ftp.cc:335 methods/ftp.cc:446 methods/rsh.cc:183 methods/rsh.cc:226 msgid "Connection timeout" msgstr "" -#: methods/ftp.cc:340 +#: methods/ftp.cc:341 msgid "Server closed the connection" msgstr "" -#: methods/ftp.cc:343 apt-pkg/contrib/fileutl.cc:541 methods/rsh.cc:190 +#: methods/ftp.cc:344 apt-pkg/contrib/fileutl.cc:541 methods/rsh.cc:190 msgid "Read error" msgstr "" -#: methods/ftp.cc:350 methods/rsh.cc:197 +#: methods/ftp.cc:351 methods/rsh.cc:197 msgid "A response overflowed the buffer." msgstr "" -#: methods/ftp.cc:367 methods/ftp.cc:379 +#: methods/ftp.cc:368 methods/ftp.cc:380 msgid "Protocol corruption" msgstr "" -#: methods/ftp.cc:451 apt-pkg/contrib/fileutl.cc:580 methods/rsh.cc:232 +#: methods/ftp.cc:452 apt-pkg/contrib/fileutl.cc:580 methods/rsh.cc:232 msgid "Write error" msgstr "" -#: methods/ftp.cc:692 methods/ftp.cc:698 methods/ftp.cc:734 +#: methods/ftp.cc:693 methods/ftp.cc:699 methods/ftp.cc:735 msgid "Could not create a socket" msgstr "" -#: methods/ftp.cc:703 +#: methods/ftp.cc:704 msgid "Could not connect data socket, connection timed out" msgstr "" -#: methods/ftp.cc:709 +#: methods/ftp.cc:710 msgid "Could not connect passive socket." msgstr "" -#: methods/ftp.cc:727 +#: methods/ftp.cc:728 msgid "getaddrinfo was unable to get a listening socket" msgstr "" -#: methods/ftp.cc:741 +#: methods/ftp.cc:742 msgid "Could not bind a socket" msgstr "" -#: methods/ftp.cc:745 +#: methods/ftp.cc:746 msgid "Could not listen on the socket" msgstr "" -#: methods/ftp.cc:752 +#: methods/ftp.cc:753 msgid "Could not determine the socket's name" msgstr "" -#: methods/ftp.cc:784 +#: methods/ftp.cc:785 msgid "Unable to send PORT command" msgstr "" -#: methods/ftp.cc:794 +#: methods/ftp.cc:795 #, c-format msgid "Unknown address family %u (AF_*)" msgstr "" -#: methods/ftp.cc:803 +#: methods/ftp.cc:804 #, c-format msgid "EPRT failed, server said: %s" msgstr "" -#: methods/ftp.cc:823 +#: methods/ftp.cc:824 msgid "Data socket connect timed out" msgstr "" -#: methods/ftp.cc:830 +#: methods/ftp.cc:831 msgid "Unable to accept connection" msgstr "" -#: methods/ftp.cc:869 methods/http.cc:999 methods/rsh.cc:303 +#: methods/ftp.cc:870 methods/http.cc:999 methods/rsh.cc:303 msgid "Problem hashing file" msgstr "" -#: methods/ftp.cc:882 +#: methods/ftp.cc:883 #, c-format msgid "Unable to fetch file, server said '%s'" msgstr "" -#: methods/ftp.cc:897 methods/rsh.cc:322 +#: methods/ftp.cc:898 methods/rsh.cc:322 msgid "Data socket timed out" msgstr "" -#: methods/ftp.cc:927 +#: methods/ftp.cc:928 #, c-format msgid "Data transfer failed, server said '%s'" msgstr "" #. Get the files information -#: methods/ftp.cc:1002 +#: methods/ftp.cc:1005 msgid "Query" msgstr "" -#: methods/ftp.cc:1114 +#: methods/ftp.cc:1117 msgid "Unable to invoke " msgstr "" -- cgit v1.2.3-70-g09d2