aboutsummaryrefslogtreecommitdiff
path: root/rpki/rpkic.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpki/rpkic.py')
-rw-r--r--rpki/rpkic.py106
1 files changed, 43 insertions, 63 deletions
diff --git a/rpki/rpkic.py b/rpki/rpkic.py
index 8ce28b59..ad695976 100644
--- a/rpki/rpkic.py
+++ b/rpki/rpkic.py
@@ -38,7 +38,6 @@ import time
import rpki.config
import rpki.sundial
import rpki.log
-import rpki.http
import rpki.resource_set
import rpki.relaxng
import rpki.exceptions
@@ -47,13 +46,9 @@ import rpki.x509
import rpki.async
import rpki.version
-from rpki.cli import Cmd, parsecmd, cmdarg
+from lxml.etree import SubElement
-class BadPrefixSyntax(Exception): "Bad prefix syntax."
-class CouldntTalkToDaemon(Exception): "Couldn't talk to daemon."
-class BadXMLMessage(Exception): "Bad XML message."
-class PastExpiration(Exception): "Expiration date has already passed."
-class CantRunRootd(Exception): "Can't run rootd."
+from rpki.cli import Cmd, parsecmd, cmdarg
module_doc = __doc__
@@ -124,7 +119,7 @@ class main(Cmd):
global rpki # pylint: disable=W0602
try:
- cfg = rpki.config.parser(self.cfg_file, "myrpki")
+ cfg = rpki.config.parser(set_filename = self.cfg_file, section = "myrpki")
cfg.set_global_flags()
except IOError, e:
sys.exit("%s: %s" % (e.strerror, e.filename))
@@ -132,26 +127,10 @@ class main(Cmd):
self.histfile = cfg.get("history_file", os.path.expanduser("~/.rpkic_history"))
self.autosync = cfg.getboolean("autosync", True, section = "rpkic")
- import django
+ os.environ.update(DJANGO_SETTINGS_MODULE = "rpki.django_settings.irdb")
- from django.conf import settings
-
- settings.configure(
- DATABASES = { "default" : {
- "ENGINE" : "django.db.backends.mysql",
- "NAME" : cfg.get("sql-database", section = "irdbd"),
- "USER" : cfg.get("sql-username", section = "irdbd"),
- "PASSWORD" : cfg.get("sql-password", section = "irdbd"),
- "HOST" : "",
- "PORT" : "",
- "OPTIONS" : { "init_command": "SET storage_engine=INNODB" }}},
- INSTALLED_APPS = ("rpki.irdb",),
- MIDDLEWARE_CLASSES = (), # API change, feh
- )
-
- if django.VERSION >= (1, 7): # API change, feh
- from django.apps import apps
- apps.populate(settings.INSTALLED_APPS)
+ import django
+ django.setup()
import rpki.irdb # pylint: disable=W0621
@@ -173,9 +152,6 @@ class main(Cmd):
except rpki.config.ConfigParser.Error:
pass
- import django.core.management
- django.core.management.call_command("syncdb", verbosity = 0, load_initial_data = False)
-
self.zoo = rpki.irdb.Zookeeper(cfg = cfg, handle = self.handle, logstream = sys.stdout)
@@ -229,7 +205,7 @@ class main(Cmd):
self.zoo.reset_identity(args.handle)
def complete_select_identity(self, *args):
- return self.irdb_handle_complete(rpki.irdb.ResourceHolderCA.objects, *args)
+ return self.irdb_handle_complete(rpki.irdb.models.ResourceHolderCA.objects, *args)
@parsecmd(argsubparsers)
@@ -340,9 +316,9 @@ class main(Cmd):
try:
self.zoo.delete_child(args.child_handle)
self.zoo.synchronize_ca()
- except rpki.irdb.ResourceHolderCA.DoesNotExist:
+ except rpki.irdb.models.ResourceHolderCA.DoesNotExist:
print "No such resource holder \"%s\"" % self.zoo.handle
- except rpki.irdb.Child.DoesNotExist:
+ except rpki.irdb.models.Child.DoesNotExist:
print "No such child \"%s\"" % args.child_handle
def complete_delete_child(self, *args):
@@ -385,9 +361,9 @@ class main(Cmd):
try:
self.zoo.delete_parent(args.parent_handle)
self.zoo.synchronize_ca()
- except rpki.irdb.ResourceHolderCA.DoesNotExist:
+ except rpki.irdb.models.ResourceHolderCA.DoesNotExist:
print "No such resource holder \"%s\"" % self.zoo.handle
- except rpki.irdb.Parent.DoesNotExist:
+ except rpki.irdb.models.Parent.DoesNotExist:
print "No such parent \"%s\"" % args.parent_handle
def complete_delete_parent(self, *args):
@@ -421,9 +397,9 @@ class main(Cmd):
try:
self.zoo.delete_rootd()
self.zoo.synchronize_ca()
- except rpki.irdb.ResourceHolderCA.DoesNotExist:
+ except rpki.irdb.models.ResourceHolderCA.DoesNotExist:
print "No such resource holder \"%s\"" % self.zoo.handle
- except rpki.irdb.Rootd.DoesNotExist:
+ except rpki.irdb.models.Rootd.DoesNotExist:
print "No associated rootd"
@@ -444,7 +420,7 @@ class main(Cmd):
r.save("%s.repository-response.xml" % client_handle.replace("/", "."), sys.stdout)
try:
self.zoo.synchronize_pubd()
- except rpki.irdb.Repository.DoesNotExist:
+ except rpki.irdb.models.Repository.DoesNotExist:
pass
@@ -458,9 +434,9 @@ class main(Cmd):
try:
self.zoo.delete_publication_client(args.client_handle)
self.zoo.synchronize_pubd()
- except rpki.irdb.ResourceHolderCA.DoesNotExist:
+ except rpki.irdb.models.ResourceHolderCA.DoesNotExist:
print "No such resource holder \"%s\"" % self.zoo.handle
- except rpki.irdb.Client.DoesNotExist:
+ except rpki.irdb.models.Client.DoesNotExist:
print "No such client \"%s\"" % args.client_handle
def complete_delete_publication_client(self, *args):
@@ -494,9 +470,9 @@ class main(Cmd):
try:
self.zoo.delete_repository(args.repository_handle)
self.zoo.synchronize_ca()
- except rpki.irdb.ResourceHolderCA.DoesNotExist:
+ except rpki.irdb.models.ResourceHolderCA.DoesNotExist:
print "No such resource holder \"%s\"" % self.zoo.handle
- except rpki.irdb.Repository.DoesNotExist:
+ except rpki.irdb.models.Repository.DoesNotExist:
print "No such repository \"%s\"" % args.repository_handle
def complete_delete_repository(self, *args):
@@ -512,7 +488,7 @@ class main(Cmd):
try:
self.zoo.delete_self()
self.zoo.synchronize_deleted_ca()
- except rpki.irdb.ResourceHolderCA.DoesNotExist:
+ except rpki.irdb.models.ResourceHolderCA.DoesNotExist:
print "No such resource holder \"%s\"" % self.zoo.handle
@@ -607,18 +583,20 @@ class main(Cmd):
Show resources received by this entity from its parent(s).
"""
- for pdu in self.zoo.call_rpkid(
- rpki.left_right.list_received_resources_elt.make_pdu(self_handle = self.zoo.handle)):
+ q_msg = self.zoo._compose_left_right_query()
+ SubElement(q_msg, rpki.left_right.tag_list_received_resources, self_handle = self.zoo.handle)
+
+ for r_pdu in self.zoo.call_rpkid(q_msg):
- print "Parent: ", pdu.parent_handle
- print " notBefore:", pdu.notBefore
- print " notAfter: ", pdu.notAfter
- print " URI: ", pdu.uri
- print " SIA URI: ", pdu.sia_uri
- print " AIA URI: ", pdu.aia_uri
- print " ASN: ", pdu.asn
- print " IPv4: ", pdu.ipv4
- print " IPv6: ", pdu.ipv6
+ print "Parent: ", r_pdu.get("parent_handle")
+ print " notBefore:", r_pdu.get("notBefore")
+ print " notAfter: ", r_pdu.get("notAfter")
+ print " URI: ", r_pdu.get("uri")
+ print " SIA URI: ", r_pdu.get("sia_uri")
+ print " AIA URI: ", r_pdu.get("aia_uri")
+ print " ASN: ", r_pdu.get("asn")
+ print " IPv4: ", r_pdu.get("ipv4")
+ print " IPv6: ", r_pdu.get("ipv6")
@parsecmd(argsubparsers)
@@ -627,16 +605,18 @@ class main(Cmd):
Show published objects.
"""
- for pdu in self.zoo.call_rpkid(
- rpki.left_right.list_published_objects_elt.make_pdu(self_handle = self.zoo.handle)):
+ q_msg = self.zoo._compose_left_right_query()
+ SubElement(q_msg, rpki.left_right.tag_list_published_objects, self_handle = self.zoo.handle)
- track = rpki.x509.uri_dispatch(pdu.uri)(Base64 = pdu.obj).tracking_data(pdu.uri)
- child = pdu.child_handle
+ for r_pdu in self.zoo.call_rpkid(q_msg):
+ uri = r_pdu.get("uri")
+ track = rpki.x509.uri_dispatch(uri)(Base64 = r_pdu.text).tracking_data(uri)
+ child_handle = r_pdu.get("child_handle")
- if child is None:
+ if child_handle is None:
print track
else:
- print track, child
+ print track, child_handle
@parsecmd(argsubparsers)
@@ -737,9 +717,9 @@ class main(Cmd):
self.zoo.delete_router_certificate_request(args.gski)
if self.autosync:
self.zoo.run_rpkid_now()
- except rpki.irdb.ResourceHolderCA.DoesNotExist:
+ except rpki.irdb.models.ResourceHolderCA.DoesNotExist:
print "No such resource holder \"%s\"" % self.zoo.handle
- except rpki.irdb.EECertificateRequest.DoesNotExist:
+ except rpki.irdb.models.EECertificateRequest.DoesNotExist:
print "No certificate request matching g(SKI) \"%s\"" % args.gski
def complete_delete_router_certificate_request(self, text, line, begidx, endidx):
@@ -881,6 +861,6 @@ class main(Cmd):
List all <self/> handles in this rpkid instance.
"""
- for ca in rpki.irdb.ResourceHolderCA.objects.all():
+ for ca in rpki.irdb.models.ResourceHolderCA.objects.all():
print ca.handle