aboutsummaryrefslogtreecommitdiff
path: root/rpki
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2014-08-12 15:35:45 +0000
committerRob Austein <sra@hactrn.net>2014-08-12 15:35:45 +0000
commit507af6c1abba20a65450e16ef13fe09a398b8f91 (patch)
tree111439eeb1f6263ffd77ace5e1e16e1e5b20182d /rpki
parentb01cefe6bcfeeaea58b1dc54caedb53aa6952150 (diff)
HTTP publication of RRDP.
svn path=/branches/tk705/; revision=5918
Diffstat (limited to 'rpki')
-rw-r--r--rpki/pubd.py28
-rw-r--r--rpki/sql_schemas.py2
2 files changed, 22 insertions, 8 deletions
diff --git a/rpki/pubd.py b/rpki/pubd.py
index ae2265bf..b6788ebd 100644
--- a/rpki/pubd.py
+++ b/rpki/pubd.py
@@ -125,9 +125,11 @@ class main(object):
self.publication_base = self.cfg.get("publication-base", "publication/")
- self.rrdp_uri_base = self.cfg.get("rrdp-uri-base", "http://%s/" % socket.getfqdn())
+ self.rrdp_uri_base = self.cfg.get("rrdp-uri-base",
+ "http://%s/rrdp/" % socket.getfqdn())
self.rrdp_expiration_interval = rpki.sundial.timedelta.parse(self.cfg.get("rrdp-expiration-interval", "6h"))
- self.rrdp_publication_base = self.cfg.get("rrdp-publication-base", "rrdp-publication/")
+ self.rrdp_publication_base = self.cfg.get("rrdp-publication-base",
+ "rrdp-publication/")
self.session = session_obj.fetch(self)
@@ -138,6 +140,10 @@ class main(object):
("/client/", self.client_handler)))
+ def rrdp_filename_to_uri(self, fn):
+ return "%s/%s" % (self.rrdp_uri_base.rstrip("/"), fn)
+
+
def control_handler(self, query, path, cb):
"""
Process one PDU from the IRBE.
@@ -346,12 +352,20 @@ class session_obj(rpki.sql.sql_persistent):
self.hash = rpki.x509.sha256(self.snapshot).encode("hex")
self.sql_store()
+ @property
+ def snapshot_fn(self):
+ return "%s/snapshot/%s.xml" % (self.uuid, self.serial)
+
+ @property
+ def notification_fn(self):
+ return "updates.xml"
+
def write_snapshot(self):
"""
Write current session snapshot to disk.
"""
- self.write_rrdp_file("snapshot/%s/%s.xml" % (self.uuid, self.serial), self.snapshot)
+ self.write_rrdp_file(self.snapshot_fn, self.snapshot)
def write_deltas(self):
"""
@@ -371,16 +385,16 @@ class session_obj(rpki.sql.sql_persistent):
session_id = self.uuid,
serial = str(self.serial))
SubElement(xml, rrdp_xmlns + "snapshot",
- uri = "%s/snapshot/%s/%d.xml" % (self.gctx.rrdp_uri_base, self.uuid, self.serial),
+ uri = self.gctx.rrdp_filename_to_uri(self.snapshot_fn),
hash = self.hash)
for delta in self.deltas:
se = SubElement(xml, rrdp_xmlns + "delta",
to = str(delta.serial),
- uri = "%s/%s" % (self.gctx.rrdp_uri_base, delta.fn),
+ uri = self.gctx.rrdp_filename_to_uri(delta.fn),
hash = delta.hash)
se.set("from", str(delta.serial - 1))
rpki.relaxng.rrdp.assertValid(xml)
- self.write_rrdp_file("notification/%s.xml" % self.uuid,
+ self.write_rrdp_file(self.notification_fn,
ElementToString(xml, pretty_print = True),
overwrite = True)
@@ -406,7 +420,7 @@ class delta_obj(rpki.sql.sql_persistent):
@property
def fn(self):
- return "deltas/%s/%s-%s.xml" % (self.session.uuid, self.serial - 1, self.serial)
+ return "%s/deltas/%s-%s.xml" % (self.session.uuid, self.serial - 1, self.serial)
@classmethod
def create(cls, session):
diff --git a/rpki/sql_schemas.py b/rpki/sql_schemas.py
index 38ce8fc8..fc262f12 100644
--- a/rpki/sql_schemas.py
+++ b/rpki/sql_schemas.py
@@ -245,7 +245,7 @@ CREATE TABLE ee_cert (
## @var pubd
## SQL schema pubd
-pubd = '''-- $Id: pubd.sql 5901 2014-07-17 21:57:36Z sra $
+pubd = '''-- $Id: pubd.sql 5914 2014-08-06 22:52:28Z sra $
-- Copyright (C) 2012--2014 Dragon Research Labs ("DRL")
-- Portions copyright (C) 2009--2010 Internet Systems Consortium ("ISC")