aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/up_down.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki/up_down.py')
-rw-r--r--scripts/rpki/up_down.py70
1 files changed, 21 insertions, 49 deletions
diff --git a/scripts/rpki/up_down.py b/scripts/rpki/up_down.py
index 7435a1d5..8ce61e34 100644
--- a/scripts/rpki/up_down.py
+++ b/scripts/rpki/up_down.py
@@ -1,21 +1,6 @@
# $Id$
-import base64, xml.sax, resource_set
-
-def snarf(obj, attrs, key, func=None):
- """
- Utility function to consolidate the steps needed to extract a field
- from the SAX XML parse and insert it as an object attribute of the
- same name.
- """
-
- try:
- val = attrs.getValue(key).encode("ascii")
- if func:
- val = func(val)
- except KeyError:
- val = None
- setattr(obj, key, val)
+import base64, sax_utils, resource_set
class msg(object):
"""
@@ -48,10 +33,10 @@ class cert(object):
"""
def __init__(self, attrs):
- snarf(self, attrs, "cert_url")
- snarf(self, attrs, "req_resource_set_as", resource_set.resource_set_as)
- snarf(self, attrs, "req_resource_set_ipv4", resource_set.resource_set_ipv4)
- snarf(self, attrs, "req_resource_set_ipv6", resource_set.resource_set_ipv6)
+ sax_utils.snarf(self, attrs, "cert_url")
+ sax_utils.snarf(self, attrs, "req_resource_set_as", resource_set.resource_set_as)
+ sax_utils.snarf(self, attrs, "req_resource_set_ipv4", resource_set.resource_set_ipv4)
+ sax_utils.snarf(self, attrs, "req_resource_set_ipv6", resource_set.resource_set_ipv6)
def __str__(self):
xml = (' <certificate cert_url="%s"' % (self.cert_url))
@@ -70,12 +55,12 @@ class klass(object):
"""
def __init__(self, attrs):
- snarf(self, attrs, "class_name")
- snarf(self, attrs, "cert_url")
- snarf(self, attrs, "resource_set_as", resource_set.resource_set_as)
- snarf(self, attrs, "resource_set_ipv4", resource_set.resource_set_ipv4)
- snarf(self, attrs, "resource_set_ipv6", resource_set.resource_set_ipv6)
- snarf(self, attrs, "suggested_sia_head")
+ sax_utils.snarf(self, attrs, "class_name")
+ sax_utils.snarf(self, attrs, "cert_url")
+ sax_utils.snarf(self, attrs, "resource_set_as", resource_set.resource_set_as)
+ sax_utils.snarf(self, attrs, "resource_set_ipv4", resource_set.resource_set_ipv4)
+ sax_utils.snarf(self, attrs, "resource_set_ipv6", resource_set.resource_set_ipv6)
+ sax_utils.snarf(self, attrs, "suggested_sia_head")
self.certs = []
def __str__(self):
@@ -131,10 +116,10 @@ class issue(msg):
def startElement(self, name, attrs):
assert name == "request"
- snarf(self, attrs, "class_name")
- snarf(self, attrs, "req_resource_set_as", resource_set.resource_set_as)
- snarf(self, attrs, "req_resource_set_ipv4", resource_set.resource_set_ipv4)
- snarf(self, attrs, "req_resource_set_ipv6", resource_set.resource_set_ipv6)
+ sax_utils.snarf(self, attrs, "class_name")
+ sax_utils.snarf(self, attrs, "req_resource_set_as", resource_set.resource_set_as)
+ sax_utils.snarf(self, attrs, "req_resource_set_ipv4", resource_set.resource_set_ipv4)
+ sax_utils.snarf(self, attrs, "req_resource_set_ipv6", resource_set.resource_set_ipv6)
def endElement(self, name, text):
assert name == "request"
@@ -165,8 +150,8 @@ class revoke(msg):
"""
def startElement(self, name, attrs):
- snarf(self, attrs, "class_name")
- snarf(self, attrs, "ski")
+ sax_utils.snarf(self, attrs, "class_name")
+ sax_utils.snarf(self, attrs, "ski")
def toXML(self):
return (' <key class_name="%s" ski="%s" />\n' % (self.class_name, self.ski))
@@ -193,22 +178,12 @@ class error_response(msg):
elif name == "description":
self.description = text
-class sax_handler(xml.sax.handler.ContentHandler):
+class sax_handler(sax_utils.handler):
"""
SAX handler for Up-Down protocol. Builds message PDU then
dispatches to that class's handler for nested data.
"""
- def __init__(self):
- self.text = ""
- self.obj = None
-
- def startElementNS(self, name, qname, attrs):
- return self.startElement(name[1], attrs)
-
- def endElementNS(self, name, qname):
- return self.endElement(name[1])
-
def startElement(self, name, attrs):
if name == "message":
assert int(attrs.getValue("version")) == 1
@@ -223,17 +198,14 @@ class sax_handler(xml.sax.handler.ContentHandler):
"error_response" : error_response()
}[attrs.getValue("type").encode("ascii")]
assert self.obj
- snarf(self.obj, attrs, "sender")
- snarf(self.obj, attrs, "recipient")
- snarf(self.obj, attrs, "type")
+ sax_utils.snarf(self.obj, attrs, "sender")
+ sax_utils.snarf(self.obj, attrs, "recipient")
+ sax_utils.snarf(self.obj, attrs, "type")
else:
assert self.obj
self.obj.startElement(name, attrs)
- def characters(self, content):
- self.text += content
-
def endElement(self, name):
assert self.obj
if name != "message":