aboutsummaryrefslogtreecommitdiff
path: root/myrpki
diff options
context:
space:
mode:
Diffstat (limited to 'myrpki')
-rw-r--r--myrpki/Makefile16
-rw-r--r--myrpki/myrpki.py20
l---------myrpki/rpki1
-rwxr-xr-xmyrpki/xml-parse-test.py28
4 files changed, 37 insertions, 28 deletions
diff --git a/myrpki/Makefile b/myrpki/Makefile
new file mode 100644
index 00000000..723d45e0
--- /dev/null
+++ b/myrpki/Makefile
@@ -0,0 +1,16 @@
+# $Id$
+
+all: myrpki.xml lint parse
+
+
+myrpki.xml: myrpki.py asns.csv prefixes.csv roas.csv validity.csv
+ python myrpki.py
+
+lint: myrpki.xml myrpki.rng
+ xmllint --noout --relaxng myrpki.rng myrpki.xml
+
+myrpki.rng: myrpki.rnc
+ trang myrpki.rnc myrpki.rng
+
+parse: myrpki.xml myrpki.rng
+ python xml-parse-test.py
diff --git a/myrpki/myrpki.py b/myrpki/myrpki.py
index 4c5df830..e4dd7409 100644
--- a/myrpki/myrpki.py
+++ b/myrpki/myrpki.py
@@ -46,9 +46,6 @@ bpki_ee_req_file = cfg.get(myrpki_section, "bpki_ee_pkcs10")
output_filename = cfg.get(myrpki_section, "output_filename")
relaxng_schema = cfg.get(myrpki_section, "relaxng_schema")
-v4regexp = re.compile("^[-0-9./]+$", re.I)
-v6regexp = re.compile("^[-0-9a-f:/]+$", re.I)
-
class comma_set(set):
def __str__(self):
@@ -56,15 +53,18 @@ class comma_set(set):
class roa_request(object):
+ v4re = re.compile("^([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]+(-[0-9]+)?$", re.I)
+ v6re = re.compile("^([0-9a-f]{0,4}:){0,15}[0-9a-f]{0,4}/[0-9]+(-[0-9]+)?$", re.I)
+
def __init__(self, asn):
self.asn = asn
self.v4 = comma_set()
self.v6 = comma_set()
def add(self, prefix):
- if v4regexp.match(prefix):
+ if self.v4re.match(prefix):
self.v4.add(prefix)
- elif v6regexp.match(prefix):
+ elif self.v6re.match(prefix):
self.v6.add(prefix)
else:
raise RuntimeError, 'Bad prefix syntax: "%s"' % prefix
@@ -88,6 +88,9 @@ class roa_requests(dict):
class child(object):
+ v4re = re.compile("^(([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]+)|(([0-9]{1,3}\.){3}[0-9]{1,3}-([0-9]{1,3}\.){3}[0-9]{1,3})$", re.I)
+ v6re = re.compile("^(([0-9a-f]{0,4}:){0,15}[0-9a-f]{0,4}/[0-9]+)|(([0-9a-f]{0,4}:){0,15}[0-9a-f]{0,4}-([0-9a-f]{0,4}:){0,15}[0-9a-f]{0,4})$", re.I)
+
def __init__(self, handle):
self.handle = handle
self.asns = comma_set()
@@ -97,9 +100,9 @@ class child(object):
def add(self, prefix = None, asn = None, validity = None):
if prefix is not None:
- if v4regexp.match(prefix):
+ if self.v4re.match(prefix):
self.v4.add(prefix)
- elif v6regexp.match(prefix):
+ elif self.v6re.match(prefix):
self.v6.add(prefix)
else:
raise RuntimeError, 'Bad prefix syntax: "%s"' % prefix
@@ -194,6 +197,3 @@ bpki_ee(e)
ElementTree(e).write(output_filename + ".tmp")
os.rename(output_filename + ".tmp", output_filename)
-
-subprocess.check_call(("xmllint", "-relaxng", relaxng_schema,
- "-noout", output_filename))
diff --git a/myrpki/rpki b/myrpki/rpki
new file mode 120000
index 00000000..168548eb
--- /dev/null
+++ b/myrpki/rpki
@@ -0,0 +1 @@
+../rpkid/rpki \ No newline at end of file
diff --git a/myrpki/xml-parse-test.py b/myrpki/xml-parse-test.py
index 3afb38a7..6fb9b583 100755
--- a/myrpki/xml-parse-test.py
+++ b/myrpki/xml-parse-test.py
@@ -7,23 +7,15 @@ rng = lxml.etree.RelaxNG(lxml.etree.parse("myrpki.rng"))
tree = lxml.etree.parse("myrpki.xml").getroot()
if False:
- print lxml.etree.tostring(
- tree,
- pretty_print = True,
- encoding = "us-ascii",
- xml_declaration = True)
+ print lxml.etree.tostring(tree, pretty_print = True, encoding = "us-ascii", xml_declaration = True)
rng.assertValid(tree)
-if False:
- for x in tree.getiterator():
- print x
- # print x.get("handle")
+def showitems(x):
+ if False:
for k, v in x.items():
if v:
print " ", k, v
- if x.text:
- print " ", x.text
def tag(t):
return "{http://www.hactrn.net/uris/rpki/myrpki/}" + t
@@ -36,16 +28,16 @@ for x in tree.getiterator(tag("child")):
print " Handle:", x.get("handle")
print " ASNS: ", rpki.resource_set.resource_set_as(x.get("asns"))
print " IPv4: ", rpki.resource_set.resource_set_ipv4(x.get("v4"))
- for k, v in x.items():
- if v:
- print " ", k, v
+ print " Valid: ", x.get("valid_until")
+ showitems(x)
print "ROA requests:"
for x in tree.getiterator(tag("roa_request")):
- print x
- for k, v in x.items():
- if v:
- print " ", k, v
+ print " ", x
+ print " ASN: ", x.get("asn")
+ print " IPv4:", rpki.resource_set.roa_prefix_set_ipv4(x.get("v4"))
+ print " IPv6:", rpki.resource_set.roa_prefix_set_ipv6(x.get("v6"))
+ showitems(x)
ca = tree.findtext(tag("bpki_ca_certificate"))
if ca: