X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=image.php;h=dcc7d806d406ec3f3c2beb07839c65e39b88ca2c;hb=880647ba007efca401a41c97cbdc76fedfc36930;hp=91490ea226da1eb272db5a99afb494f390df0c6e;hpb=88e8fb3a7132d1321ab65b66a19a67df890c402d;p=tt-rss.git diff --git a/image.php b/image.php index 91490ea2..dcc7d806 100644 --- a/image.php +++ b/image.php @@ -4,14 +4,49 @@ 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)) { + /* See if we can use X-Sendfile */ + $xsendfile = false; + if (function_exists('apache_get_modules') && + array_search('mod_xsendfile', apache_get_modules())) + $xsendfile = true; + + if ($xsendfile) { + header("X-Sendfile: $filename"); + header("Content-type: application/octet-stream"); + header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); + } else { + header("Content-type: image/png"); + $stamp = gmdate("D, d M Y H:i:s", filemtime($filename)). " GMT"; + header("Last-Modified: $stamp", true); + readfile($filename); + } + } else { + header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); + echo "File not found."; + } } + ?>