aboutsummaryrefslogtreecommitdiff
path: root/myrpki/yaml-to-myrpki.py
diff options
context:
space:
mode:
Diffstat (limited to 'myrpki/yaml-to-myrpki.py')
-rw-r--r--myrpki/yaml-to-myrpki.py36
1 files changed, 26 insertions, 10 deletions
diff --git a/myrpki/yaml-to-myrpki.py b/myrpki/yaml-to-myrpki.py
index da1e230e..da34636e 100644
--- a/myrpki/yaml-to-myrpki.py
+++ b/myrpki/yaml-to-myrpki.py
@@ -37,6 +37,9 @@ PERFORMANCE OF THIS SOFTWARE.
import subprocess, csv, re, os, getopt, sys, ConfigParser, base64, yaml
import rpki.resource_set, rpki.sundial
+section_regexp = re.compile("\s*\[\s*(.+?)\s*\]\s*$")
+variable_regexp = re.compile("\s*(\w+)\s*=\s*(.+?)\s*$")
+
test_dir = "test"
base_port = 4400
@@ -203,18 +206,31 @@ class allocation(object):
f.write("%s\t%s\n" % (p, r.asn))
def dump_conf(self, fn):
+
+ replacements = {
+ ("myrpki", "handle") : self.name,
+ ("myirbe", "rsync_base") : "rsync://localhost:%d/" % self.rsync_port,
+ ("myirbe", "pubd_base") : "https://localhost:%d" % self.pubd_port,
+ ("myirbe", "rpkid_base") : "https://localhost:%d" % self.rpkid_port }
+
f = self.outfile(fn)
- cfg = ConfigParser.RawConfigParser()
- cfg.read("myrpki.conf")
- cfg.set("myrpki", "handle", self.name)
- if self.is_hosted():
- cfg.remove_section("myirbe")
- else:
- 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, do not edit\n")
- cfg.write(f)
+
+ section = None
+
+ for line in open("myrpki.conf"):
+ m = section_regexp.match(line)
+ if m:
+ section = m.group(1)
+ if section is None or (self.is_hosted() and section == "myirbe"):
+ continue
+ if not m and section in ("myirbe", "myrpki"):
+ m = variable_regexp.match(line)
+ if m:
+ variable = m.group(1)
+ if (section, variable) in replacements:
+ line = variable + " = " + replacements[(section, variable)] + "\n"
+ f.write(line)
for root, dirs, files in os.walk(test_dir, topdown = False):
for file in files: