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
No known key found for this signature in database
GPG Key ID: FE03C3A163FEDE68
2 changed files with
28 additions and
4 deletions
lib/private/Http/Client/Client.php
lib/private/Security/CertificateManager.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 ();
}
@ -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 ());
}