diff options
Diffstat (limited to 'scripts/rpki/up_down.py')
-rw-r--r-- | scripts/rpki/up_down.py | 70 |
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": |