Example #1
0
    def clean(self):
        asn = self.cleaned_data.get('asn')
        addr = self.cleaned_data.get('addr')
        if (asn and addr) or ((not asn) and (not addr)):
            raise forms.ValidationError, 'Please specify either an AS or IP range, not both'

        if asn:
            try:
                resource_range_as.parse_str(asn)
            except ValueError:
                raise forms.ValidationError, 'invalid AS range'

        if addr:
            #try:
            parse_ipaddr(addr)
            #except BadIPResource:
            #    raise forms.ValidationError, 'invalid IP address range/prefix'

        return self.cleaned_data
Example #2
0
    def clean(self):
        asn = self.cleaned_data.get('asn')
        addr = self.cleaned_data.get('addr')
        if (asn and addr) or ((not asn) and (not addr)):
            raise forms.ValidationError, 'Please specify either an AS or IP range, not both'

        if asn:
            try:
                resource_range_as.parse_str(asn)
            except ValueError:
                raise forms.ValidationError, 'invalid AS range'

        if addr:
            #try:
            parse_ipaddr(addr)
            #except BadIPResource:
            #    raise forms.ValidationError, 'invalid IP address range/prefix'

        return self.cleaned_data
Example #3
0
def query_view(request):
    """
    Allow the user to search for an AS or prefix, and show all published ROA
    information.
    """

    if request.method == 'POST':
        form = forms.SearchForm(request.POST, request.FILES)
        if form.is_valid():
            certs = None
            roas = None

            addr = form.cleaned_data.get('addr')
            asn = form.cleaned_data.get('asn')

            if addr:
                family, r = misc.parse_ipaddr(addr)
                prefixes = models.ROAPrefix.objects.filter(family=family,
                                                           prefix=str(r.min))

                prefix_list = []
                for pfx in prefixes:
                    for roa in pfx.roas.all():
                        prefix_list.append((pfx, roa))
            elif asn:
                r = resource_range_as.parse_str(asn)
                roas = models.ROA.objects.filter(asid__gte=r.min,
                                                 asid__lte=r.max)

                # display the results sorted by prefix
                prefix_list = []
                for roa in roas:
                    for pfx in roa.prefixes.all():
                        addr = IPAddress(pfx.prefix.encode())
                        prefix_list.append((pfx, roa, addr))
                prefix_list.sort(cmp=cmp_prefix)

            return render('cacheview/query_result.html',
                          {'object_list': prefix_list}, request)
    else:
        form = forms.SearchForm()

    return render('cacheview/search_form.html', {
        'form': form,
        'search_type': 'ROA '
    }, request)
Example #4
0
def query_view(request):
    """
    Allow the user to search for an AS or prefix, and show all published ROA
    information.
    """

    if request.method == 'POST':
        form = forms.SearchForm(request.POST, request.FILES)
        if form.is_valid():
            certs = None
            roas = None

            addr = form.cleaned_data.get('addr')
            asn = form.cleaned_data.get('asn')

            if addr:
                family, r = misc.parse_ipaddr(addr)
                prefixes = models.ROAPrefix.objects.filter(family=family, prefix=str(r.min))

                prefix_list = []
                for pfx in prefixes:
                    for roa in pfx.roas.all():
                        prefix_list.append((pfx, roa))
            elif asn:
                r = resource_range_as.parse_str(asn)
                roas = models.ROA.objects.filter(asid__gte=r.min, asid__lte=r.max)

                # display the results sorted by prefix
                prefix_list = []
                for roa in roas:
                    for pfx in roa.prefixes.all():
                        if pfx.family == 4:
                            addr = v4addr(pfx.prefix.encode())
                        elif pfx.family == 6:
                            addr = v6addr(pfx.prefix.encode())

                        prefix_list.append((pfx, roa, addr))
                prefix_list.sort(cmp=cmp_prefix)

            return render('cacheview/query_result.html',
                    { 'object_list': prefix_list }, request)
    else:
        form = forms.SearchForm()

    return render('cacheview/search_form.html', { 'form':form, 'search_type': 'ROA ' }, request)
Example #5
0
def search_view(request):
    if request.method == 'POST':
        form = forms.SearchForm(request.POST, request.FILES)
        if form.is_valid():
            certs = None
            roas = None

            addr = form.cleaned_data.get('addr')
            asn = form.cleaned_data.get('asn')

            if addr:
                family, r = misc.parse_ipaddr(addr)
                certs = models.Cert.objects.filter(addresses__family=family, addresses__min=str(r.min), addresses__max=str(r.max))
                roas = models.ROA.objects.filter(prefixes__family=family, prefixes__prefix=str(r.min))
            elif asn:
                r = resource_range_as.parse_str(asn)
                certs = models.Cert.objects.filter(asns__min__gte=r.min, asns__max__lte=r.max)
                roas = models.ROA.objects.filter(asid__gte=r.min, asid__lte=r.max)

            return render('cacheview/search_result.html', { 'certs': certs, 'roas': roas }, request)
    else:
        form = forms.SearchForm()

    return render('cacheview/search_form.html', { 'form': form, 'search_type': 'Resource' }, request)