Actions
Bug #91767
closedServerResponseCheck doesn't use TYPO3 HTTP config for GuzzleHttp Client
Start date:
Due date:
% Done:
0%
Estimated time:
TYPO3 Version:
9
PHP Version:
Tags:
Complexity:
easy
Is Regression:
Sprint Focus:
Description
The class sysext/install/Classes/SystemEnvironment/ServerResponse/ServerResponseCheck.php create a plain GuzzleHttp\Client class without to take $GLOBALS['TYPO3_CONF_VARS']['HTTP'] into account.
When f.e. a proxy server for requests is defined, this one isn't used.
Affected versions: current 9.5 and 10.4
The crucial code lines are:
$client = new Client(['base_uri' => $this->baseUrl]);
foreach ($this->fileDeclarations as $fileDeclaration) {
$promises[] = $client->requestAsync('GET', $fileDeclaration->getFileName());
}
https://github.com/TYPO3/TYPO3.CMS/blob/dcac1c70440ed1ac1dd95cfc37b25589979d2c64/typo3/sysext/install/Classes/SystemEnvironment/ServerResponse/ServerResponseCheck.php#L177-L180
A possible fix (inspired by sysext/core/Classes/Http/RequestFactory.php), which worked for me:
$httpOptions = $GLOBALS['TYPO3_CONF_VARS']['HTTP'];
$httpOptions['verify'] = filter_var($httpOptions['verify'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ?? $httpOptions['verify'];
$httpOptions['base_uri'] = $this->baseUrl;
$client = GeneralUtility::makeInstance(Client::class, $httpOptions);
foreach ($this->fileDeclarations as $fileDeclaration) {
$promises[] = $client->requestAsync('GET', $fileDeclaration->getFileName());
}
ServerResponseCheck was introduced in #91354
Actions