X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fspecials%2FSpecialUploadStash.php;h=c278babd64fd1040a452769a48c64036f7aa3439;hp=abd3e07815db163718fcd296322d2ef37f46bb88;hb=9189db0c50cd4f755efc1d0ce061f6c04b236a40;hpb=26e157d31135fd4c74a7e0544722a69face4d6df diff --git a/includes/specials/SpecialUploadStash.php b/includes/specials/SpecialUploadStash.php index abd3e07815..c278babd64 100644 --- a/includes/specials/SpecialUploadStash.php +++ b/includes/specials/SpecialUploadStash.php @@ -60,7 +60,7 @@ class SpecialUploadStash extends UnlistedSpecialPage { /** * Execute page -- can output a file directly or show a listing of them. * - * @param string $subPage Subpage, e.g. in + * @param string|null $subPage Subpage, e.g. in * https://example.com/wiki/Special:UploadStash/foo.jpg, the "foo.jpg" part * @return bool Success */ @@ -261,12 +261,30 @@ class SpecialUploadStash extends UnlistedSpecialPage { $scalerThumbUrl = $scalerBaseUrl . '/' . $file->getUrlRel() . '/' . rawurlencode( $scalerThumbName ); - // make a curl call to the scaler to create a thumbnail + // If a thumb proxy is set up for the repo, we favor that, as that will + // keep the request internal + $thumbProxyUrl = $file->getRepo()->getThumbProxyUrl(); + + if ( strlen( $thumbProxyUrl ) ) { + $scalerThumbUrl = $thumbProxyUrl . 'temp/' . $file->getUrlRel() . + '/' . rawurlencode( $scalerThumbName ); + } + + // make an http request based on wgUploadStashScalerBaseUrl to lazy-create + // a thumbnail $httpOptions = [ 'method' => 'GET', 'timeout' => 5 // T90599 attempt to time out cleanly ]; $req = MWHttpRequest::factory( $scalerThumbUrl, $httpOptions, __METHOD__ ); + + $secret = $file->getRepo()->getThumbProxySecret(); + + // Pass a secret key shared with the proxied service if any + if ( strlen( $secret ) ) { + $req->setHeader( 'X-Swift-Secret', $secret ); + } + $status = $req->execute(); if ( !$status->isOK() ) { $errors = $status->getErrorsArray(); @@ -304,10 +322,10 @@ class SpecialUploadStash extends UnlistedSpecialPage { ); } - return $file->getRepo()->streamFile( $file->getPath(), + return $file->getRepo()->streamFileWithStatus( $file->getPath(), [ 'Content-Transfer-Encoding: binary', 'Expires: Sun, 17-Jan-2038 19:14:07 GMT' ] - ); + )->isOK(); } /**