diff options
Diffstat (limited to 'rpki/rpkic.py')
-rw-r--r-- | rpki/rpkic.py | 106 |
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 |