delay creation of the cert bundle

fixes #18148

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
Arthur Schiwon 2019-11-28 13:56:35 +01:00
parent a66667c739
commit 0f0cabafd6
No known key found for this signature in database
GPG Key ID: 7424F1874854DF23
1 changed files with 17 additions and 11 deletions

View File

@ -34,7 +34,6 @@
namespace OC\Files\Storage; namespace OC\Files\Storage;
use Exception; use Exception;
use GuzzleHttp\Exception\RequestException;
use OCP\ILogger; use OCP\ILogger;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Icewind\Streams\CallbackWrapper; use Icewind\Streams\CallbackWrapper;
@ -46,6 +45,8 @@ use OCP\Constants;
use OCP\Files\FileInfo; use OCP\Files\FileInfo;
use OCP\Files\StorageInvalidException; use OCP\Files\StorageInvalidException;
use OCP\Files\StorageNotAvailableException; use OCP\Files\StorageNotAvailableException;
use OCP\Http\Client\IClientService;
use OCP\ICertificateManager;
use OCP\Util; use OCP\Util;
use Sabre\DAV\Client; use Sabre\DAV\Client;
use Sabre\DAV\Xml\Property\ResourceType; use Sabre\DAV\Xml\Property\ResourceType;
@ -78,8 +79,10 @@ class DAV extends Common {
protected $client; protected $client;
/** @var ArrayCache */ /** @var ArrayCache */
protected $statCache; protected $statCache;
/** @var \OCP\Http\Client\IClientService */ /** @var IClientService */
protected $httpClientService; protected $httpClientService;
/** @var ICertificateManager */
protected $certManager;
/** /**
* @param array $params * @param array $params
@ -110,13 +113,9 @@ class DAV extends Common {
} }
if ($this->secure === true) { if ($this->secure === true) {
// inject mock for testing // inject mock for testing
$certManager = \OC::$server->getCertificateManager(); $this->certManager = \OC::$server->getCertificateManager();
if (is_null($certManager)) { //no user if (is_null($this->certManager)) { //no user
$certManager = \OC::$server->getCertificateManager(null); $this->certManager = \OC::$server->getCertificateManager(null);
}
$certPath = $certManager->getAbsoluteBundlePath();
if (file_exists($certPath)) {
$this->certPath = $certPath;
} }
} }
$this->root = $params['root'] ?? '/'; $this->root = $params['root'] ?? '/';
@ -149,8 +148,15 @@ class DAV extends Common {
$this->client = new Client($settings); $this->client = new Client($settings);
$this->client->setThrowExceptions(true); $this->client->setThrowExceptions(true);
if ($this->secure === true && $this->certPath) {
$this->client->addCurlSetting(CURLOPT_CAINFO, $this->certPath); if($this->secure === true) {
$certPath = $this->certManager->getAbsoluteBundlePath();
if (file_exists($certPath)) {
$this->certPath = $certPath;
}
if ($this->certPath) {
$this->client->addCurlSetting(CURLOPT_CAINFO, $this->certPath);
}
} }
} }