aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Security
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2022-03-17 14:52:33 +0100
committerRobin Appelman <robin@icewind.nl>2022-03-17 14:58:56 +0100
commit4f594dbf5395c2ad8b9dffe772870e66cbab55eb (patch)
tree176c03ec47ef127777bf6304baf36c1b57d2e7ea /lib/private/Security
parentbf48c0b1b4bd3677a70aa0d7c8a50a5253c4cb5b (diff)
downloadnextcloud-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.php22
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';
}