Distro default certificates must be iterables
This patch changes the __DEF_OS_LOCATIONS to an iterable value. The reason is because a list is an iterable, but an string is an iterable too, and this is a mistake. The function get_os_sslcertfile() has a loop to iterate the return of get_os_sslcertfile_searchpath(), that returns the value in the __DEF_OS_LOCATIONS dictionary. When the value is an iterable, the "f" variable is set to the iterable value and works fine. If the value of "f" is an string, the for-loop iterates over every character, so the test for os.path.exists is always false (is comparing the path with a character, not with the full path), so this function fails and return None. To check this change, edit your .offlineimaprc file and change the sslcacertfile to OS-DEFAULT: sslcacertfile = OS-DEFAULT And run offlineimap. If you are not using 'darwin0 (the only iterable) it will fails. Now, apply this patch, and run offlineimap again. Problem is solved. Signed-off-by: Rodolfo García Peñas (kix) <kix@kix.es>
This commit is contained in:
parent
bde48fe2c7
commit
fe25a5c752
@ -11,29 +11,27 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
from distro import linux_distribution
|
from distro import linux_distribution
|
||||||
|
|
||||||
# Each dictionary value is either string or some iterable.
|
|
||||||
#
|
|
||||||
# For the former we will just return the value, for an iterable
|
# For the former we will just return the value, for an iterable
|
||||||
# we will walk through the values and will return the first
|
# we will walk through the values and will return the first
|
||||||
# one that corresponds to the existing file.
|
# one that corresponds to the existing file.
|
||||||
__DEF_OS_LOCATIONS = {
|
__DEF_OS_LOCATIONS = {
|
||||||
'freebsd': '/usr/local/share/certs/ca-root-nss.crt',
|
'freebsd': ['/usr/local/share/certs/ca-root-nss.crt'],
|
||||||
'openbsd': '/etc/ssl/cert.pem',
|
'openbsd': ['/etc/ssl/cert.pem'],
|
||||||
'dragonfly': '/etc/ssl/cert.pem',
|
'dragonfly': ['/etc/ssl/cert.pem'],
|
||||||
'darwin': [
|
'darwin': [
|
||||||
# MacPorts, port curl-ca-bundle
|
# MacPorts, port curl-ca-bundle
|
||||||
'/opt/local/share/curl/curl-ca-bundle.crt',
|
'/opt/local/share/curl/curl-ca-bundle.crt',
|
||||||
# homebrew, package openssl
|
# homebrew, package openssl
|
||||||
'/usr/local/etc/openssl/cert.pem',
|
'/usr/local/etc/openssl/cert.pem',
|
||||||
],
|
],
|
||||||
'linux-ubuntu': '/etc/ssl/certs/ca-certificates.crt',
|
'linux-ubuntu': ['/etc/ssl/certs/ca-certificates.crt'],
|
||||||
'linux-debian': '/etc/ssl/certs/ca-certificates.crt',
|
'linux-debian': ['/etc/ssl/certs/ca-certificates.crt'],
|
||||||
'linux-gentoo': '/etc/ssl/certs/ca-certificates.crt',
|
'linux-gentoo': ['/etc/ssl/certs/ca-certificates.crt'],
|
||||||
'linux-fedora': '/etc/pki/tls/certs/ca-bundle.crt',
|
'linux-fedora': ['/etc/pki/tls/certs/ca-bundle.crt'],
|
||||||
'linux-redhat': '/etc/pki/tls/certs/ca-bundle.crt',
|
'linux-redhat': ['/etc/pki/tls/certs/ca-bundle.crt'],
|
||||||
'linux-suse': '/etc/ssl/ca-bundle.pem',
|
'linux-suse': ['/etc/ssl/ca-bundle.pem'],
|
||||||
'linux-opensuse': '/etc/ssl/ca-bundle.pem',
|
'linux-opensuse': ['/etc/ssl/ca-bundle.pem'],
|
||||||
'linux-arch': '/etc/ssl/certs/ca-certificates.crt',
|
'linux-arch': ['/etc/ssl/certs/ca-certificates.crt'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user