Example #1
0
def text_reverse(request, name):
    """
    Displays data for reverse text view. Index redirects here.
    Generates IP list from model, reverses each IP in the list and appends the .in-addr.arpa suffix
    Returns direct response in plaintext format

    arguments:
        request: request object
        name: subnet name
    """
    response = HttpResponse(content_type="text/plain")
    if not Mapping.objects.filter(subnet_id=name):
        response.write("ERROR: NO SUBNET WITH NAME: %s FOUND textreverse" % name)
    else:
        mapping = Mapping.objects.filter(subnet_id=name)
        unsorted_ip_list = []
        for obj in mapping:
            if pylib.is_valid_ip(obj.ip_or_cname):
                unsorted_ip_list.append(obj.ip_or_cname)
        sorted_ip_list = sorted(unsorted_ip_list, key=lambda octet: socket.inet_aton(octet))
        header = pylib.get_header("@")
        response.write(header)
        for ip in sorted_ip_list:
            reversed_ip = pylib.reverse_ip(ip)
            # obj = Mapping.objects.get(ip_or_cname = ip)
            objs = Mapping.objects.filter(ip_or_cname=ip)
            for obj in objs:
                subnet_model = Subnet.objects.get(subnet_name=str(obj.subnet_id))
                response.write(
                    "{0:<30}{1}".format(
                        reversed_ip + ".in-addr.arpa.", "IN\tPTR\t" + obj.hostname + "." + subnet_model.domain + ".\n"
                    )
                )
    return response
Example #2
0
def text_all(request, domain_name):
    """
    Displays data for selected domain in text format. Index redirects here.
    Collects all subnets in the given domain and return direct response with the data

    arguments:
        request: request object
        domain_name: domain name
    """
    response = HttpResponse(content_type="text/plain")
    subnet_name = Subnet.objects.filter(domain=domain_name)
    if not subnet_name:
        response.write("ERROR: NO DOMAIN WITH NAME: %s FOUND" % domain_name)
    else:
        header = pylib.get_header(domain_name + ".")
        response.write(header)
        for obj in subnet_name:
            mapping = Mapping.objects.filter(subnet_id=obj.subnet_name)
            for record in mapping:
                response.write("{0:<30}{1}{2}\n".format(record.hostname, "IN\t%s\t" % record.record_type, record))
    return response