aboutsummaryrefslogtreecommitdiff
path: root/rpki/irdb
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2015-10-19 03:36:42 +0000
committerRob Austein <sra@hactrn.net>2015-10-19 03:36:42 +0000
commit7f5e75188ad4527e3c3425a155dfed0847a389dd (patch)
tree400301cae01f51141e380664cf0b382b8204a00d /rpki/irdb
parent7ab6040f7eb05a7ac4424e0294d228256e9a64dd (diff)
Amputate old SQL code out of rpkid with a fire axe, replacing it with
Django ORM. Duct tape and bailing wire everywhere, much clean-up left to do, but basic "make yamltest" suite runs. Much of the clean-up isn't worth doing until after revamping the I/O system, as it'll all change again at that point anyway. svn path=/branches/tk705/; revision=6127
Diffstat (limited to 'rpki/irdb')
-rw-r--r--rpki/irdb/migrations/0004_auto_20151018_1603.py40
-rw-r--r--rpki/irdb/models.py6
-rw-r--r--rpki/irdb/zookeeper.py62
3 files changed, 77 insertions, 31 deletions
diff --git a/rpki/irdb/migrations/0004_auto_20151018_1603.py b/rpki/irdb/migrations/0004_auto_20151018_1603.py
new file mode 100644
index 00000000..645d1eaa
--- /dev/null
+++ b/rpki/irdb/migrations/0004_auto_20151018_1603.py
@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import rpki.fields
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('irdb', '0003_repository_rrdp_notification_uri'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='referral',
+ name='private_key',
+ field=rpki.fields.RSAPrivateKeyField(default=None, serialize=False, blank=True),
+ ),
+ migrations.AlterField(
+ model_name='resourceholderca',
+ name='private_key',
+ field=rpki.fields.RSAPrivateKeyField(default=None, serialize=False, blank=True),
+ ),
+ migrations.AlterField(
+ model_name='rootd',
+ name='private_key',
+ field=rpki.fields.RSAPrivateKeyField(default=None, serialize=False, blank=True),
+ ),
+ migrations.AlterField(
+ model_name='serverca',
+ name='private_key',
+ field=rpki.fields.RSAPrivateKeyField(default=None, serialize=False, blank=True),
+ ),
+ migrations.AlterField(
+ model_name='serveree',
+ name='private_key',
+ field=rpki.fields.RSAPrivateKeyField(default=None, serialize=False, blank=True),
+ ),
+ ]
diff --git a/rpki/irdb/models.py b/rpki/irdb/models.py
index 0911d7aa..d2d6256b 100644
--- a/rpki/irdb/models.py
+++ b/rpki/irdb/models.py
@@ -33,7 +33,7 @@ import rpki.resource_set
import socket
import rpki.POW
-from rpki.fields import EnumField, SundialField, CertificateField, DERField, KeyField, CRLField, PKCS10Field
+from rpki.fields import EnumField, SundialField, CertificateField, DERField, RSAPrivateKeyField, CRLField, PKCS10Field
## @var ip_version_choices
# Choice argument for fields implementing IP version numbers.
@@ -139,7 +139,7 @@ class ResourceHolderEEManager(CertificateManager):
class CA(django.db.models.Model):
certificate = CertificateField()
- private_key = KeyField()
+ private_key = RSAPrivateKeyField()
latest_crl = CRLField()
# Might want to bring these into line with what rpkid does. Current
@@ -299,7 +299,7 @@ class ResourceHolderRevocation(Revocation):
issuer = django.db.models.ForeignKey(ResourceHolderCA, related_name = "revocations")
class EECertificate(Certificate):
- private_key = KeyField()
+ private_key = RSAPrivateKeyField()
class Meta:
abstract = True
diff --git a/rpki/irdb/zookeeper.py b/rpki/irdb/zookeeper.py
index 4b4a2f46..6a355f9e 100644
--- a/rpki/irdb/zookeeper.py
+++ b/rpki/irdb/zookeeper.py
@@ -583,6 +583,9 @@ class Zookeeper(object):
x = etree_read(filename)
+ if x.tag != tag_oob_child_request:
+ raise BadXMLMessage("Expected %s, got %s", tag_oob_child_request, x.tag)
+
if child_handle is None:
child_handle = x.get("child_handle")
@@ -674,6 +677,9 @@ class Zookeeper(object):
x = etree_read(filename)
+ if x.tag != tag_oob_parent_response:
+ raise BadXMLMessage("Expected %s, got %s", tag_oob_parent_response, x.tag)
+
if parent_handle is None:
parent_handle = x.get("parent_handle")
@@ -757,6 +763,9 @@ class Zookeeper(object):
x = etree_read(filename)
+ if x.tag != tag_oob_publisher_request:
+ raise BadXMLMessage("Expected %s, got %s", tag_oob_publisher_request, x.tag)
+
client_ta = rpki.x509.X509(Base64 = x.findtext(tag_oob_publisher_bpki_ta))
referral = x.find(tag_oob_referral)
@@ -868,7 +877,10 @@ class Zookeeper(object):
x = etree_read(filename)
- self.log("Repository calls us %r" % (x.get("client_handle")))
+ if x.tag != tag_oob_repository_response:
+ raise BadXMLMessage("Expected %s, got %s", tag_oob_repository_response, x.tag)
+
+ self.log("Repository calls us %r" % (x.get("publisher_handle")))
if parent_handle is not None:
self.log("Explicit parent_handle given")
@@ -1231,18 +1243,18 @@ class Zookeeper(object):
throw exceptions as needed.
"""
- if any(r_pdu.tag in (rpki.left_right.tag_report_error,
- rpki.publication_control.tag_report_error)
- for r_pdu in r_msg):
- for r_pdu in r_msg:
- if r_pdu.tag == rpki.left_right.tag_report_error:
- self.log("rpkid reported failure: %s" % r_pdu.get("error_code"))
- elif r_pdu.tag == rpki.publication_control.tag_report_error:
- self.log("pubd reported failure: %s" % r_pdu.get("error_code"))
- else:
- continue
- if r_pdu.text:
- self.log(r_pdu.text)
+ failed = False
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_report_error):
+ failed = True
+ self.log("rpkid reported failure: %s" % r_pdu.get("error_code"))
+ if r_pdu.text:
+ self.log(r_pdu.text)
+ for r_pdu in r_msg.getiterator(rpki.publication_control.tag_report_error):
+ failed = True
+ self.log("pubd reported failure: %s" % r_pdu.get("error_code"))
+ if r_pdu.text:
+ self.log(r_pdu.text)
+ if failed:
raise CouldntTalkToDaemon
@@ -1343,24 +1355,18 @@ class Zookeeper(object):
r_msg = self.call_rpkid(q_msg, suppress_error_check = True)
- if r_msg[0].tag == rpki.left_right.tag_self:
- self.check_error_report(r_msg)
- self_pdu = r_msg[0]
- else:
- self_pdu = None
+ self.check_error_report(r_msg)
+
+ self_pdu = r_msg.find(rpki.left_right.tag_self)
bsc_pdus = dict((r_pdu.get("bsc_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_bsc)
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_bsc))
repository_pdus = dict((r_pdu.get("repository_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_repository)
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_repository))
parent_pdus = dict((r_pdu.get("parent_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_parent)
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_parent))
child_pdus = dict((r_pdu.get("child_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_child)
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_child))
q_msg = self._compose_left_right_query()
@@ -1408,8 +1414,8 @@ class Zookeeper(object):
SubElement(q_msg, rpki.left_right.tag_bsc, action = "list", tag = "bsc", self_handle = ca.handle)
r_msg = self.call_rpkid(q_msg)
bsc_pdus = dict((r_pdu.get("bsc_handle"), r_pdu)
- for r_pdu in r_msg
- if r_pdu.tag == rpki.left_right.tag_bsc and r_pdu.get("action") == "list")
+ for r_pdu in r_msg.getiterator(rpki.left_right.tag_bsc)
+ if r_pdu.get("action") == "list")
bsc_pdu = bsc_pdus.pop(bsc_handle, None)
q_msg = self._compose_left_right_query()