mirror of
https://github.com/nextcloud/server.git
synced 2026-05-19 08:25:56 -04:00
Merge pull request #47698 from nextcloud/backport/47627/stable27
[stable27] [LinkReferenceProvider] Better size check
This commit is contained in:
commit
97135ee82e
1 changed files with 14 additions and 4 deletions
|
|
@ -113,7 +113,7 @@ class LinkReferenceProvider implements IReferenceProvider {
|
|||
}
|
||||
$linkContentLength = $headResponse->getHeader('Content-Length');
|
||||
if (is_numeric($linkContentLength) && (int) $linkContentLength > 5 * 1024 * 1024) {
|
||||
$this->logger->debug('Skip resolving links pointing to content length > 5 MB');
|
||||
$this->logger->debug('[Head] Skip resolving links pointing to content length > 5 MiB');
|
||||
return;
|
||||
}
|
||||
$linkContentType = $headResponse->getHeader('Content-Type');
|
||||
|
|
@ -126,18 +126,28 @@ class LinkReferenceProvider implements IReferenceProvider {
|
|||
return;
|
||||
}
|
||||
try {
|
||||
$response = $client->get($reference->getId(), [ 'timeout' => 10 ]);
|
||||
$response = $client->get($reference->getId(), [ 'timeout' => 10, 'stream' => true ]);
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->debug('Failed to fetch link for obtaining open graph data', ['exception' => $e]);
|
||||
return;
|
||||
}
|
||||
|
||||
$responseBody = (string)$response->getBody();
|
||||
$body = $response->getBody();
|
||||
if (is_resource($body)) {
|
||||
$responseContent = fread($body, 5 * 1024 * 1024);
|
||||
if (!feof($body)) {
|
||||
$this->logger->debug('[Get] Skip resolving links pointing to content length > 5 MiB');
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
$this->logger->error('[Get] Impossible to check content length');
|
||||
return;
|
||||
}
|
||||
|
||||
// OpenGraph handling
|
||||
$consumer = new Consumer();
|
||||
$consumer->useFallbackMode = true;
|
||||
$object = $consumer->loadHtml($responseBody);
|
||||
$object = $consumer->loadHtml($responseContent);
|
||||
|
||||
$reference->setUrl($reference->getId());
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue