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>
This commit is contained in:
parent
dc479aae2d
commit
54b9f639a6
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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…
Reference in New Issue