function find_md5($filemd5) { $array = HyperCacheMD5File_get($filemd5); if (!is_array($array)) { if ($GLOBALS["VERBOSE"]) { echo "<li>" . __LINE__ . " {$filemd5} No such array</li>"; } if (!$GLOBALS["VERBOSE"]) { header("HTTP/1.0 404 Not Found"); } die; } $filepath = $array["FILEPATH"]; $basename = $array["FILENAME"]; $filesize = $array["FILESIZE"]; $content_type = $array["FILETYPE"]; $FullPath = "{$GLOBALS["HyperCacheStoragePath"]}/{$filepath}"; if (!is_file($FullPath)) { if ($GLOBALS["VERBOSE"]) { echo "<li>" . __LINE__ . " {$FullPath} No such file</li>"; } header("HTTP/1.0 404 Not Found"); die; } $filepath = $array["FILEPATH"]; $basename = $array["FILENAME"]; $filesize = $array["FILESIZE"]; $content_type = $array["FILETYPE"]; $time = $array["time"]; $content_type_NO["text/html"] = true; if ($GLOBALS["VERBOSE"]) { echo "<li>" . __LINE__ . " FILEPATH:{$filepath}</li>"; } if ($GLOBALS["VERBOSE"]) { echo "<li>" . __LINE__ . " FILENAME:{$basename}</li>"; } if ($GLOBALS["VERBOSE"]) { echo "<li>" . __LINE__ . " FILESIZE:{$filesize}</li>"; } if ($GLOBALS["VERBOSE"]) { echo "<li>" . __LINE__ . " FILETYPE:{$content_type}</li>"; } if ($GLOBALS["VERBOSE"]) { die; } header("Content-type: {$content_type}"); if (!isset($content_type_NO[$content_type])) { header('Content-Transfer-Encoding: binary'); header("Content-Disposition: attachment; filename=\"{$basename}\""); } header("Pragma: cache"); header("Cache-Control: public"); header("User-Cache-Control: public"); header("Expires: Sat, 26 Jul 2100 05:00:00 GMT"); header("Content-Length: " . $filesize); ob_clean(); flush(); readfile("{$GLOBALS["HyperCacheStoragePath"]}/{$filepath}"); }
function HyperCacheScanDownload($urikey, $TargetFile, $ID, $FileType) { if (!isset($GLOBALS["SIZE_DOWNLOADED"])) { $GLOBALS["SIZE_DOWNLOADED"] = 0; } if (!isset($GLOBALS["FAILED_DOWNLOADED"])) { $GLOBALS["FAILED_DOWNLOADED"] = 0; } if (!is_numeric($GLOBALS["SIZE_DOWNLOADED"])) { $GLOBALS["SIZE_DOWNLOADED"] = 0; } if (!is_numeric($GLOBALS["FAILED_DOWNLOADED"])) { $GLOBALS["FAILED_DOWNLOADED"] = 0; } $curl = new ccurl($urikey); $FullTarGetPath = $GLOBALS["HyperCacheStoragePath"] . "/" . $TargetFile; $GLOBALS["HITS"]++; $parse_url = parse_url($urikey); $hostname = $parse_url["host"]; $OriginalFile = basename($parse_url["path"]); $t = time(); events("{downloading} {$OriginalFile} {from} {$hostname}", $ID, 3, __LINE__); if (!$curl->GetFile($FullTarGetPath)) { events("HyperCacheScanDownload:: Download failed with error {$curl->error}", $ID, 2, __LINE__); $GLOBALS["FAILED_DOWNLOADED"]++; return false; } $size = @filesize($FullTarGetPath); $MD5File = md5_file($FullTarGetPath); $sizeLog = FormatBytes($size / 1024); events("{$hostname}: {$OriginalFile} ({$sizeLog}) {took}: " . distanceOfTimeInWords($t, time()), $ID, 2, __LINE__); $GLOBALS["SIZE_DOWNLOADED"] = $GLOBALS["SIZE_DOWNLOADED"] + $size; $path = HyperCacheMD5File_get($MD5File); if ($path != null) { if (!HyperCacheRetranslation_set($urikey, $MD5File, $FileType, $path)) { $GLOBALS["FAILED_DOWNLOADED"]++; return; } return; } if (!HyperCacheMD5File_set($MD5File, $TargetFile, $FileType, $size, $OriginalFile)) { $GLOBALS["FAILED_DOWNLOADED"]++; return; } if (!HyperCacheRetranslation_set($urikey, $MD5File, $FileType, $TargetFile)) { $GLOBALS["FAILED_DOWNLOADED"]++; return; } return true; }