aboutsummaryrefslogtreecommitdiff
path: root/myrpki
diff options
context:
space:
mode:
Diffstat (limited to 'myrpki')
-rw-r--r--myrpki/yaml-to-myrpki.py85
1 files changed, 35 insertions, 50 deletions
diff --git a/myrpki/yaml-to-myrpki.py b/myrpki/yaml-to-myrpki.py
index 91b0db7d..da1e230e 100644
--- a/myrpki/yaml-to-myrpki.py
+++ b/myrpki/yaml-to-myrpki.py
@@ -37,6 +37,8 @@ PERFORMANCE OF THIS SOFTWARE.
import subprocess, csv, re, os, getopt, sys, ConfigParser, base64, yaml
import rpki.resource_set, rpki.sundial
+test_dir = "test"
+
base_port = 4400
def allocate_port():
@@ -45,19 +47,6 @@ def allocate_port():
base_port += 1
return p
-def copy_conf(input_file, output_file, replacement_dict = {}):
- cfg = ConfigParser.RawConfigParser()
- cfg.read(input_file)
- cfg.remove_section("myirbe")
- for opt in cfg.items("myrpki"):
- cfg.remove_option("myrpki", opt[0])
- for k, v in replacement_dict.iteritems():
- cfg.set("myrpki", k, v)
- f = open(output_file, "w")
- f.write("# Automatically generated from %s, do not edit\n" % input_file)
- cfg.write(f)
- f.close()
-
class roa_request(object):
def __init__(self, asn, ipv4, ipv6):
@@ -180,34 +169,43 @@ class allocation(object):
return self.hosted_by is not None
def path(self, filename):
- return os.path.join("test", self.name, filename)
+ return os.path.join(os.getcwd(), test_dir, self.name, filename)
+
+ def outfile(self, filename):
+ return open(self.path(filename), "w")
- def dump_asns(self, f):
+ def dump_asns(self, fn):
+ f = self.outfile(fn)
for k in self.kids:
for a in k.resources.asn:
f.write("%s\t%s\n" % (k.name, a))
- def dump_children(self, f):
+ def dump_children(self, fn):
+ f = self.outfile(fn)
for k in self.kids:
f.write("%s\t%s\t%s\n" % (k.name, k.resources.valid_until, k.path("ca.cer")))
- def dump_parents(self, f):
+ def dump_parents(self, fn):
+ f = self.outfile(fn)
if not self.is_root():
f.write("%s\t%s\t%s\n" % (self.parent.name, "https://some.where.example/", self.parent.path("ca.cer")))
- def dump_prefixes(self, f):
+ def dump_prefixes(self, fn):
+ f = self.outfile(fn)
for k in self.kids:
for p in k.resources.v4 + k.resources.v6:
f.write("%s\t%s\n" % (k.name, p))
- def dump_roas(self, f):
+ def dump_roas(self, fn):
+ f = self.outfile(fn)
for r in self.roa_requests:
for p in r.v4 + r.v6 if r.v4 and r.v6 else r.v4 or r.v6 or ():
f.write("%s\t%s\n" % (p, r.asn))
- def dump_conf(self, input_file, f):
+ def dump_conf(self, fn):
+ f = self.outfile(fn)
cfg = ConfigParser.RawConfigParser()
- cfg.read(input_file)
+ cfg.read("myrpki.conf")
cfg.set("myrpki", "handle", self.name)
if self.is_hosted():
cfg.remove_section("myirbe")
@@ -215,34 +213,21 @@ class allocation(object):
cfg.set("myirbe", "rsync_base", "rsync://localhost:%d/" % self.rsync_port)
cfg.set("myirbe", "pubd_base", "https://localhost:%d" % self.pubd_port)
cfg.set("myirbe", "rpkid_base", "https://localhost:%d" % self.rpkid_port)
- f.write("# Automatically generated from %s, do not edit\n" % input_file)
+ f.write("# Automatically generated, do not edit\n")
cfg.write(f)
-#copy_conf("myrpki.conf", "/dev/stdout")
-
-if False:
- yaml_file = sys.argv[1]
-elif False:
- yaml_file = "../rpkid/testbed.6.yaml"
-else:
- yaml_file = "test.yaml"
-
-# Can't use yaml.safe_load() because it objects to subsequent
-# documents in the same file. Can't subscript result of
-# yaml.safe_load_all() because it's a generator. So we call .next(),
-# per the generator protocol, to get the first document.
-
-yaml_doc = yaml.safe_load_all(open(yaml_file)).next()
-
-db = allocation_db(yaml_doc)
-
-#db.dump()
-
-for d in db:
- os.makedirs(d.path(""))
- d.dump_asns(open(d.path("asns.csv"), "w"))
- d.dump_children(open(d.path("children.csv"), "w"))
- d.dump_parents(open(d.path("parents.csv"), "w"))
- d.dump_prefixes(open(d.path("prefixes.csv"), "w"))
- d.dump_roas(open(d.path("roas.csv"), "w"))
- d.dump_conf("myrpki.conf", open(d.path("myrpki.conf"), "w"))
+for root, dirs, files in os.walk(test_dir, topdown = False):
+ for file in files:
+ os.remove(os.path.join(root, file))
+ for dir in dirs:
+ os.rmdir(os.path.join(root, dir))
+
+for yaml_file in sys.argv[1:]:
+ for d in allocation_db(yaml.safe_load_all(open(yaml_file)).next()):
+ os.makedirs(d.path(""))
+ d.dump_asns("asns.csv")
+ d.dump_children("children.csv")
+ d.dump_parents("parents.csv")
+ d.dump_prefixes("prefixes.csv")
+ d.dump_roas("roas.csv")
+ d.dump_conf("myrpki.conf")