X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FProxy.php;h=e0d5716d69cf490fdad9e32a8b58c1fe274fed88;hb=4762476c89fb0aace3c45910c0db0059876091a5;hp=75a1142af6221331ce4715d3a87c7f8988a7c44f;hpb=c9cce8492e5b2607b2a092474d1de4d188b7a2c9;p=friendica.git diff --git a/src/Module/Proxy.php b/src/Module/Proxy.php index 75a1142af6..e0d5716d69 100644 --- a/src/Module/Proxy.php +++ b/src/Module/Proxy.php @@ -1,20 +1,20 @@ + * Based upon "Privacy Image Cache" by Tobias Hößl */ namespace Friendica\Module; use Friendica\BaseModule; -use Friendica\Core\L10n; -use Friendica\Core\System; +use Friendica\Core\Logger; +use Friendica\DI; use Friendica\Model\Photo; use Friendica\Object\Image; use Friendica\Util\HTTPSignature; use Friendica\Util\Proxy as ProxyUtils; /** - * @brief Module Proxy + * Module Proxy * * urls: * /proxy/[sub1/[sub2/]][.ext][:size] @@ -24,15 +24,15 @@ class Proxy extends BaseModule { /** - * @brief Initializer method for this class. + * Initializer method for this class. * * Sets application instance and checks if /proxy/ path is writable. * */ - public static function init() + public static function init(array $parameters = []) { // Set application instance here - $a = self::getApp(); + $a = DI::app(); /* * Pictures are stored in one of the following ways: @@ -92,7 +92,8 @@ class Proxy extends BaseModule $img_str = $fetchResult->getBody(); // If there is an error then return a blank image - if ((substr($fetchResult->getReturnCode(), 0, 1) == '4') || (!$img_str)) { + if ((substr($fetchResult->getReturnCode(), 0, 1) == '4') || empty($img_str)) { + Logger::info('Error fetching image', ['image' => $request['url'], 'return' => $fetchResult->getReturnCode(), 'empty' => empty($img_str)]); self::responseError(); // stop. } @@ -104,6 +105,7 @@ class Proxy extends BaseModule $image = new Image($img_str, $mime); if (!$image->isValid()) { + Logger::info('The image is invalid', ['image' => $request['url'], 'mime' => $mime]); self::responseError(); // stop. } @@ -140,7 +142,7 @@ class Proxy extends BaseModule /** - * @brief Build info about requested image to be proxied + * Build info about requested image to be proxied * * @return array * [ @@ -153,7 +155,7 @@ class Proxy extends BaseModule */ private static function getRequestInfo() { - $a = self::getApp(); + $a = DI::app(); $size = 1024; $sizetype = ''; @@ -207,7 +209,7 @@ class Proxy extends BaseModule $url = base64_decode(strtr($url, '-_', '+/'), true); } else { - $url = defaults($_REQUEST, 'url', ''); + $url = $_REQUEST['url'] ?? ''; } return [ @@ -220,14 +222,14 @@ class Proxy extends BaseModule /** - * @brief setup ./proxy folder for direct cache + * setup ./proxy folder for direct cache * * @return bool False if direct cache can't be used. * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function setupDirectCache() { - $a = self::getApp(); + $a = DI::app(); $basepath = $a->getBasePath(); // If the cache path isn't there, try to create it @@ -245,7 +247,7 @@ class Proxy extends BaseModule /** - * @brief Try to reply with image in cachefile + * Try to reply with image in cachefile * * @param array $request Array from getRequestInfo * @@ -267,7 +269,7 @@ class Proxy extends BaseModule } /** - * @brief Try to reply with image in database + * Try to reply with image in database * * @param array $request Array from getRequestInfo * @@ -287,18 +289,17 @@ class Proxy extends BaseModule } /** - * @brief Output a blank image, without cache headers, in case of errors + * In case of an error just stop. We don't return content to avoid caching problems * + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function responseError() { - header('Content-type: image/png'); - echo file_get_contents('images/blank.png'); - exit(); + throw new \Friendica\Network\HTTPException\InternalServerErrorException(); } /** - * @brief Output the image with cache headers + * Output the image with cache headers * * @param Image $img * @throws \Friendica\Network\HTTPException\InternalServerErrorException @@ -306,6 +307,7 @@ class Proxy extends BaseModule private static function responseImageHttpCache(Image $img) { if (is_null($img) || !$img->isValid()) { + Logger::info('The cached image is invalid'); self::responseError(); // stop. }