Merge pull request #31707 from nextcloud/backport/31605/stable22

[stable22] cache the path of the certificate bundle
This commit is contained in:
blizzz 2022-06-13 11:20:58 +02:00 committed by GitHub
commit c46a8d8f86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -61,6 +61,9 @@ class CertificateManager implements ICertificateManager {
/** @var ISecureRandom */
protected $random;
/** @var string $bundlePath */
private $bundlePath = null;
/**
* @param \OC\Files\View $view relative to data/
* @param IConfig $config
@ -190,6 +193,7 @@ class CertificateManager implements ICertificateManager {
if (!Filesystem::isValidPath($name) or Filesystem::isFileBlacklisted($name)) {
throw new \Exception('Filename is not valid');
}
$this->bundlePath = null;
$dir = $this->getPathToCertificates() . 'uploads/';
if (!$this->view->file_exists($dir)) {
@ -217,6 +221,8 @@ class CertificateManager implements ICertificateManager {
if (!Filesystem::isValidPath($name)) {
return false;
}
$this->bundlePath = null;
$path = $this->getPathToCertificates() . 'uploads/';
if ($this->view->file_exists($path . $name)) {
$this->view->unlink($path . $name);
@ -241,15 +247,18 @@ class CertificateManager implements ICertificateManager {
*/
public function getAbsoluteBundlePath(): string {
try {
if (!$this->hasCertificates()) {
return \OC::$SERVERROOT . '/resources/config/ca-bundle.crt';
}
if (!$this->bundlePath) {
if (!$this->hasCertificates()) {
$this->bundlePath = \OC::$SERVERROOT . '/resources/config/ca-bundle.crt';
}
if ($this->needsRebundling()) {
$this->createCertificateBundle();
}
if ($this->needsRebundling()) {
$this->createCertificateBundle();
}
return $this->view->getLocalFile($this->getCertificateBundle());
$this->bundlePath = $this->view->getLocalFile($this->getCertificateBundle());
}
return $this->bundlePath;
} catch (\Exception $e) {
return \OC::$SERVERROOT . '/resources/config/ca-bundle.crt';
}