aboutsummaryrefslogtreecommitdiff
path: root/myrpki/myrpki.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2009-09-09 12:34:14 +0000
committerRob Austein <sra@hactrn.net>2009-09-09 12:34:14 +0000
commitf7579e4d9a43785ee3e5b80d51e12c04c333a901 (patch)
tree1fb6a39c4f455bb48cc50c84744936ef3f621600 /myrpki/myrpki.py
parenta66c42ac150c70c22617dcae782529e58df49a2a (diff)
Suppress incomplete entries.
svn path=/myrpki/myrpki.py; revision=2747
Diffstat (limited to 'myrpki/myrpki.py')
-rw-r--r--myrpki/myrpki.py99
1 files changed, 67 insertions, 32 deletions
diff --git a/myrpki/myrpki.py b/myrpki/myrpki.py
index d7da872a..7f053237 100644
--- a/myrpki/myrpki.py
+++ b/myrpki/myrpki.py
@@ -64,6 +64,14 @@ namespace = "http://www.hactrn.net/uris/rpki/myrpki/"
csv_dialect = csv.get_dialect("excel-tab")
+# Whether to include incomplete entries when rendering to XML.
+
+allow_incomplete = False
+
+# Whether to whine about incomplete entries while rendering to XML.
+
+whine = False
+
class comma_set(set):
"""
Minor customization of set(), to provide a print syntax.
@@ -86,7 +94,12 @@ class roa_request(object):
self.v6 = comma_set()
def __repr__(self):
- return "<%s asn %s v4 %s v6 %s>" % (self.__class__.__name__, self.asn, self.v4, self.v6)
+ s = "<%s asn %s" % (self.__class__.__name__, self.asn)
+ if self.v4:
+ s += " v4 %s" % self.v4
+ if self.v6:
+ s += " v6 %s" % self.v6
+ return s + ">"
def add(self, prefix):
"""
@@ -103,10 +116,10 @@ class roa_request(object):
"""
Generate XML element represeting representing this ROA request.
"""
- return SubElement(e, "roa_request",
- asn = self.asn,
- v4 = str(self.v4),
- v6 = str(self.v6))
+ SubElement(e, "roa_request",
+ asn = self.asn,
+ v4 = str(self.v4),
+ v6 = str(self.v6))
class roa_requests(dict):
"""
@@ -156,7 +169,18 @@ class child(object):
self.bpki_certificate = None
def __repr__(self):
- return "<%s v4 %s v6 %s asns %s validity %s cert %s>" % (self.__class__.__name__, self.v4, self.v6, self.asns, self.validity, self.bpki_certificate)
+ s = "<%s %s" % (self.__class__.__name__, self.handle)
+ if self.asns:
+ s += " asn %s" % self.asns
+ if self.v4:
+ s += " v4 %s" % self.v4
+ if self.v6:
+ s += " v6 %s" % self.v6
+ if self.validity:
+ s += " valid %s" % self.validity
+ if self.bpki_certificate:
+ s += " cert %s" % self.bpki_certificate
+ return s + ">"
def add(self, prefix = None, asn = None, validity = None, bpki_certificate = None):
"""
@@ -181,15 +205,18 @@ class child(object):
"""
Render this child as an XML element.
"""
- e2 = SubElement(e, "child",
- handle = self.handle,
- valid_until = self.validity,
- asns = str(self.asns),
- v4 = str(self.v4),
- v6 = str(self.v6))
- if self.bpki_certificate:
- PEMElement(e2, "bpki_certificate", self.bpki_certificate)
- return e2
+ complete = self.bpki_certificate and self.validity
+ if whine and not complete:
+ print "Incomplete child entry %s" % self
+ if complete or allow_incomplete:
+ e = SubElement(e, "child",
+ handle = self.handle,
+ valid_until = self.validity,
+ asns = str(self.asns),
+ v4 = str(self.v4),
+ v6 = str(self.v6))
+ if self.bpki_certificate:
+ PEMElement(e, "bpki_certificate", self.bpki_certificate)
class children(dict):
"""
@@ -242,13 +269,18 @@ class parent(object):
self.sia_base = None
def __repr__(self):
- return "<%s handle %s myhandle %s uri %s sia %s cms %s https %s>" % (self.__class__.__name__,
- self.handle,
- self.myhandle,
- self.service_uri,
- self.sia_base,
- self.bpki_cms_certificate,
- self.bpki_https_certificate)
+ s = "<%s %s" % (self.__class__.__name__, self.handle)
+ if self.myhandle:
+ s += " myhandle %s" % self.myhandle
+ if self.service_uri:
+ s += " uri %s" % self.service_uri
+ if self.sia_base:
+ s += " sia %s" % self.sia_base
+ if self.bpki_cms_certificate:
+ s += " cms %s" % self.bpki_cms_certificate
+ if self.bpki_https_certificate:
+ s += " https %s" % self.bpki_https_certificate
+ return s + ">"
def add(self, service_uri = None,
bpki_cms_certificate = None,
@@ -273,16 +305,19 @@ class parent(object):
"""
Render this parent object to XML.
"""
- e2 = SubElement(e, "parent",
- handle = self.handle,
- myhandle = self.myhandle,
- service_uri = self.service_uri,
- sia_base = self.sia_base)
- if self.bpki_cms_certificate:
- PEMElement(e2, "bpki_cms_certificate", self.bpki_cms_certificate)
- if self.bpki_https_certificate:
- PEMElement(e2, "bpki_https_certificate", self.bpki_https_certificate)
- return e2
+ complete = self.bpki_cms_certificate and self.bpki_https_certificate and self.myhandle and self.service_uri and self.sia_base
+ if whine and not complete:
+ print "Incomplete parent entry %s" % self
+ if complete or allow_incomplete:
+ e = SubElement(e, "parent",
+ handle = self.handle,
+ myhandle = self.myhandle,
+ service_uri = self.service_uri,
+ sia_base = self.sia_base)
+ if self.bpki_cms_certificate:
+ PEMElement(e, "bpki_cms_certificate", self.bpki_cms_certificate)
+ if self.bpki_https_certificate:
+ PEMElement(e, "bpki_https_certificate", self.bpki_https_certificate)
class parents(dict):
"""