<?php
- set_include_path(get_include_path() . PATH_SEPARATOR .
- dirname(__FILE__) . "/include");
+ set_include_path(dirname(__FILE__) ."/include" . PATH_SEPARATOR .
+ get_include_path());
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);
+ ob_clean(); // discard any data in the output buffer (if possible)
+ flush(); // flush headers (if possible)
+ readfile($filename);
+ }
+ } else {
+ header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
+ echo "File not found.";
+ }
}
+
?>