diff options
author | Michael Elkins <melkins@tislabs.com> | 2012-11-10 03:45:29 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2012-11-10 03:45:29 +0000 |
commit | f414cd6e8abdab6824fa9f7334db87f8e6effdde (patch) | |
tree | 16e439e225d9780b2f2103038565c557df34870e /rpkid/rpki/gui/app | |
parent | 9a9ddea7d897912fa2b3c35b9ffdae0fdf26fc18 (diff) |
add ResourceCert.conf and make .parent optinally null
svn path=/branches/tk316/; revision=4827
Diffstat (limited to 'rpkid/rpki/gui/app')
-rw-r--r-- | rpkid/rpki/gui/app/glue.py | 16 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/models.py | 16 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/templates/app/dashboard.html | 18 | ||||
-rw-r--r-- | rpkid/rpki/gui/app/views.py | 16 |
4 files changed, 45 insertions, 21 deletions
diff --git a/rpkid/rpki/gui/app/glue.py b/rpkid/rpki/gui/app/glue.py index 6d168b26..bf68170e 100644 --- a/rpkid/rpki/gui/app/glue.py +++ b/rpkid/rpki/gui/app/glue.py @@ -78,19 +78,23 @@ def list_received_resources(log, conf): z = Zookeeper(handle=conf.handle) pdus = z.call_rpkid(list_received_resources_elt.make_pdu(self_handle=conf.handle)) - models.ResourceCert.objects.filter(parent__issuer=conf).delete() + models.ResourceCert.objects.filter(conf=conf).delete() for pdu in pdus: if isinstance(pdu, list_received_resources_elt): - parent = models.Parent.objects.get(issuer=conf, - handle=pdu.parent_handle) + if pdu.parent_handle != conf.handle: + parent = models.Parent.objects.get(issuer=conf, + handle=pdu.parent_handle) + else: + # root cert, self-signed + parent = None not_before = datetime.strptime(pdu.notBefore, "%Y-%m-%dT%H:%M:%SZ") not_after = datetime.strptime(pdu.notAfter, "%Y-%m-%dT%H:%M:%SZ") - cert = models.ResourceCert.objects.create(parent=parent, - not_before=not_before, not_after=not_after, - uri=pdu.uri) + cert = models.ResourceCert.objects.create( + conf=conf, parent=parent, not_before=not_before, + not_after=not_after, uri=pdu.uri) for asn in resource_set_as(pdu.asn): cert.asn_ranges.create(min=asn.min, max=asn.max) diff --git a/rpkid/rpki/gui/app/models.py b/rpkid/rpki/gui/app/models.py index b7393717..9ebf76df 100644 --- a/rpkid/rpki/gui/app/models.py +++ b/rpkid/rpki/gui/app/models.py @@ -115,8 +115,13 @@ class ResourceCert(models.Model): This model is used to cache the output of <list_received_resources/>. """ - # pointer to the parent object in the irdb - parent = models.ForeignKey(Parent, related_name='certs') + + # Handle to which this cert was issued + conf = models.ForeignKey(Conf, related_name='certs') + + # The parent that issued the cert. This field is marked null=True because + # the root has no parent + parent = models.ForeignKey(Parent, related_name='certs', null=True) # certificate validity period not_before = models.DateTimeField() @@ -127,8 +132,11 @@ class ResourceCert(models.Model): uri = models.CharField(max_length=255) def __unicode__(self): - return u"%s's cert from %s" % (self.parent.issuer.handle, - self.parent.handle) + if self.parent: + return u"%s's cert from %s" % (self.conf.handle, + self.parent.handle) + else: + return u"%s's root cert" % self.conf.handle class ResourceRangeAddressV4(rpki.gui.models.PrefixV4): diff --git a/rpkid/rpki/gui/app/templates/app/dashboard.html b/rpkid/rpki/gui/app/templates/app/dashboard.html index f74dad09..d346ce88 100644 --- a/rpkid/rpki/gui/app/templates/app/dashboard.html +++ b/rpkid/rpki/gui/app/templates/app/dashboard.html @@ -29,7 +29,11 @@ <tr> <td>{{ object }}</td> <td>{{ object.cert.not_after }}</td> - <td>{{ object.cert.parent.handle }}</td> + <td> + {% if object.cert.parent %} + {{ object.cert.parent.handle }} + {% endif %} + </td> </tr> {% endfor %} @@ -37,7 +41,11 @@ <tr> <td>{{ object.as_resource_range }}</td> <td>{{ object.cert.not_after }}</td> - <td>{{ object.cert.parent.handle }}</td> + <td> + {% if object.cert.parent %} + {{ object.cert.parent.handle }} + {% endif %} + </td> </tr> {% endfor %} @@ -46,7 +54,11 @@ <tr> <td>{{ object.as_resource_range }}</td> <td>{{ object.cert.not_after }}</td> - <td>{{ object.cert.parent.handle }}</td> + <td> + {% if object.cert.parent %} + {{ object.cert.parent.handle }} + {% endif %} + </td> </tr> {% endfor %} {% endif %} diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py index 6ba6f1c4..835bf4a5 100644 --- a/rpkid/rpki/gui/app/views.py +++ b/rpkid/rpki/gui/app/views.py @@ -180,7 +180,7 @@ def dashboard(request): used_asns.extend((resource_range_as(obj.start_as, obj.end_as) for obj in child_asns)) # my received asns - asns = models.ResourceRangeAS.objects.filter(cert__parent__issuer=conf) + asns = models.ResourceRangeAS.objects.filter(cert__conf=conf) my_asns = range_list.RangeList([resource_range_as(obj.min, obj.max) for obj in asns]) unused_asns = my_asns.difference(used_asns) @@ -207,8 +207,8 @@ def dashboard(request): used_prefixes_v6.append(obj.as_resource_range()) # my received prefixes - prefixes = models.ResourceRangeAddressV4.objects.filter(cert__parent__issuer=conf).all() - prefixes_v6 = models.ResourceRangeAddressV6.objects.filter(cert__parent__issuer=conf).all() + prefixes = models.ResourceRangeAddressV4.objects.filter(cert__conf=conf).all() + prefixes_v6 = models.ResourceRangeAddressV6.objects.filter(cert__conf=conf).all() my_prefixes = range_list.RangeList([obj.as_resource_range() for obj in prefixes]) my_prefixes_v6 = range_list.RangeList([obj.as_resource_range() for obj in prefixes_v6]) @@ -367,7 +367,7 @@ def add_asn_callback(child, form): def child_add_asn(request, pk): conf = request.session['handle'] get_object_or_404(models.Child, issuer=conf, pk=pk) - qs = models.ResourceRangeAS.objects.filter(cert__parent__issuer=conf) + qs = models.ResourceRangeAS.objects.filter(cert__conf=conf) return child_add_resource(request, pk, forms.AddASNForm(qs), [], add_asn_callback) @@ -387,8 +387,8 @@ def add_address_callback(child, form): def child_add_address(request, pk): conf = request.session['handle'] get_object_or_404(models.Child, issuer=conf, pk=pk) - qsv4 = models.ResourceRangeAddressV4.objects.filter(cert__parent__issuer=conf) - qsv6 = models.ResourceRangeAddressV6.objects.filter(cert__parent__issuer=conf) + qsv4 = models.ResourceRangeAddressV4.objects.filter(cert__conf=conf) + qsv6 = models.ResourceRangeAddressV6.objects.filter(cert__conf=conf) return child_add_resource(request, pk, forms.AddNetForm(qsv4, qsv6), [], @@ -789,11 +789,11 @@ def route_view(request): log = request.META['wsgi.errors'] routes = [] - for p in models.ResourceRangeAddressV4.objects.filter(cert__parent__in=conf.parents.all()): + for p in models.ResourceRangeAddressV4.objects.filter(cert__conf=conf): r = p.as_resource_range() print >>log, 'querying for routes matching %s' % r routes.extend([validate_route(*x) for x in roa_match(r)]) - for p in models.ResourceRangeAddressV6.objects.filter(cert__parent__in=conf.parents.all()): + for p in models.ResourceRangeAddressV6.objects.filter(cert__conf=conf): r = p.as_resource_range() print >>log, 'querying for routes matching %s' % r routes.extend([validate_route(*x) for x in roa_match(r)]) |