]> git.wh0rd.org - tt-rss.git/commitdiff
rework image caching to work without permanent article content rewriting (refs #582)
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 19 Mar 2013 05:25:36 +0000 (09:25 +0400)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 19 Mar 2013 05:25:36 +0000 (09:25 +0400)
image.php
include/functions.php
include/rssfuncs.php

index 91490ea226da1eb272db5a99afb494f390df0c6e..cccda64b73380d0336aefedbff33f19a6c0fa0c1 100644 (file)
--- a/image.php
+++ b/image.php
@@ -4,14 +4,35 @@
 
        require_once "config.php";
 
-       $url = base64_decode($_GET['url']);
+       // backwards compatible wrapper for old-style image caching
+       /* if (isset($_GET['url'])) {
+               $url = base64_decode($_GET['url']);
 
-       $filename = CACHE_DIR . '/images/' . sha1($url) . '.png';
+               $filename = CACHE_DIR . '/images/' . sha1($url) . '.png';
 
-       if (file_exists($filename)) {
-               header("Content-type: image/png");
-               echo file_get_contents($filename);
-       } else {
-               header("Location: $url");
+               if (file_exists($filename)) {
+                       header("Content-type: image/png");
+                       echo file_get_contents($filename);
+               } else {
+                       header("Location: $url");
+               }
+
+               return;
+       } */
+
+       @$hash = basename($_GET['hash']);
+
+       if ($hash) {
+
+               $filename = CACHE_DIR . '/images/' . $hash . '.png';
+
+               if (file_exists($filename)) {
+                       header("Content-type: image/png");
+                       echo file_get_contents($filename);
+               } else {
+                       header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
+                       echo "File not found.";
+               }
        }
+
 ?>
index 43a9270eb9516ae2d316a5386b8b72f8743b8e65..a7ac07b5336cf7e8dffa7df2d1aa565506dd4bfa 100644 (file)
                                        $entry->setAttribute('href',
                                                rewrite_relative_url($site_url, $entry->getAttribute('href')));
 
-                               if ($entry->hasAttribute('src'))
-                                       if (preg_match('/^image.php\?i=[a-z0-9]+$/', $entry->getAttribute('src')) == 0)
-                                               $entry->setAttribute('src',
-                                                       rewrite_relative_url($site_url, $entry->getAttribute('src')));
+                               if ($entry->hasAttribute('src')) {
+                                       $src = rewrite_relative_url($site_url, $entry->getAttribute('src'));
+
+                                       $cached_filename = CACHE_DIR . '/images/' . sha1($src) . '.png';
+
+                                       if (file_exists($cached_filename)) {
+                                               $src = SELF_URL_PATH . '/image.php?hash=' . sha1($src);
+                                       }
+
+                                       $entry->setAttribute('src', $src);
+                               }
                        }
 
                        if (strtolower($entry->nodeName) == "a") {
index 1180b0adb662b75de08cf9f55e0796b531f86a83..df1d169860de553b4d495142ff8f0978282ddf66 100644 (file)
                                }
 
                                if ($cache_images && is_writable(CACHE_DIR . '/images'))
-                                       $entry_content = cache_images($entry_content, $site_url, $debug_enabled);
+                                       cache_images($entry_content, $site_url, $debug_enabled);
 
                                $entry_content = db_escape_string($entry_content, false);