aboutsummaryrefslogtreecommitdiff
path: root/rpkid
diff options
context:
space:
mode:
Diffstat (limited to 'rpkid')
-rw-r--r--rpkid/rpki/old_irdbd.py106
-rw-r--r--rpkid/tests/old_irdbd.sql55
-rw-r--r--rpkid/tests/smoketest.py2
3 files changed, 138 insertions, 25 deletions
diff --git a/rpkid/rpki/old_irdbd.py b/rpkid/rpki/old_irdbd.py
index 3396e783..a9585307 100644
--- a/rpkid/rpki/old_irdbd.py
+++ b/rpkid/rpki/old_irdbd.py
@@ -52,13 +52,18 @@ class main(object):
r_pdu.child_handle = q_pdu.child_handle
self.cur.execute(
- "SELECT registrant_id, valid_until FROM registrant WHERE registry_handle = %s AND registrant_handle = %s",
+ """
+ SELECT registrant_id, valid_until
+ FROM registrant
+ WHERE registry_handle = %s AND registrant_handle = %s
+ """,
(q_pdu.self_handle, q_pdu.child_handle))
if self.cur.rowcount != 1:
- raise rpki.exceptions.NotInDatabase, \
- "This query should have produced a single exact match, something's messed up (rowcount = %d, self_handle = %s, child_handle = %s)" \
- % (self.cur.rowcount, q_pdu.self_handle, q_pdu.child_handle)
+ raise rpki.exceptions.NotInDatabase(
+ "This query should have produced a single exact match, something's messed up"
+ " (rowcount = %d, self_handle = %s, child_handle = %s)"
+ % (self.cur.rowcount, q_pdu.self_handle, q_pdu.child_handle))
registrant_id, valid_until = self.cur.fetchone()
@@ -66,17 +71,29 @@ class main(object):
r_pdu.asn = rpki.resource_set.resource_set_as.from_sql(
self.cur,
- "SELECT start_as, end_as FROM registrant_asn WHERE registrant_id = %s",
+ """
+ SELECT start_as, end_as
+ FROM registrant_asn
+ WHERE registrant_id = %s
+ """,
(registrant_id,))
r_pdu.ipv4 = rpki.resource_set.resource_set_ipv4.from_sql(
self.cur,
- "SELECT start_ip, end_ip FROM registrant_net WHERE registrant_id = %s AND version = 4",
+ """
+ SELECT start_ip, end_ip
+ FROM registrant_net
+ WHERE registrant_id = %s AND version = 4
+ """,
(registrant_id,))
r_pdu.ipv6 = rpki.resource_set.resource_set_ipv6.from_sql(
self.cur,
- "SELECT start_ip, end_ip FROM registrant_net WHERE registrant_id = %s AND version = 6",
+ """
+ SELECT start_ip, end_ip
+ FROM registrant_net
+ WHERE registrant_id = %s AND version = 6
+ """,
(registrant_id,))
r_msg.append(r_pdu)
@@ -85,7 +102,7 @@ class main(object):
def handle_list_roa_requests(self, q_pdu, r_msg):
self.cur.execute(
- "SELECT roa_request_id, asn FROM roa_request WHERE roa_request_handle = %s",
+ "SELECT roa_request_id, asn FROM roa_request WHERE self_handle = %s",
(q_pdu.self_handle,))
for roa_request_id, asn in self.cur.fetchall():
@@ -97,12 +114,20 @@ class main(object):
r_pdu.ipv4 = rpki.resource_set.roa_prefix_set_ipv4.from_sql(
self.cur,
- "SELECT prefix, prefixlen, max_prefixlen FROM roa_request_prefix WHERE roa_request_id = %s AND version = 4",
+ """
+ SELECT prefix, prefixlen, max_prefixlen
+ FROM roa_request_prefix
+ WHERE roa_request_id = %s AND version = 4
+ """,
(roa_request_id,))
r_pdu.ipv6 = rpki.resource_set.roa_prefix_set_ipv6.from_sql(
self.cur,
- "SELECT prefix, prefixlen, max_prefixlen FROM roa_request_prefix WHERE roa_request_id = %s AND version = 6",
+ """
+ SELECT prefix, prefixlen, max_prefixlen
+ FROM roa_request_prefix
+ WHERE roa_request_id = %s AND version = 6
+ """,
(roa_request_id,))
r_msg.append(r_pdu)
@@ -111,7 +136,11 @@ class main(object):
def handle_list_ghostbuster_requests(self, q_pdu, r_msg):
self.cur.execute(
- "SELECT vcard FROM ghostbuster_request WHERE self_handle = %s AND parent_handle = %s",
+ """
+ SELECT vcard
+ FROM ghostbuster_request
+ WHERE self_handle = %s AND parent_handle = %s
+ """,
(q_pdu.self_handle, q_pdu.parent_handle))
vcards = [result[0] for result in self.cur.fetchall()]
@@ -119,7 +148,11 @@ class main(object):
if not vcards:
self.cur.execute(
- "SELECT vcard FROM ghostbuster_request WHERE self_handle = %s AND parent_handle IS NULL",
+ """
+ SELECT vcard
+ FROM ghostbuster_request
+ WHERE self_handle = %s AND parent_handle IS NULL
+ """,
(q_pdu.self_handle,))
vcards = [result[0] for result in self.cur.fetchall()]
@@ -134,9 +167,54 @@ class main(object):
def handle_list_ee_certificate_requests(self, q_pdu, r_msg):
- rpki.log.note("old_irdbd doesn't currently implement <list_ee_certificate_requests/>, ignoring")
-
+ self.cur.execute(
+ """
+ SELECT ee_certificate_id, gski, router_id, valid_until
+ FROM ee_certificate
+ WHERE self_handle = %s
+ """,
+ (q_pdu.self_handle,))
+
+ for ee_certificate_id, gski, router_id, valid_until in self.cur.fetchall():
+
+ r_pdu = rpki.left_right.ee_certificates_request_elt()
+ r_pdu.tag = q_pdu.tag
+ r_pdu.self_handle = q_pdu.self_handle
+ r_pdu.valid_until = valid_until.strftime("%Y-%m-%dT%H:%M:%SZ")
+ r_pdu.gski = gski
+ r_pdu.router_id = router_id
+
+ r_pdu.asn = rpki.resource_set.resource_set_as.from_sql(
+ self.cur,
+ """
+ SELECT start_as, end_as
+ FROM ee_certificate_asn
+ WHERE ee_certificate_id = %s
+ """,
+ (ee_certificate_id,))
+
+ r_pdu.ipv4 = rpki.resource_set.resource_set_ipv4.from_sql(
+ self.cur,
+ """
+ SELECT start_ip, end_ip
+ FROM ee_certificate_net
+ WHERE ee_certificate_id = %s AND version = 4
+ """,
+ (ee_certificate_id,))
+
+ r_pdu.ipv6 = rpki.resource_set.resource_set_ipv6.from_sql(
+ self.cur,
+ """
+ SELECT start_ip, end_ip
+ FROM ee_certificate_net
+ WHERE ee_certificate_id = %s AND version = 6
+ """,
+ (ee_certificate_id,))
+
+ r_msg.append(r_pdu)
+
+
handle_dispatch = {
rpki.left_right.list_resources_elt : handle_list_resources,
rpki.left_right.list_roa_requests_elt : handle_list_roa_requests,
diff --git a/rpkid/tests/old_irdbd.sql b/rpkid/tests/old_irdbd.sql
index bf324cd8..0f349e2b 100644
--- a/rpkid/tests/old_irdbd.sql
+++ b/rpkid/tests/old_irdbd.sql
@@ -42,6 +42,9 @@ DROP TABLE IF EXISTS registrant_net;
DROP TABLE IF EXISTS registrant_asn;
DROP TABLE IF EXISTS registrant;
DROP TABLE IF EXISTS ghostbuster_request;
+DROP TABLE IF EXISTS ee_certificate_asn;
+DROP TABLE IF EXISTS ee_certificate_net;
+DROP TABLE IF EXISTS ee_certificate;
CREATE TABLE registrant (
registrant_id SERIAL NOT NULL,
@@ -54,29 +57,29 @@ CREATE TABLE registrant (
) ENGINE=InnoDB;
CREATE TABLE registrant_asn (
- registrant_asn_id SERIAL NOT NULL,
start_as BIGINT UNSIGNED NOT NULL,
end_as BIGINT UNSIGNED NOT NULL,
registrant_id BIGINT UNSIGNED NOT NULL,
- PRIMARY KEY (registrant_asn_id),
+ PRIMARY KEY (registrant_id, start_as, end_as),
CONSTRAINT registrant_asn_registrant_id
- FOREIGN KEY (registrant_id) REFERENCES registrant (registrant_id) ON DELETE CASCADE
+ FOREIGN KEY (registrant_id) REFERENCES registrant (registrant_id)
+ ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE registrant_net (
- registrant_net_id SERIAL NOT NULL,
start_ip VARCHAR(40) NOT NULL,
end_ip VARCHAR(40) NOT NULL,
version TINYINT UNSIGNED NOT NULL,
registrant_id BIGINT UNSIGNED NOT NULL,
- PRIMARY KEY (registrant_net_id),
+ PRIMARY KEY (registrant_id, version, start_ip, end_ip),
CONSTRAINT registrant_net_registrant_id
- FOREIGN KEY (registrant_id) REFERENCES registrant (registrant_id) ON DELETE CASCADE
+ FOREIGN KEY (registrant_id) REFERENCES registrant (registrant_id)
+ ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE roa_request (
roa_request_id SERIAL NOT NULL,
- roa_request_handle VARCHAR(255) NOT NULL,
+ self_handle VARCHAR(255) NOT NULL,
asn BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (roa_request_id)
) ENGINE=InnoDB;
@@ -89,17 +92,49 @@ CREATE TABLE roa_request_prefix (
roa_request_id BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (roa_request_id, prefix, prefixlen, max_prefixlen),
CONSTRAINT roa_request_prefix_roa_request_id
- FOREIGN KEY (roa_request_id) REFERENCES roa_request (roa_request_id) ON DELETE CASCADE
+ FOREIGN KEY (roa_request_id) REFERENCES roa_request (roa_request_id)
+ ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE ghostbuster_request (
ghostbuster_request_id SERIAL NOT NULL,
- self_handle VARCHAR(40) NOT NULL,
- parent_handle VARCHAR(40),
+ self_handle VARCHAR(255) NOT NULL,
+ parent_handle VARCHAR(255),
vcard LONGBLOB NOT NULL,
PRIMARY KEY (ghostbuster_request_id)
) ENGINE=InnoDB;
+CREATE TABLE ee_certificate (
+ ee_certificate_id SERIAL NOT NULL,
+ self_handle VARCHAR(255) NOT NULL,
+ gski VARCHAR(27) NOT NULL,
+ router_id INT UNSIGNED,
+ valid_until DATETIME NOT NULL,
+ PRIMARY KEY (ee_certificate_id),
+ UNIQUE (self_handle, gski)
+) ENGINE=InnoDB;
+
+CREATE TABLE ee_certificate_asn (
+ start_as BIGINT UNSIGNED NOT NULL,
+ end_as BIGINT UNSIGNED NOT NULL,
+ ee_certificate_id BIGINT UNSIGNED NOT NULL,
+ PRIMARY KEY (ee_certificate_id, start_as, end_as),
+ CONSTRAINT ee_certificate_asn_ee_certificate_id
+ FOREIGN KEY (ee_certificate_id) REFERENCES ee_certificate (ee_certificate_id)
+ ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB;
+
+CREATE TABLE ee_certificate_net (
+ version TINYINT UNSIGNED NOT NULL,
+ start_ip VARCHAR(40) NOT NULL,
+ end_ip VARCHAR(40) NOT NULL,
+ ee_certificate_id BIGINT UNSIGNED NOT NULL,
+ PRIMARY KEY (ee_certificate_id, version, start_ip, end_ip),
+ CONSTRAINT ee_certificate_net_ee_certificate_id
+ FOREIGN KEY (ee_certificate_id) REFERENCES ee_certificate (ee_certificate_id)
+ ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB;
+
-- Local Variables:
-- indent-tabs-mode: nil
-- End:
diff --git a/rpkid/tests/smoketest.py b/rpkid/tests/smoketest.py
index e9135a42..81eb3a6d 100644
--- a/rpkid/tests/smoketest.py
+++ b/rpkid/tests/smoketest.py
@@ -757,7 +757,7 @@ class allocation(object):
cur.execute("INSERT registrant_net (start_ip, end_ip, version, registrant_id) VALUES (%s, %s, 6, %s)", (v6_range.min, v6_range.max, registrant_id))
cur.execute("UPDATE registrant SET valid_until = %s WHERE registrant_id = %s", (kid.resources.valid_until, registrant_id))
for r in s.roa_requests:
- cur.execute("INSERT roa_request (roa_request_handle, asn) VALUES (%s, %s)", (s.name, r.asn))
+ cur.execute("INSERT roa_request (self_handle, asn) VALUES (%s, %s)", (s.name, r.asn))
roa_request_id = cur.lastrowid
for version, prefix_set in ((4, r.v4), (6, r.v6)):
if prefix_set: