diff options
author | Robin Appelman <robin@icewind.nl> | 2022-03-17 14:52:33 +0100 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2022-03-17 14:58:56 +0100 |
commit | 4f594dbf5395c2ad8b9dffe772870e66cbab55eb (patch) | |
tree | 176c03ec47ef127777bf6304baf36c1b57d2e7ea /lib/private/Security | |
parent | bf48c0b1b4bd3677a70aa0d7c8a50a5253c4cb5b (diff) | |
download | nextcloud-server-4f594dbf5395c2ad8b9dffe772870e66cbab55eb.tar.gz nextcloud-server-4f594dbf5395c2ad8b9dffe772870e66cbab55eb.zip |
cache the path of the certificate bundle
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib/private/Security')
-rw-r--r-- | lib/private/Security/CertificateManager.php | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/lib/private/Security/CertificateManager.php b/lib/private/Security/CertificateManager.php index 6f3b01e23b9..74ea59c3792 100644 --- a/lib/private/Security/CertificateManager.php +++ b/lib/private/Security/CertificateManager.php @@ -61,6 +61,8 @@ class CertificateManager implements ICertificateManager { /** @var ISecureRandom */ protected $random; + private ?string $bundlePath = null; + /** * @param \OC\Files\View $view relative to data/ * @param IConfig $config @@ -190,6 +192,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 +220,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 +246,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'; } |