From c332c123febaf29b916428b8605d0218bd92d10e Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Mon, 4 Mar 2019 14:54:03 +0100 Subject: [PATCH] Fix handling of absolute url in kiwix-serve. We still need to change the html content to handle absolute url in zims. Issue has been introduced by commit 978dc47. Some code was not related to redirection but to absolute url. I have made a clean a bit too more aggressive. Fix #262 --- src/server/kiwix-serve.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/server/kiwix-serve.cpp b/src/server/kiwix-serve.cpp index 2e21cab..49f4636 100644 --- a/src/server/kiwix-serve.cpp +++ b/src/server/kiwix-serve.cpp @@ -806,8 +806,24 @@ static struct MHD_Response* handle_content(RequestContext* request) zim::Blob raw_content = entry.getBlob(); content = string(raw_content.data(), raw_content.size()); + /* Special rewrite URL in case of ZIM file use intern *asbolute* url like + * /A/Kiwix */ if (mimeType.find("text/html") != string::npos) { + pthread_mutex_lock(®exLock); + content = replaceRegex(content, + "$1$2" + rootLocation + "/" + humanReadableBookId + "/$3/", + "(href|src)(=[\"|\']{0,1})/([A-Z|\\-])/"); + content = replaceRegex(content, + "$1$2" + rootLocation + "/" + humanReadableBookId + "/$3/", + "(@import[ ]+)([\"|\']{0,1})/([A-Z|\\-])/"); + pthread_mutex_unlock(®exLock); introduceTaskbar(content, humanReadableBookId); + } else if (mimeType.find("text/css") != string::npos) { + pthread_mutex_lock(®exLock); + content = replaceRegex(content, + "$1$2" + rootLocation + "/" + humanReadableBookId + "/$3/", + "(url|URL)(\\([\"|\']{0,1})/([A-Z|\\-])/"); + pthread_mutex_unlock(®exLock); } bool deflated