summaryrefslogtreecommitdiff
path: root/test/interactive-helper/aptwebserver.cc
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2013-06-15 23:58:12 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2013-06-20 10:53:58 +0200
commit7ea27d2a6d10ee41f8fca5d8ad7373c8b3d90ea9 (patch)
tree13603db5391c0f85b0d247b02092391e4b56b76b /test/interactive-helper/aptwebserver.cc
parent0aec7d5c2f6fd55301bd1e1ed35ab7a23fd2357e (diff)
simple URI rewrite rules config for webserver
we have a test which required traditionally lighttpd to be executed as it requires a webserver supporting some kind of URI rewriting. Now with some lines of code our own webserver can do this and the testcase can be enabled by default. This test hinted at the bug fixed in the previous commit, so having more tests which can easily be run is a good thing. Git-Dch: Ignore
Diffstat (limited to 'test/interactive-helper/aptwebserver.cc')
-rw-r--r--test/interactive-helper/aptwebserver.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc
index d25f50624..de235fa05 100644
--- a/test/interactive-helper/aptwebserver.cc
+++ b/test/interactive-helper/aptwebserver.cc
@@ -420,6 +420,22 @@ int main(int const argc, const char * argv[])
continue;
}
+ // string replacements in the requested filename
+ ::Configuration::Item const *Replaces = _config->Tree("aptwebserver::redirect::replace");
+ if (Replaces != NULL)
+ {
+ std::string redirect = "/" + filename;
+ for (::Configuration::Item *I = Replaces->Child; I != NULL; I = I->Next)
+ redirect = SubstVar(redirect, I->Tag, I->Value);
+ redirect.erase(0,1);
+ if (redirect != filename)
+ {
+ sendRedirect(client, 301, redirect, *m, sendContent);
+ continue;
+ }
+ }
+
+ // deal with the request
if (RealFileExists(filename) == true)
{
FileFd data(filename, FileFd::ReadOnly);