From 0442cbb6c16e22cf172ade58d675c1e2001646d1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 4 Feb 2017 11:32:24 +0300 Subject: [PATCH] image cache: send files as content-disposition: attachment; add .png suffix to image urls --- classes/handler/public.php | 4 +++- include/functions2.php | 29 +++++++++++++++-------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/classes/handler/public.php b/classes/handler/public.php index a516b6c5c..0fc8476c7 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -1051,9 +1051,11 @@ class Handler_Public extends Handler { if ($hash) { - $filename = CACHE_DIR . '/images/' . $hash . '.png'; + $filename = CACHE_DIR . '/images/' . $hash; if (file_exists($filename)) { + header("Content-Disposition: attachment; filename=\"".basename($filename)."\""); + /* See if we can use X-Sendfile */ $xsendfile = false; if (function_exists('apache_get_modules') && diff --git a/include/functions2.php b/include/functions2.php index b8eff56d2..2b34f287c 100644 --- a/include/functions2.php +++ b/include/functions2.php @@ -903,27 +903,28 @@ $entry->setAttribute('rel', 'noopener noreferrer'); } - if ($entry->hasAttribute('src')) { - $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); + if ($entry->nodeName == 'img') { - $cached_filename = CACHE_DIR . '/images/' . sha1($src) . '.png'; + if ($entry->hasAttribute('src')) { + $src = rewrite_relative_url($site_url, $entry->getAttribute('src')); - if (file_exists($cached_filename)) { - $src = SELF_URL_PATH . '/public.php?op=cached_image&hash=' . sha1($src); + $cached_filename = CACHE_DIR . '/images/' . sha1($src) . '.png'; - if ($entry->hasAttribute('srcset')) { - $entry->removeAttribute('srcset'); + if (file_exists($cached_filename)) { + $src = SELF_URL_PATH . '/public.php?op=cached_image&hash=' . sha1($src) . '.png'; + + if ($entry->hasAttribute('srcset')) { + $entry->removeAttribute('srcset'); + } + + if ($entry->hasAttribute('sizes')) { + $entry->removeAttribute('sizes'); + } } - if ($entry->hasAttribute('sizes')) { - $entry->removeAttribute('sizes'); - } + $entry->setAttribute('src', $src); } - $entry->setAttribute('src', $src); - } - - if ($entry->nodeName == 'img') { if ($entry->hasAttribute('src')) { $is_https_url = parse_url($entry->getAttribute('src'), PHP_URL_SCHEME) === 'https';