From b38060dba0273f1981caba4502eb1ffc9f8fac0e Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sun, 25 Nov 2018 16:44:03 +0100 Subject: Allow to override the directory of a request in aptwebserver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The filename can be overridden, but sometimes it is useful to do it only for the directory-part of the filename – e.g. if you want to let a flat archive directory (like /var/cache/apt/archives) serve a pool-based request like /pool/a/apt_version.deb. Gbp-Dch: Ignore --- test/interactive-helper/aptwebserver.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc index 5da715253..109364d7a 100644 --- a/test/interactive-helper/aptwebserver.cc +++ b/test/interactive-helper/aptwebserver.cc @@ -747,9 +747,16 @@ static void * handleClient(int const client, size_t const id) /*{{{*/ } if (regexec(pattern, filename.c_str(), 0, 0, 0) == 0) { - filename = _config->Find("aptwebserver::overwrite::" + I->Tag + "::filename", filename); - if (filename[0] == '/') + filename = _config->Find("aptwebserver::overwrite::" + I->Tag + "::filename", flNotDir(filename)); + if (filename.find("/") == std::string::npos) + { + auto directory = _config->Find("aptwebserver::overwrite::" + I->Tag + "::directory", flNotFile(filename)); + filename = flCombine(directory, filename); + } + if (filename.empty() == false && filename[0] == '/') filename.erase(0,1); + if (filename.empty()) + filename = "./"; regfree(pattern); break; } -- cgit v1.2.3