diff options
-rw-r--r-- | scripts/rpki/left_right.py | 19 | ||||
-rwxr-xr-x | scripts/rpkid.py | 20 |
2 files changed, 24 insertions, 15 deletions
diff --git a/scripts/rpki/left_right.py b/scripts/rpki/left_right.py index 657efcd6..55705328 100644 --- a/scripts/rpki/left_right.py +++ b/scripts/rpki/left_right.py @@ -51,6 +51,13 @@ class base_elt(object): def __str__(self): lxml.etree.tostring(self.toXML(), pretty_print=True, encoding="us-ascii") +class data_elt(base_elt): + """Virtual type for a left-right protocol message elements representing + top-level persistant data elements. + """ + + pass + class extension_preference_elt(base_elt, rpki.sql.sql_persistant): """Container for extension preferences.""" @@ -89,7 +96,7 @@ class extension_preference_elt(base_elt, rpki.sql.sql_persistant): elt.text = self.value return elt -class bsc_elt(base_elt, rpki.sql.sql_persistant): +class bsc_elt(data_elt, rpki.sql.sql_persistant): """<bsc/> (Business Signing Context) element.""" element_name = "bsc" @@ -160,7 +167,7 @@ class bsc_elt(base_elt, rpki.sql.sql_persistant): self.make_b64elt(elt, "public_key") return elt -class parent_elt(base_elt, rpki.sql.sql_persistant): +class parent_elt(data_elt, rpki.sql.sql_persistant): """<parent/> element.""" element_name = "parent" @@ -218,7 +225,7 @@ class parent_elt(base_elt, rpki.sql.sql_persistant): self.make_b64elt(elt, "peer_ta", self.peer_ta.get_DER()) return elt -class child_elt(base_elt, rpki.sql.sql_persistant): +class child_elt(data_elt, rpki.sql.sql_persistant): """<child/> element.""" element_name = "child" @@ -290,7 +297,7 @@ class child_elt(base_elt, rpki.sql.sql_persistant): self.make_b64elt(elt, "peer_ta", self.peer_ta.get_DER()) return elt -class repository_elt(base_elt, rpki.sql.sql_persistant): +class repository_elt(data_elt, rpki.sql.sql_persistant): """<repository/> element.""" element_name = "repository" @@ -340,7 +347,7 @@ class repository_elt(base_elt, rpki.sql.sql_persistant): self.make_b64elt(elt, "peer_ta", self.peer_ta.get_DER()) return elt -class route_origin_elt(base_elt, rpki.sql.sql_persistant): +class route_origin_elt(data_elt, rpki.sql.sql_persistant): """<route_origin/> element.""" element_name = "route_origin" @@ -402,7 +409,7 @@ class route_origin_elt(base_elt, rpki.sql.sql_persistant): """Generate <route_origin/> element.""" return self.make_elt() -class self_elt(base_elt, rpki.sql.sql_persistant): +class self_elt(data_elt, rpki.sql.sql_persistant): """<self/> element.""" element_name = "self" diff --git a/scripts/rpkid.py b/scripts/rpkid.py index 473bd65e..35b37e10 100755 --- a/scripts/rpkid.py +++ b/scripts/rpkid.py @@ -7,38 +7,40 @@ framework onto which I'm bolting various parts for testing. import rpki.https, tlslite.api, rpki.config, rpki.resource_set, MySQLdb, rpki.cms +def decode(msg, cms_ta): + return lxml.etree.fromstring(rpki.cms.decode(msg, cms_ta)) + +def encode(msg, cms_key, cms_certs): + return rpki.cms.encode(lxml.etree.tostring(msg, pretty_print=True, encoding="us-ascii", xml_declaration=True), cms_key, cms_certs) + def left_right_handler(query, path): try: - q_elt = lxml.etree.fromstring(rpki.cms.decode(query, cms_ta)) + q_elt = decode(query, cms_ta_irbe) rng.assertValid(q_elt) saxer = rpki.left_right.sax_handler() lxml.sax.saxify(q_elt, saxer) q_msg = saxer.result r_msg = rpki.left_right.msg() for q_pdu in q_msg: + assert isinstance(q_pdu, rpki.left_right.data_elt) + if hasattr(q_pdu, "self_id"): + rpki.left_right.self_elt.sql_fetch(db, cur, { "self_id" : q_pdu.self_id }) # Do something useful here - raise NotImplementedError r_msg.append(r_pdu) - r_elt = r_msg.toXML() rng.assertValid(r_elt) - r_cms = rpki.cms.encode(lxml.etree.tostring(r_elt, pretty_print=True, encoding="us-ascii", xml_declaration=True), - cms_key, cms_certs) - - return 200, r_cms + return 200, encode(r_elt, cms_key, cms_certs) except Exception, data: return 500, "Unhandled exception %s" % data def up_down_handler(query, path): - print "up-down handler called" raise NotImplementedError def cronjob_handler(query, path): - print "cronjob handler called" raise NotImplementedError cfg = rpki.config.parser("re.conf") |