X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FProxy.php;h=54870abe055469e20e715b269281644d539b5de3;hb=1b339547f304430b40e3178d9e2a9379ac11cbd1;hp=3df90c53564e0c424d671a4c81210b4a87d7d7e1;hpb=3282ce53894b624893ee2989747a59866ab4b137;p=friendica.git diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index 3df90c5356..54870abe05 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -5,17 +5,14 @@ */ namespace Friendica\Module; -use Friendica\App; use Friendica\BaseModule; -use Friendica\Core\Config; use Friendica\Core\L10n; use Friendica\Core\System; -use Friendica\Database\DBA; use Friendica\Model\Photo; use Friendica\Object\Image; -use Friendica\Util\DateTimeFormat; -use Friendica\Util\Network; +use Friendica\Util\HTTPSignature; use Friendica\Util\Proxy as ProxyUtils; +use Friendica\Core\Logger; /** * @brief Module Proxy @@ -85,38 +82,35 @@ class Proxy extends BaseModule // Try to use photo from db self::responseFromDB($request); - // // If script is here, the requested url has never cached before. // Let's fetch it, scale it if required, then save it in cache. // - // It shouldn't happen but it does - spaces in URL $request['url'] = str_replace(' ', '+', $request['url']); - $redirects = 0; - $fetchResult = Network::fetchUrlFull($request['url'], true, $redirects, 10); + $fetchResult = HTTPSignature::fetchRaw($request['url'], local_user(), true, ['timeout' => 10]); $img_str = $fetchResult->getBody(); - $tempfile = tempnam(get_temppath(), 'cache'); - file_put_contents($tempfile, $img_str); - $mime = mime_content_type($tempfile); - unlink($tempfile); - // If there is an error then return a blank image if ((substr($fetchResult->getReturnCode(), 0, 1) == '4') || (!$img_str)) { - self::responseError($request); + self::responseError(); // stop. } + $tempfile = tempnam(get_temppath(), 'cache'); + file_put_contents($tempfile, $img_str); + $mime = mime_content_type($tempfile); + unlink($tempfile); + $image = new Image($img_str, $mime); if (!$image->isValid()) { - self::responseError($request); + self::responseError(); // stop. } - + $basepath = $a->getBasePath(); - + // Store original image if ($direct_cache) { // direct cache , store under ./proxy/ @@ -161,11 +155,9 @@ class Proxy extends BaseModule private static function getRequestInfo() { $a = self::getApp(); - $url = ''; $size = 1024; $sizetype = ''; - - + // Look for filename in the arguments if (($a->argc > 1) && !isset($_REQUEST['url'])) { if (isset($a->argv[3])) { @@ -216,7 +208,7 @@ class Proxy extends BaseModule } else { $url = defaults($_REQUEST, 'url', ''); } - + return [ 'url' => $url, 'urlhash' => 'pic:' . sha1($url), @@ -244,9 +236,9 @@ class Proxy extends BaseModule // Checking if caching into a folder in the webroot is activated and working $direct_cache = (is_dir($basepath . '/proxy') && is_writable($basepath . '/proxy')); - // we don't use direct cache if image url is passed in args and not in querystring + // we don't use direct cache if image url is passed in args and not in querystring $direct_cache = $direct_cache && ($a->argc > 1) && !isset($_REQUEST['url']); - + return $direct_cache; } @@ -282,8 +274,8 @@ class Proxy extends BaseModule * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - private static function responseFromDB(&$request) { - + private static function responseFromDB(&$request) + { $photo = Photo::getPhoto($request['urlhash']); if ($photo !== false) { @@ -292,13 +284,14 @@ class Proxy extends BaseModule // stop. } } - + /** * @brief Output a blank image, without cache headers, in case of errors * */ - private static function responseError() { - header('Content-type: ' . $img->getType()); + private static function responseError() + { + header('Content-type: image/png'); echo file_get_contents('images/blank.png'); exit(); } @@ -324,5 +317,3 @@ class Proxy extends BaseModule exit(); } } - -