diff options
author | Rob Austein <sra@hactrn.net> | 2009-07-04 20:14:29 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2009-07-04 20:14:29 +0000 |
commit | 255b252f3461470925f2ad58eadc75b07885dffa (patch) | |
tree | 39e56b196c311f352ea3a39e3524dda540a8a1d0 | |
parent | 6462e03109be39a7e6e82ba5c49874d4652b5810 (diff) |
Start teaching myirbe.py to do rpkid object setup.
svn path=/myrpki/myirbe.py; revision=2572
-rw-r--r-- | myrpki/myirbe.py | 69 | ||||
-rw-r--r-- | myrpki/run-daemons.sh | 19 |
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 |