X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/32120cde98308448fbcd31cf7841f13a86d3e0a8..988d4f441eb2c7ac64cec339dbc02daa47fe84a4:/cmdline/apt-helper.cc diff --git a/cmdline/apt-helper.cc b/cmdline/apt-helper.cc index e3652d1ee..dd43ea1bc 100644 --- a/cmdline/apt-helper.cc +++ b/cmdline/apt-helper.cc @@ -7,6 +7,7 @@ // Include Files /*{{{*/ #include +#include #include #include #include @@ -15,25 +16,34 @@ #include #include #include +#include #include #include +#include #include -#include -#include -#include -#include -#include -#include - - +#include +#include +#include #include /*}}}*/ -using namespace std; -bool DoDownloadFile(CommandLine &CmdL) +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) return _error->Error(_("Must specify at least one pair url/filename")); @@ -44,38 +54,29 @@ bool DoDownloadFile(CommandLine &CmdL) Fetcher.Setup(&Stat); std::string download_uri = CmdL.FileList[1]; std::string targetfile = CmdL.FileList[2]; - HashString hash; + std::string hash; if (CmdL.FileSize() > 3) - hash = HashString(CmdL.FileList[3]); - new pkgAcqFile(&Fetcher, download_uri, "", 0, "desc", "short-desc", + hash = CmdL.FileList[3]; + // we use download_uri as descr and targetfile as short-descr + new pkgAcqFile(&Fetcher, download_uri, hash, 0, download_uri, targetfile, "dest-dir-ignored", targetfile); Fetcher.Run(); - if (!FileExists(targetfile)) - { - _error->Error(_("Download Failed")); - return false; - } - if(hash.empty() == false) - { - if(hash.VerifyFile(targetfile) == false) - { - _error->Error(_("HashSum Failed")); - Rename(targetfile, targetfile+".failed"); - return false; - } - } + bool Failed = false; + if (AcquireRun(Fetcher, 0, &Failed, NULL) == false || Failed == true || + FileExists(targetfile) == false) + return _error->Error(_("Download Failed")); return true; } -bool ShowHelp(CommandLine &CmdL) +static bool ShowHelp(CommandLine &) { - ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, + ioprintf(std::cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, COMMON_ARCH,__DATE__,__TIME__); if (_config->FindB("version") == true) return true; - cout << + std::cout << _("Usage: apt-helper [options] command\n" " apt-helper [options] download-file uri target-path\n" "\n" @@ -83,6 +84,7 @@ bool ShowHelp(CommandLine &CmdL) "\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; @@ -93,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 Args = getCommandArgs(