diff options
author | Rob Austein <sra@hactrn.net> | 2014-09-21 00:00:41 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2014-09-21 00:00:41 +0000 |
commit | 9f8c367eac5db1f28e11b187eb48ad37b0ab3797 (patch) | |
tree | 2a452488c0940245b81605b842cef0e037965868 /rpki/up_down.py | |
parent | 431bebfd816b8268ea1bb7f98f92be46d67fd6a8 (diff) |
Convert rest of rootd away from SAX and async I/O.
svn path=/branches/tk705/; revision=5964
Diffstat (limited to 'rpki/up_down.py')
-rw-r--r-- | rpki/up_down.py | 56 |
1 files changed, 44 insertions, 12 deletions
diff --git a/rpki/up_down.py b/rpki/up_down.py index c144c8a8..82abcebb 100644 --- a/rpki/up_down.py +++ b/rpki/up_down.py @@ -31,10 +31,51 @@ import rpki.log import rpki.xml_utils import rpki.relaxng +from lxml.etree import Element, SubElement + logger = logging.getLogger(__name__) -xmlns = rpki.relaxng.up_down.xmlns -nsmap = rpki.relaxng.up_down.nsmap + +xmlns = rpki.relaxng.up_down.xmlns +nsmap = rpki.relaxng.up_down.nsmap +version = "1" + +tag_certificate = xmlns + "certificate" +tag_class = xmlns + "class" +tag_description = xmlns + "description" +tag_issuer = xmlns + "issuer" +tag_message = xmlns + "message" +tag_status = xmlns + "status" + + +error_response_codes = { + 1101 : "Already processing request", + 1102 : "Version number error", + 1103 : "Unrecognised request type", + 1201 : "Request - no such resource class", + 1202 : "Request - no resources allocated in resource class", + 1203 : "Request - badly formed certificate request", + 1301 : "Revoke - no such resource class", + 1302 : "Revoke - no such key", + 2001 : "Internal Server Error - Request not performed" } + + +def generate_error_response(r_pdu, status = 2001, description = None): + """ + Generate an error response. If STATUS is given, it specifies the + numeric code to use, otherwise we default to "internal error". + If DESCRIPTION is specified, we use it as the description, otherwise + we just use the default string associated with STATUS. + """ + + assert status in error_response_codes + del r_msg[:len(r_msg)] + r_msg.set("type", "error_response") + SubElement(r_msg, tag_status).text = str(status) + se = SubElement(r_msg, tag_description) + se.set("{http://www.w3.org/XML/1998/namespace}lang", "en-US") + se.text = str(description or error_response_codes[status]) + class base_elt(object): """ @@ -565,16 +606,7 @@ class error_response_pdu(base_elt): Up-Down protocol "error_response" PDU. """ - codes = { - 1101 : "Already processing request", - 1102 : "Version number error", - 1103 : "Unrecognised request type", - 1201 : "Request - no such resource class", - 1202 : "Request - no resources allocated in resource class", - 1203 : "Request - badly formed certificate request", - 1301 : "Revoke - no such resource class", - 1302 : "Revoke - no such key", - 2001 : "Internal Server Error - Request not performed" } + codes = error_response_codes exceptions = { rpki.exceptions.NoActiveCA : 1202, |