aboutsummaryrefslogtreecommitdiff
path: root/portal-gui/rpkigui/myrpki/glue.py
diff options
context:
space:
mode:
Diffstat (limited to 'portal-gui/rpkigui/myrpki/glue.py')
-rw-r--r--portal-gui/rpkigui/myrpki/glue.py152
1 files changed, 152 insertions, 0 deletions
diff --git a/portal-gui/rpkigui/myrpki/glue.py b/portal-gui/rpkigui/myrpki/glue.py
new file mode 100644
index 00000000..23609131
--- /dev/null
+++ b/portal-gui/rpkigui/myrpki/glue.py
@@ -0,0 +1,152 @@
+from __future__ import with_statement
+
+import os
+import os.path
+import csv
+import math
+import rpki.myrpki
+from rpki.resource_set import resource_range_ipv4
+from rpki.ipaddrs import v4addr
+import settings
+
+def form_to_conf(data):
+ """Write out a myrpki.conf based on the given form data."""
+ handle = data['handle']
+ confdir = settings.MYRPKI_DATA_DIR + '/' + handle
+ if os.path.exists(confdir):
+ raise RuntimeError, '%s: directory already exists!' % (confdir, )
+ os.makedirs(confdir)
+ template = open(settings.MYRPKI_DATA_DIR + '/examples/myrpki.conf', 'r').read()
+ # stuff the appropriate output directory into the dict
+ data['MYRPKI_DATA_DIR'] = confdir
+ with open(confdir + '/myrpki.conf', 'w') as conf:
+ print >>conf, template % data
+ invoke_rpki(handle, ['initialize'])
+
+def invoke_rpki(handle, args):
+ """Invoke the myrpki cli for the specified configuration."""
+ config = settings.MYRPKI_DATA_DIR + '/' + handle + '/myrpki.conf'
+ os.chdir(settings.MYRPKI_DATA_DIR + '/' + handle)
+ cmd = 'python ' + settings.MYRPKI_SRC_DIR + '/myrpki.py ' + ' '.join(['--config=' + config] + args)
+ print 'invoking', cmd
+ os.system(cmd)
+
+def read_identity(handle):
+ fname = settings.MYRPKI_DATA_DIR + '/' + handle + '/entitydb/identity.xml'
+ with open(fname, 'r') as fp:
+ data = fp.read()
+ return data
+
+def read_child_response(handle, child):
+ fname = '%s/%s/entitydb/children/%s.xml' % (settings.MYRPKI_DATA_DIR, handle, child)
+ with open(fname, 'r') as fp:
+ data = fp.read()
+ return data
+
+def output_asns(handle):
+ '''Write out csv file containing resources delegated to my children.'''
+ confdir = settings.MYRPKI_DATA_DIR + '/' + handle.handle
+ f = csv.writer(open(confdir + '/asns.csv', 'w'), delimiter='\t')
+ for p in handle.children.all():
+ for asn in p.asn.all():
+ if asn.lo == asn.hi:
+ f.writerow([p.handle, asn.lo])
+
+def output_prefixes(handle):
+ '''Write out csv file containing resources delegated to my children.'''
+ confdir = settings.MYRPKI_DATA_DIR + '/' + handle.handle
+ f = csv.writer(open(confdir + '/prefixes.csv', 'w'), delimiter='\t')
+ for p in handle.children.all():
+ for prefix in p.address_range.all():
+ f.writerow([p.handle, '%s-%s' % (prefix.lo, prefix.hi)])
+
+def output_roas(handle):
+ confdir = settings.MYRPKI_DATA_DIR + '/' + handle.handle
+ f = csv.writer(open(confdir + '/roas.csv', 'w'), delimiter='\t')
+ for r in handle.roas.all():
+ for addr in r.prefix.all():
+ f.writerow([resource_range_ipv4(v4addr(str(addr.lo)), v4addr(str(addr.hi))),
+ r.asn, handle.handle])
+
+def configure_resources(handle):
+ # write out the .csv files and invoke the myrpki command line tool
+ output_asns(handle)
+ output_prefixes(handle)
+ output_roas(handle)
+ #invoke_rpki(handle.handle, ['configure_daemons'])
+from __future__ import with_statement
+
+import os
+import os.path
+import csv
+import math
+import rpki.myrpki
+from rpki.resource_set import resource_range_ipv4
+from rpki.ipaddrs import v4addr
+import settings
+
+def form_to_conf(data):
+ """Write out a myrpki.conf based on the given form data."""
+ handle = data['handle']
+ confdir = settings.MYRPKI_DATA_DIR + '/' + handle
+ if os.path.exists(confdir):
+ raise RuntimeError, '%s: directory already exists!' % (confdir, )
+ os.makedirs(confdir)
+ template = open(settings.MYRPKI_DATA_DIR + '/examples/myrpki.conf', 'r').read()
+ # stuff the appropriate output directory into the dict
+ data['MYRPKI_DATA_DIR'] = confdir
+ with open(confdir + '/myrpki.conf', 'w') as conf:
+ print >>conf, template % data
+ invoke_rpki(handle, ['initialize'])
+
+def invoke_rpki(handle, args):
+ """Invoke the myrpki cli for the specified configuration."""
+ config = settings.MYRPKI_DATA_DIR + '/' + handle + '/myrpki.conf'
+ os.chdir(settings.MYRPKI_DATA_DIR + '/' + handle)
+ cmd = 'python ' + settings.MYRPKI_SRC_DIR + '/myrpki.py ' + ' '.join(['--config=' + config] + args)
+ print 'invoking', cmd
+ os.system(cmd)
+
+def read_identity(handle):
+ fname = settings.MYRPKI_DATA_DIR + '/' + handle + '/entitydb/identity.xml'
+ with open(fname, 'r') as fp:
+ data = fp.read()
+ return data
+
+def read_child_response(handle, child):
+ fname = '%s/%s/entitydb/children/%s.xml' % (settings.MYRPKI_DATA_DIR, handle, child)
+ with open(fname, 'r') as fp:
+ data = fp.read()
+ return data
+
+def output_asns(handle):
+ '''Write out csv file containing resources delegated to my children.'''
+ confdir = settings.MYRPKI_DATA_DIR + '/' + handle.handle
+ f = csv.writer(open(confdir + '/asns.csv', 'w'), delimiter='\t')
+ for p in handle.children.all():
+ for asn in p.asn.all():
+ if asn.lo == asn.hi:
+ f.writerow([p.handle, asn.lo])
+
+def output_prefixes(handle):
+ '''Write out csv file containing resources delegated to my children.'''
+ confdir = settings.MYRPKI_DATA_DIR + '/' + handle.handle
+ f = csv.writer(open(confdir + '/prefixes.csv', 'w'), delimiter='\t')
+ for p in handle.children.all():
+ for prefix in p.address_range.all():
+ f.writerow([p.handle, '%s-%s' % (prefix.lo, prefix.hi)])
+
+def output_roas(handle):
+ confdir = settings.MYRPKI_DATA_DIR + '/' + handle.handle
+ f = csv.writer(open(confdir + '/roas.csv', 'w'), delimiter='\t')
+ for r in handle.roas.all():
+ for addr in r.prefix.all():
+ f.writerow([resource_range_ipv4(v4addr(str(addr.lo)), v4addr(str(addr.hi))),
+ r.asn, handle.handle])
+
+def configure_resources(handle):
+ # write out the .csv files and invoke the myrpki command line tool
+ output_asns(handle)
+ output_prefixes(handle)
+ output_roas(handle)
+ #invoke_rpki(handle.handle, ['configure_daemons'])