aboutsummaryrefslogtreecommitdiff
path: root/portal-gui/scripts/load_csv.py
diff options
context:
space:
mode:
authorMichael Elkins <melkins@tislabs.com>2010-07-04 01:14:06 +0000
committerMichael Elkins <melkins@tislabs.com>2010-07-04 01:14:06 +0000
commit616f6a8c5aec95991ff052dc63ab304b8bd019c5 (patch)
treedd748964d64f14321f93359b1731f796115190fc /portal-gui/scripts/load_csv.py
parent572e7deab74d62ec6ef20a95b773efd0f2ed4c7c (diff)
use rpki.resource_set functions for IP address parsing
svn path=/portal-gui/scripts/load_csv.py; revision=3323
Diffstat (limited to 'portal-gui/scripts/load_csv.py')
-rwxr-xr-xportal-gui/scripts/load_csv.py37
1 files changed, 23 insertions, 14 deletions
diff --git a/portal-gui/scripts/load_csv.py b/portal-gui/scripts/load_csv.py
index 67141293..ed046c5a 100755
--- a/portal-gui/scripts/load_csv.py
+++ b/portal-gui/scripts/load_csv.py
@@ -11,6 +11,7 @@
import os
import csv
+import socket # for socket.error
import rpki
import rpki.resource_set
@@ -28,30 +29,38 @@ asn_csv = cfg.get('asn_csv')
prefix_csv = cfg.get('prefix_csv')
roa_csv = cfg.get('roa_csv')
+print 'processing csv files for resource handle', handle
+
conf = models.Conf.objects.get(handle=handle)
-for asn, child_handle in csv_reader(asn_csv, columns=2):
- child = conf.children.get(conf=conf, handle=child_handle)
+for child_handle, asn in csv_reader(asn_csv, columns=2):
+ child = conf.children.get(handle=child_handle)
asn = models.Asn.objects.get(lo=asn, hi=asn,
from_cert__parent__in=conf.parents.all())
child.asn.add(asn)
-def prefix_to_range(s):
- """returns a tuple of (lo,hi) of the address range specified by a prefix"""
- net, bits = prefix.split('/')
- addr = rpki.resource_set.resource_range_ipv4.make_prefix(rpki.ipaddrs.v4addr(net), int(bits))
- return str(addr.min), str(addr.max)
-
-for prefix, child_handle in csv_reader(prefix_csv, columns=2):
- child = conf.children.get(conf=conf, handle=child_handle)
- addr = prefix_to_range(prefix)
- obj = models.AddressRange.objects.get(lo=addr[0], hi=addr[1],
+for child_handle, prefix in csv_reader(prefix_csv, columns=2):
+ child = conf.children.get(handle=child_handle)
+ try:
+ rs = rpki.resource_set.resource_range_ipv4.from_str(prefix)
+ except socket.error:
+ rs = rpki.resource_set.resource_range_ipv6.from_str(prefix)
+ obj = models.AddressRange.objects.get(lo=str(rs.min), hi=str(rs.max),
from_cert__parent__in=conf.parents.all())
child.address_range.add(obj)
for prefix, asn, group in csv_reader(roa_csv, columns=3):
- addr = prefix_to_range(prefix)
- obj = models.AddressRange.objects.get(lo=addr[0], hi=addr[1],
+ try:
+ rs = rpki.resource_set.roa_prefix_set_ipv4().parse_str(prefix)
+ except socket.error:
+ rs = rpki.resource_set.roa_prefix_set_ipv6().parse_str(prefix)
+
+ if rs.prefixlen != rs.max_prefixlen:
+ raise ValueError, \
+ "%s: max prefixlen larger than prefixlen is not currently supported." % (prefix,)
+
+ print str(rs.min()), str(rs.max())
+ obj = models.AddressRange.objects.get(lo=str(rs.min()), hi=str(rs.max()),
from_cert__parent__in=conf.parents.all())
roa_asns = asnset(obj.asns)
asid = int(asn)