aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/rpki/left_right.py19
-rwxr-xr-xscripts/rpkid.py20
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")