mirror of
https://github.com/kiwix/kiwix-js-pwa.git
synced 2025-09-12 22:09:43 -04:00
Deal with Zimit redirects via meta http-equiv
Former-commit-id: 82c579fa4e5b1cf2ed65ba17d3409f1ea2a2ec7b [formerly 2e50f41b937722e61370ee6c972b04d218752cf1] [formerly 5365b9992af91d557518372a59f327dca9cdb48f] [formerly 04d76202b17365fceeb51ab0d61f3f2abc04eac3 [formerly 947201c8614e808a31e380b112cce39f928adaab [formerly 0dfbb7f094280c42564ad19b440bc125c748e0af]]] Former-commit-id: e487169e2bc6c61dd3465ed2b4d7251c8d1ea43f [formerly d6aac0bb5f32cef6150aefd238bb094765dad9ba [formerly 17dc2a0c372f2fa85c7cde45cc15b667d8b3e151]] Former-commit-id: 8abd691802edbc34ccd404c9a3e5f8b705bd9f27 [formerly a058a4c30d4d8272ab3f7ebf06888bc6eb8ffafa] Former-commit-id: 74ab584198139363fc6fbce1a9f5a008403187a6
This commit is contained in:
parent
406a7c4424
commit
d1d12c07bd
@ -75,7 +75,7 @@ define([], function () {
|
||||
function transformReplayUrls(dirEntry, data, mimetype, selectedArchive) {
|
||||
|
||||
// Filter links in html files
|
||||
if (/\bhtml\b/.test(mimetype)) {
|
||||
if (/\bhtml\b/i.test(mimetype)) {
|
||||
var zimitPrefix = data.match(/link\s+rel=["']canonical["']\s+href=(['"])https?:\/\/([^\/]+)(.+?)\1/i);
|
||||
zimitPrefix = zimitPrefix ? zimitPrefix[2] : params.zimitPrefix;
|
||||
var regexpZimitHtmlLinks = /(<(?:a|img|script|link|track|meta)\b[^>]*?[\s;])(?:src|href|url)(=(["']))(?=\/|https?:\/\/)([^>]+)(?=\3|\?|#)([^>]*>)/ig;
|
||||
@ -87,6 +87,8 @@ define([], function () {
|
||||
// For root-relative links, we need to add the zimitPrefix
|
||||
assetUrl = assetUrl.replace(/^\//, dirEntry.namespace + '/' + params.zimitPrefix + '/');
|
||||
assetUrl = assetUrl.replace(/^https?:\/\//i, dirEntry.namespace + '/');
|
||||
// Deal with <meta http-equiv refresh...> directives
|
||||
if (/<meta\s+http-equiv[^>]+refresh\b/i.test(newBlock)) dirEntry.zimitRedirect = assetUrl;
|
||||
newBlock = params.contentInjectionMode === 'serviceworker' && !/^<a\s/i.test(match) ?
|
||||
newBlock.replace(relAssetUrl, '/' + selectedArchive._file.name + '/' + assetUrl) :
|
||||
newBlock.replace(relAssetUrl, '/' + assetUrl);
|
||||
@ -113,15 +115,15 @@ define([], function () {
|
||||
}
|
||||
}
|
||||
|
||||
if (/^text\/css\b/.test(mimetype)) {
|
||||
var regexpZimitCssLinks = /url\s*\(['"\s]*([^)'"]+\s*\))/ig;
|
||||
if (/\b(css|html)\b/i.test(mimetype)) {
|
||||
var regexpZimitCssLinks = /url\s*\(['"\s]*([^)'"\s]+)/ig;
|
||||
data = data.replace(regexpZimitCssLinks, function (match, url) {
|
||||
var newBlock = match;
|
||||
var assetUrl = url.replace(/^\//i, dirEntry.namespace + '/' + params.zimitPrefix + '/');
|
||||
assetUrl = assetUrl.replace(/^https?:\/\//i, dirEntry.namespace + '/');
|
||||
if (assetUrl === url) return match; // If nothing was transformed, return
|
||||
newBlock = params.contentInjectionMode === 'serviceworker' ?
|
||||
newBlock.replace(url, '/' + selectedArchive._file.name + '/' + assetUrl) :
|
||||
newBlock.replace(url, '/' + selectedArchive._file.name + '/' + assetUrl + '?kiwix-display') :
|
||||
newBlock.replace(url, '/' + assetUrl);
|
||||
console.debug('Transform: \n' + match + '\n -> ' + newBlock);
|
||||
return newBlock;
|
||||
|
Loading…
x
Reference in New Issue
Block a user