diff options
author | Michael Vogt <mvo@ubuntu.com> | 2014-09-02 15:50:19 +0200 |
---|---|---|
committer | Michael Vogt <mvo@ubuntu.com> | 2014-09-02 16:02:37 +0200 |
commit | c6ee61eab54edf6cc3fbe118d304d72a860e1451 (patch) | |
tree | 8ca7fdffd4bc257fd5f90bbb3941e1ff351cca9c /cmdline | |
parent | fb4c76436a88a04d1d9b7e9622e431ed8ab708a6 (diff) | |
download | apt-c6ee61eab54edf6cc3fbe118d304d72a860e1451.tar.gz |
Make Proxy-Auto-Detect check for each host
When doing Acquire::http{,s}::Proxy-Auto-Detect, run the auto-detect
command for each host instead of only once. This should make using
"proxy" from libproxy-tools feasible which can then be used for PAC
style or other proxy configurations.
Closes: #759264
Diffstat (limited to 'cmdline')
-rw-r--r-- | cmdline/apt-helper.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/cmdline/apt-helper.cc b/cmdline/apt-helper.cc index b0edafcbd..dd43ea1bc 100644 --- a/cmdline/apt-helper.cc +++ b/cmdline/apt-helper.cc @@ -16,6 +16,7 @@ #include <apt-pkg/fileutl.h> #include <apt-pkg/acquire.h> #include <apt-pkg/acquire-item.h> +#include <apt-pkg/proxy.h> #include <apt-private/acqprogress.h> #include <apt-private/private-output.h> @@ -29,6 +30,19 @@ #include <apti18n.h> /*}}}*/ +static bool DoAutoDetectProxy(CommandLine &CmdL) +{ + if (CmdL.FileSize() != 2) + return _error->Error(_("Need one URL as argument")); + URI ServerURL(CmdL.FileList[1]); + AutoDetectProxy(ServerURL); + std::string SpecificProxy = _config->Find("Acquire::"+ServerURL.Access+"::Proxy::" + ServerURL.Host); + ioprintf(std::cout, "Using proxy '%s' for URL '%s'\n", + SpecificProxy.c_str(), std::string(ServerURL).c_str()); + + return true; +} + static bool DoDownloadFile(CommandLine &CmdL) { if (CmdL.FileSize() <= 2) @@ -70,6 +84,7 @@ static bool ShowHelp(CommandLine &) "\n" "Commands:\n" " download-file - download the given uri to the target-path\n" + " auto-detect-proxy - detect proxy using apt.conf\n" "\n" " This APT helper has Super Meep Powers.\n"); return true; @@ -80,6 +95,7 @@ int main(int argc,const char *argv[]) /*{{{*/ { CommandLine::Dispatch Cmds[] = {{"help",&ShowHelp}, {"download-file", &DoDownloadFile}, + {"auto-detect-proxy", &DoAutoDetectProxy}, {0,0}}; std::vector<CommandLine::Args> Args = getCommandArgs( |