diff options
-rw-r--r-- | rpkid/rpki/left_right.py | 25 | ||||
-rw-r--r-- | rpkid/rpki/publication.py | 28 | ||||
-rw-r--r-- | rpkid/rpki/xml_utils.py | 8 |
3 files changed, 24 insertions, 37 deletions
diff --git a/rpkid/rpki/left_right.py b/rpkid/rpki/left_right.py index 64519fbf..900d5e16 100644 --- a/rpkid/rpki/left_right.py +++ b/rpkid/rpki/left_right.py @@ -21,24 +21,18 @@ import rpki.resource_set, rpki.x509, rpki.sql, rpki.exceptions, rpki.xml_utils import rpki.https, rpki.up_down, rpki.relaxng, rpki.sundial, rpki.log, rpki.roa import rpki.publication -left_right_xmlns = "http://www.hactrn.net/uris/rpki/left-right-spec/" -left_right_nsmap = { None : left_right_xmlns } - # Enforce strict checking of XML "sender" field in up-down protocol enforce_strict_up_down_xml_sender = False -class base_elt(rpki.xml_utils.base_elt): - """Virtual class for left-right protocol PDUs.""" +class left_right_namespace(object): + """XML namespace parameters for left-right protocol.""" - xmlns = left_right_xmlns - nsmap = left_right_nsmap + xmlns = "http://www.hactrn.net/uris/rpki/left-right-spec/" + nsmap = { None : xmlns } -class data_elt(rpki.xml_utils.data_elt, rpki.sql.sql_persistant): +class data_elt(rpki.xml_utils.data_elt, rpki.sql.sql_persistant, left_right_namespace): """Virtual class for top-level left-right protocol data elements.""" - xmlns = left_right_xmlns - nsmap = left_right_nsmap - def self(this): """Fetch self object to which this object links.""" return self_elt.sql_fetch(this.gctx, this.self_id) @@ -882,7 +876,7 @@ class route_origin_elt(data_elt): """Return the publication URI for this route_origin's ROA's EE certificate.""" return ca.sia_uri + self.ee_uri_tail() -class list_resources_elt(base_elt): +class list_resources_elt(rpki.xml_utils.base_elt, left_right_namespace): """<list_resources/> element.""" element_name = "list_resources" @@ -909,7 +903,7 @@ class list_resources_elt(base_elt): elt.set("valid_until", self.valid_until.toXMLtime()) return elt -class report_error_elt(base_elt): +class report_error_elt(rpki.xml_utils.base_elt, left_right_namespace): """<report_error/> element.""" element_name = "report_error" @@ -932,12 +926,9 @@ class report_error_elt(base_elt): self.error_code = exc.__class__.__name__ return self -class msg(rpki.xml_utils.msg): +class msg(rpki.xml_utils.msg, left_right_namespace): """Left-right PDU.""" - xmlns = left_right_xmlns - nsmap = left_right_nsmap - ## @var version # Protocol version version = 1 diff --git a/rpkid/rpki/publication.py b/rpkid/rpki/publication.py index 09ed0aac..07fffa83 100644 --- a/rpkid/rpki/publication.py +++ b/rpkid/rpki/publication.py @@ -20,21 +20,15 @@ import base64, lxml.etree, time, traceback, os import rpki.resource_set, rpki.x509, rpki.sql, rpki.exceptions, rpki.xml_utils import rpki.https, rpki.up_down, rpki.relaxng, rpki.sundial, rpki.log, rpki.roa -publication_xmlns = "http://www.hactrn.net/uris/rpki/publication-spec/" -publication_nsmap = { None : publication_xmlns } +class publication_namespace(object): + """XML namespace parameters for publication protocol.""" -class data_elt(rpki.xml_utils.base_elt): - """Virtual class for publication protocol PDUs.""" + xmlns = "http://www.hactrn.net/uris/rpki/publication-spec/" + nsmap = { None : xmlns } - xmlns = publication_xmlns - nsmap = publication_nsmap - -class client_elt(rpki.xml_utils.data_elt, rpki.sql.sql_persistant): +class client_elt(rpki.xml_utils.data_elt, rpki.sql.sql_persistant, publication_namespace): """<client/> element.""" - xmlns = publication_xmlns - nsmap = publication_nsmap - element_name = "client" attributes = ("action", "tag", "client_id", "base_uri") elements = ("bpki_cert", "bpki_glue") @@ -103,7 +97,7 @@ class client_elt(rpki.xml_utils.data_elt, rpki.sql.sql_persistant): if not uri.startswith(self.base_uri): raise rpki.exceptions.ForbiddenURI -class publication_object_elt(data_elt): +class publication_object_elt(rpki.xml_utils.base_elt, publication_namespace): """Virtual class for publishable objects. These have very similar syntax, differences lie in underlying datatype and methods. """ @@ -200,12 +194,9 @@ class roa_elt(publication_object_elt): obj2elt = dict((e.payload_type, e) for e in (certificate_elt, crl_elt, manifest_elt, roa_elt)) -class report_error_elt(rpki.xml_utils.base_elt): +class report_error_elt(rpki.xml_utils.base_elt, publication_namespace): """<report_error/> element.""" - xmlns = publication_xmlns - nsmap = publication_nsmap - element_name = "report_error" attributes = ("tag", "error_code") @@ -225,12 +216,9 @@ class report_error_elt(rpki.xml_utils.base_elt): self.error_code = exc.__class__.__name__ return self -class msg(rpki.xml_utils.msg): +class msg(rpki.xml_utils.msg, publication_namespace): """Publication PDU.""" - xmlns = publication_xmlns - nsmap = publication_nsmap - ## @var version # Protocol version version = 1 diff --git a/rpkid/rpki/xml_utils.py b/rpkid/rpki/xml_utils.py index 9a2f6f61..97f9c5f7 100644 --- a/rpkid/rpki/xml_utils.py +++ b/rpkid/rpki/xml_utils.py @@ -103,8 +103,16 @@ class base_elt(object): protocol does not, due to different design assumptions. """ + ## @var attributes + # XML attributes for this element. attributes = () + + ## @var elements + # XML elements contained by this element. elements = () + + ## @var booleans + # Boolean attributes (value "yes" or "no") for this element. booleans = () def startElement(self, stack, name, attrs): |