aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2009-07-04 20:14:29 +0000
committerRob Austein <sra@hactrn.net>2009-07-04 20:14:29 +0000
commit255b252f3461470925f2ad58eadc75b07885dffa (patch)
tree39e56b196c311f352ea3a39e3524dda540a8a1d0
parent6462e03109be39a7e6e82ba5c49874d4652b5810 (diff)
Start teaching myirbe.py to do rpkid object setup.
svn path=/myrpki/myirbe.py; revision=2572
-rw-r--r--myrpki/myirbe.py69
-rw-r--r--myrpki/run-daemons.sh19
2 files changed, 77 insertions, 11 deletions
diff --git a/myrpki/myirbe.py b/myrpki/myirbe.py
index 9debb4b0..6198a5a6 100644
--- a/myrpki/myirbe.py
+++ b/myrpki/myirbe.py
@@ -20,7 +20,7 @@ PERFORMANCE OF THIS SOFTWARE.
import lxml.etree, base64, subprocess, sys, os, time, getopt, MySQLdb
import rpki.https, rpki.config, rpki.resource_set, rpki.relaxng
-import rpki.exceptions, rpki.left_right, rpki.log, rpki.x509
+import rpki.exceptions, rpki.left_right, rpki.log, rpki.x509, rpki.async
import myrpki
rng = lxml.etree.RelaxNG(lxml.etree.parse("myrpki.rng"))
@@ -28,6 +28,40 @@ rng = lxml.etree.RelaxNG(lxml.etree.parse("myrpki.rng"))
def tag(t):
return "{http://www.hactrn.net/uris/rpki/myrpki/}" + t
+class caller(object):
+
+ debug = True
+
+ def __init__(self, proto, client_key, client_cert, server_ta, server_cert, url):
+ self.proto = proto
+ self.client_key = client_key
+ self.client_cert = client_cert
+ self.server_ta = server_ta
+ self.server_cert = server_cert
+ self.url = url
+
+ def __call__(self, cb, eb, pdus):
+
+ def done(cms):
+ msg, xml = rpki.left_right.cms_msg.unwrap(cms, (self.server_ta, self.server_cert), pretty_print = True)
+ if self.debug:
+ print "Reply:", xml
+ cb(msg)
+
+ msg = self.proto.msg.query(pdus)
+ cms, xml = self.proto.cms_msg.wrap(msg, self.client_key, self.client_cert, pretty_print = True)
+ if self.debug:
+ print "Query:", xml
+
+ rpki.https.client(
+ client_key = self.client_key,
+ client_cert = self.client_cert,
+ server_ta = self.server_ta,
+ url = self.url,
+ msg = cms,
+ callback = done,
+ errback = eb)
+
os.environ["TZ"] = "UTC"
time.tzset()
@@ -146,24 +180,37 @@ if hosted_cacert:
hosted_cacert = p.communicate(base64.b64decode(hosted_cacert))[0]
if p.wait() != 0:
raise RuntimeError, "Couldn't convert certificate to PEM format"
-
-
-if hosted_cacert:
bpki_rpkid.fxcert(my_handle + ".cacert.cer", hosted_cacert, path_restriction = 1)
-
-if hosted_cacert:
bpki_pubd.fxcert(my_handle + ".cacert.cer", hosted_cacert)
+call_rpkid = rpki.async.sync_wrapper(caller(
+ proto = rpki.left_right,
+ client_key = rpki.x509.RSA(PEM_file = bpki_rpkid.dir + "/irbe_cli.key"),
+ client_cert = rpki.x509.X509(PEM_file = bpki_rpkid.dir + "/irbe_cli.cer"),
+ server_ta = rpki.x509.X509(PEM_file = bpki_rpkid.cer),
+ server_cert = rpki.x509.X509(PEM_file = bpki_rpkid.dir + "/rpkid.cer"),
+ url = "https://localhost:4404/left-right"))
+
+call_pubd = rpki.async.sync_wrapper(caller(
+ proto = rpki.left_right,
+ client_key = rpki.x509.RSA(PEM_file = bpki_pubd.dir + "/irbe_cli.key"),
+ client_cert = rpki.x509.X509(PEM_file = bpki_pubd.dir + "/irbe_cli.cer"),
+ server_ta = rpki.x509.X509(PEM_file = bpki_pubd.cer),
+ server_cert = rpki.x509.X509(PEM_file = bpki_pubd.dir + "/pubd.cer"),
+ url = "https://localhost:4404/left-right"))
+
rpkid_pdus = [
- rpki.left_right.self_elt.make_pdu( action = "get", self_handle = my_handle),
- rpki.left_right.bsc_elt.make_pdu( action = "list", self_handle = my_handle),
- rpki.left_right.parent_elt.make_pdu( action = "list", self_handle = my_handle),
- rpki.left_right.child_elt.make_pdu( action = "list", self_handle = my_handle),
- rpki.left_right.repository_elt.make_pdu(action = "list", self_handle = my_handle) ]
+ rpki.left_right.self_elt.make_pdu( action = "get", tag = "self", self_handle = my_handle),
+ rpki.left_right.bsc_elt.make_pdu( action = "list", tag = "bsc", self_handle = my_handle),
+ rpki.left_right.parent_elt.make_pdu( action = "list", tag = "parent", self_handle = my_handle),
+ rpki.left_right.child_elt.make_pdu( action = "list", tag = "child", self_handle = my_handle),
+ rpki.left_right.repository_elt.make_pdu(action = "list", tag = "repository", self_handle = my_handle) ]
pubd_pdus = [
rpki.publication.client_elt.make_pdu( action = "get", client_handle = my_handle) ]
+call_rpkid(rpkid_pdus)
+
def showcerts():
def showpem(label, b64, kind):
diff --git a/myrpki/run-daemons.sh b/myrpki/run-daemons.sh
new file mode 100644
index 00000000..0eb93c8e
--- /dev/null
+++ b/myrpki/run-daemons.sh
@@ -0,0 +1,19 @@
+#!/bin/sh -
+# $Id$
+
+set -x
+
+if test -z "$STY"
+then
+
+ exec screen -L sh $0 ${1+"$@"}
+
+else
+
+ screen python ../rpkid/irdbd.py
+ screen python ../rpkid/rpkid.py
+ screen python ../rpkid/pubd.py
+
+ #if test -n "$*"; then sleep 5; "$@"; fi
+
+fi