X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Ftrust%2Ftrustedroots.py;h=5f8dcd3c2275bbfcbfddd74f8d1564cb9632ff85;hb=HEAD;hp=65b97fa63bf474e204434c7845dec3b46cf37a17;hpb=2ddd571064c5ec6a31cbc748e6ddc21407bba4b4;p=sfa.git diff --git a/sfa/trust/trustedroots.py b/sfa/trust/trustedroots.py index 65b97fa6..5f8dcd3c 100644 --- a/sfa/trust/trustedroots.py +++ b/sfa/trust/trustedroots.py @@ -2,12 +2,20 @@ import os.path import glob from sfa.trust.gid import GID +from sfa.util.sfalogging import logger + + +class TrustedRoots: + + # we want to avoid reading all files in the directory + # this is because it's common to have backups of all kinds + # e.g. *~, *.hide, *-00, *.bak and the like + supported_extensions = ['gid', 'cert', 'pem'] -class TrustedRootList: def __init__(self, dir): self.basedir = dir # create the directory to hold the files, if not existing - if not os.path.isdir (self.basedir): + if not os.path.isdir(self.basedir): os.makedirs(self.basedir) def add_gid(self, gid): @@ -15,13 +23,23 @@ class TrustedRootList: gid.save_to_file(fn) def get_list(self): - gid_list = [GID(filename=cert_file) for cert_file in self.get_file_list()] + gid_list = [GID(filename=cert_file) + for cert_file in self.get_file_list()] return gid_list def get_file_list(self): - file_list = [] - pattern=os.path.join(self.basedir,"*.gid") + file_list = [] + pattern = os.path.join(self.basedir, "*") for cert_file in glob.glob(pattern): if os.path.isfile(cert_file): - file_list.append(cert_file) + if self.has_supported_extension(cert_file): + file_list.append(cert_file) + else: + logger.warning("File {} ignored - supported extensions are {}" + .format(cert_file, TrustedRoots.supported_extensions)) return file_list + + def has_supported_extension(self, path): + _, ext = os.path.splitext(path) + ext = ext.replace('.', '').lower() + return ext in TrustedRoots.supported_extensions