diff options
author | Rob Austein <sra@hactrn.net> | 2010-03-08 22:59:03 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2010-03-08 22:59:03 +0000 |
commit | 911052ccce44e90d3c40387db5c7cb2a53dc6f08 (patch) | |
tree | 3a949d144c9a12d3121e969235f835a87bf6e240 /myrpki.rototill/myrpki.py | |
parent | 64b65db19897e650461373ba3e8cffb3e92553a5 (diff) |
Consolidated entitydb() mechanism
svn path=/myrpki.rototill/myirbe.py; revision=3047
Diffstat (limited to 'myrpki.rototill/myrpki.py')
-rw-r--r-- | myrpki.rototill/myrpki.py | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/myrpki.rototill/myrpki.py b/myrpki.rototill/myrpki.py index f6cf00eb..f1d1fc29 100644 --- a/myrpki.rototill/myrpki.py +++ b/myrpki.rototill/myrpki.py @@ -86,6 +86,21 @@ class comma_set(set): def __str__(self): return ",".join(self) +class EntityDB(object): + """ + Wrapper for entitydb path lookups. Hmm, maybe some or all of the + entitydb glob stuff should end up here too? Later. + """ + + def __init__(self, cfg): + self.dir = cfg.get("entitydb_dir", "entitydb") + + def __call__(self, *args): + return os.path.join(self.dir, *args) + + def iterate(self, *args): + return glob.iglob(os.path.join(self.dir, *args)) + class roa_request(object): """ Representation of a ROA request. @@ -249,19 +264,16 @@ class children(dict): c.xml(e) @classmethod - def from_csv(cls, children_csv_file, prefix_csv_file, asn_csv_file, fxcert): + def from_csv(cls, children_csv_file, prefix_csv_file, asn_csv_file, fxcert, entitydb): """ Parse child resources, certificates, and validity dates from CSV files. """ self = cls() - - # Need something like setup.py's entitydb() function. Wire in pathnames for now. - for f in glob.iglob("entitydb/children/*.xml"): + for f in entitydb.iterate("children", "*.xml"): c = etree_read(f) self.add(handle = os.path.splitext(os.path.split(f)[-1])[0], validity = c.get("valid_until"), bpki_certificate = fxcert(c.findtext("bpki_child_ta"))) - # childname p/n for handle, pn in csv_open(prefix_csv_file): self.add(handle = handle, prefix = pn) @@ -362,16 +374,16 @@ class parents(dict): c.xml(e) @classmethod - def from_csv(cls, parents_csv_file, fxcert): + def from_csv(cls, parents_csv_file, fxcert, entitydb): """ Parse parent data from CSV file. """ self = cls() - # Need something like setup.py's entitydb() function. Wire in pathnames for now. - for f in glob.iglob("entitydb/parents/*.xml"): + for f in entitydb.iterate("parents", "*.xml"): h = os.path.splitext(os.path.split(f)[-1])[0] p = etree_read(f) - r = etree_read(f.replace("/parents/", "/repositories/")) + r = etree_read(f.replace(os.path.sep + "parents" + os.path.sep, + os.path.sep + "repositories" + os.path.sep)) assert r.get("type") == "confirmed" self.add(handle = h, service_uri = p.get("service_uri"), @@ -663,6 +675,8 @@ def main(argv = ()): global openssl openssl = cfg.get("openssl", "openssl") + entitydb = EntityDB(cfg) + bpki = CA(cfg_file, bpki_dir) try: @@ -678,11 +692,13 @@ def main(argv = ()): children_csv_file = children_csv_file, prefix_csv_file = prefix_csv_file, asn_csv_file = asn_csv_file, - fxcert = bpki.fxcert).xml(e) + fxcert = bpki.fxcert, + entitydb = entitydb).xml(e) parents.from_csv( parents_csv_file = parents_csv_file, - fxcert = bpki.fxcert).xml(e) + fxcert = bpki.fxcert, + entitydb = entitydb).xml(e) PEMElement(e, "bpki_ca_certificate", bpki.cer) PEMElement(e, "bpki_crl", bpki.crl) |