aboutsummaryrefslogtreecommitdiff
path: root/rpki/rpkic.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpki/rpkic.py')
-rw-r--r--rpki/rpkic.py99
1 files changed, 56 insertions, 43 deletions
diff --git a/rpki/rpkic.py b/rpki/rpkic.py
index 8ce28b59..417c53fe 100644
--- a/rpki/rpkic.py
+++ b/rpki/rpkic.py
@@ -47,13 +47,9 @@ import rpki.x509
import rpki.async
import rpki.version
-from rpki.cli import Cmd, parsecmd, cmdarg
+from lxml.etree import Element, 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 +120,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 +128,35 @@ class main(Cmd):
self.histfile = cfg.get("history_file", os.path.expanduser("~/.rpkic_history"))
self.autosync = cfg.getboolean("autosync", True, section = "rpkic")
- import django
+ # This should go away now that we have rpki.django_settings, but
+ # let's get a verbose log with it present first to see what
+ # changes.
- from django.conf import settings
+ use_south = True
+ setup_db = False
- 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 use_south:
+ os.environ.update(DJANGO_SETTINGS_MODULE = "rpki.django_settings")
- if django.VERSION >= (1, 7): # API change, feh
- from django.apps import apps
- apps.populate(settings.INSTALLED_APPS)
+ else:
+ import django
+ 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 rpki.irdb # pylint: disable=W0621
@@ -173,8 +178,12 @@ 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)
+ if setup_db:
+ import django.core.management
+ django.core.management.call_command("syncdb", verbosity = 3, load_initial_data = False)
+
+ if setup_db and use_south:
+ django.core.management.call_command("migrate", verbosity = 3)
self.zoo = rpki.irdb.Zookeeper(cfg = cfg, handle = self.handle, logstream = sys.stdout)
@@ -607,18 +616,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 +638,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)