Browse Source

Always return the default path if we can

Just check in the certifcate manager. So every part of the system that
request the certificatebundle gets the defaullt one (the 99% case) if we
can.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
pull/21693/head
Roeland Jago Douma 5 years ago
committed by Morris Jobke
parent
commit
54b9f639a6
No known key found for this signature in database GPG Key ID: FE03C3A163FEDE68
  1. 4
      lib/private/Http/Client/Client.php
  2. 28
      lib/private/Security/CertificateManager.php

4
lib/private/Http/Client/Client.php

@ -105,10 +105,6 @@ class Client implements IClient {
return \OC::$SERVERROOT . '/resources/config/ca-bundle.crt';
}
if ($this->certificateManager->listCertificates() === []) {
return \OC::$SERVERROOT . '/resources/config/ca-bundle.crt';
}
return $this->certificateManager->getAbsoluteBundlePath();
}

28
lib/private/Security/CertificateManager.php

@ -104,6 +104,29 @@ class CertificateManager implements ICertificateManager {
return $result;
}
private function hasCertificates(): bool {
if (!$this->config->getSystemValue('installed', false)) {
return false;
}
$path = $this->getPathToCertificates() . 'uploads/';
if (!$this->view->is_dir($path)) {
return false;
}
$result = [];
$handle = $this->view->opendir($path);
if (!is_resource($handle)) {
return false;
}
while (false !== ($file = readdir($handle))) {
if ($file !== '.' && $file !== '..') {
return true;
}
}
closedir($handle);
return false;
}
/**
* create the certificate bundle of all trusted certificated
*/
@ -213,9 +236,14 @@ class CertificateManager implements ICertificateManager {
* @return string
*/
public function getAbsoluteBundlePath() {
if (!$this->hasCertificates()) {
return \OC::$SERVERROOT . '/resources/config/ca-bundle.crt';
}
if ($this->needsRebundling()) {
$this->createCertificateBundle();
}
return $this->view->getLocalFile($this->getCertificateBundle());
}

Loading…
Cancel
Save