Example #1
0
def view_add_record(request, dns_server, zone_name):
    """View to allow to add A records."""
    this_server = get_object_or_404(models.BindServer, hostname=dns_server)

    if request.method == 'POST':
        if "in-addr.arpa" in zone_name or "ip6.arpa" in zone_name:
            form = forms.FormAddReverseRecord(request.POST)
        else:
            form = forms.FormAddForwardRecord(request.POST)
        if form.is_valid():
            form_cleaned = form.cleaned_data
            try:
                helpers.add_record(form_cleaned["dns_server"],
                                   str(form_cleaned["zone_name"]),
                                   str(form_cleaned["record_name"]),
                                   str(form_cleaned["record_type"]),
                                   str(form_cleaned["record_data"]),
                                   form_cleaned["ttl"],
                                   form_cleaned["key_name"],
                                   form_cleaned["create_reverse"])
            except (KeyringException, RecordException) as exc:
                messages.error(request, "Adding %s.%s failed: %s" %
                               (form_cleaned["record_name"], zone_name, exc))
            else:
                messages.success(request, "%s.%s was added successfully." %
                                 (form_cleaned["record_name"], zone_name))
                return redirect('zone_list',
                                dns_server=dns_server,
                                zone_name=zone_name)
    else:
        form = forms.FormAddForwardRecord(initial={'zone_name': zone_name})

    return render(request, "bcommon/add_record_form.html",
                  {"dns_server": this_server,
                   "form": form})
Example #2
0
def view_edit_record(request,
                     dns_server,
                     zone_name,
                     record_name=None,
                     record_type=None,
                     record_data=None,
                     record_ttl=None):
    """View to edit an RR record to DNS zone."""
    this_server = get_object_or_404(models.BindServer, hostname=dns_server)
    if request.method == 'POST':
        if "in-addr.arpa" in zone_name or "ip6.arpa" in zone_name:
            form = forms.FormAddReverseRecord(request.POST)
        else:
            form = forms.FormAddForwardRecord(request.POST)
        if form.is_valid():
            form_cleaned = form.cleaned_data
            try:
                helpers.add_record(form_cleaned["dns_server"],
                                   str(form_cleaned["zone_name"]),
                                   str(form_cleaned["record_name"]),
                                   str(form_cleaned["record_type"]),
                                   str(form_cleaned["record_data"]),
                                   form_cleaned["ttl"],
                                   form_cleaned["key_name"],
                                   form_cleaned["create_reverse"])
            except (exceptions.KeyringException,
                    exceptions.RecordException) as exc:
                messages.error(
                    request, "Modifying %s.%s failed: %s" %
                    (form_cleaned["record_name"], zone_name, exc))
            else:
                messages.success(
                    request, "%s.%s was modified successfully." %
                    (form_cleaned["record_name"], zone_name))
                return redirect('zone_list',
                                dns_server=dns_server,
                                zone_name=zone_name)
        else:
            messages.error(request, "Form data was invalid. Check all inputs.")
    else:
        key_id = models.BindServer.objects.get(
            hostname=dns_server).default_transfer_key.id
        form = forms.FormAddForwardRecord(
            initial={
                'zone_name': zone_name,
                'record_name': record_name,
                'record_data': record_data,
                'ttl': record_ttl,
                'record_type': record_type,
                'key_name': key_id
            })

    return render(request, "bcommon/add_record_form.html", {
        "dns_server": this_server,
        "form": form
    })
Example #3
0
def view_add_record_result(request):
    """ Process the input given to add a DNS record. """
    errors = ""
    if request.method == "GET":
        return redirect("/")

    if "HTTP_REFERER" in request.META:
        incoming_zone = request.META["HTTP_REFERER"].split("/")[-2]
        if ("in-addr.arpa" in incoming_zone) or ("ip6.arpa" in incoming_zone):
            form = forms.FormAddReverseRecord(request.POST)
        else:
            form = forms.FormAddForwardRecord(request.POST)
    else:
        form = forms.FormAddForwardRecord(request.POST)

    if form.is_valid():
        form_cleaned = form.cleaned_data
        try:
            response = helpers.add_record(form_cleaned["dns_server"],
                                          str(form_cleaned["zone_name"]),
                                          str(form_cleaned["record_name"]),
                                          str(form_cleaned["record_type"]),
                                          str(form_cleaned["record_data"]),
                                          form_cleaned["ttl"],
                                          form_cleaned["key_name"],
                                          form_cleaned["create_reverse"])
        except exceptions.RecordException, err:
            # TODO: Start using this exception.
            # What would cause this?
            errors = err

        return render(request, "bcommon/response_result.html",
                      { "errors" : errors,
                        "response" : response })
Example #4
0
def view_edit_record(request, dns_server, zone_name, record_name=None,
                     record_type=None, record_data=None, record_ttl=None):
    """View to edit an RR record to DNS zone."""
    this_server = get_object_or_404(models.BindServer, hostname=dns_server)
    if request.method == 'POST':
        if "in-addr.arpa" in zone_name or "ip6.arpa" in zone_name:
            form = forms.FormAddReverseRecord(request.POST)
        else:
            form = forms.FormAddForwardRecord(request.POST)
        if form.is_valid():
            form_cleaned = form.cleaned_data
            try:
                helpers.add_record(form_cleaned["dns_server"],
                                   str(form_cleaned["zone_name"]),
                                   str(form_cleaned["record_name"]),
                                   str(form_cleaned["record_type"]),
                                   str(form_cleaned["record_data"]),
                                   form_cleaned["ttl"],
                                   form_cleaned["key_name"],
                                   form_cleaned["create_reverse"])
            except (exceptions.KeyringException,
                    exceptions.RecordException) as exc:
                messages.error(request, "Modifying %s.%s failed: %s" %
                               (form_cleaned["record_name"], zone_name, exc))
            else:
                messages.success(request, "%s.%s was modified successfully." %
                                 (form_cleaned["record_name"], zone_name))
                return redirect('zone_list',
                                dns_server=dns_server,
                                zone_name=zone_name)
        else:
            messages.error(request, "Form data was invalid. Check all inputs.")
    else:
        key_id = models.BindServer.objects.get(
            hostname=dns_server).default_transfer_key.id
        form = forms.FormAddForwardRecord(initial={'zone_name': zone_name,
                                                   'record_name': record_name,
                                                   'record_data': record_data,
                                                   'ttl': record_ttl,
                                                   'record_type': record_type,
                                                   'key_name': key_id
        })

    return render(request, "bcommon/add_record_form.html",
                  {"dns_server": this_server,
                   "form": form})
Example #5
0
def view_add_record(request, dns_server, zone_name):
    """View to allow to add A records."""
    if not request.user.is_staff and not request.user.is_superuser:
        return render(request, "403.html", status=403)
    this_server = get_object_or_404(models.BindServer, hostname=dns_server)

    if request.method == 'POST':
        if "in-addr.arpa" in zone_name or "ip6.arpa" in zone_name:
            form = forms.FormAddReverseRecord(request.POST)
        else:
            form = forms.FormAddForwardRecord(request.POST)
        if form.is_valid():
            form_cleaned = form.cleaned_data
            try:
                helpers.add_record(form_cleaned["dns_server"],
                                   str(form_cleaned["zone_name"]),
                                   str(form_cleaned["record_name"]),
                                   str(form_cleaned["record_type"]),
                                   str(form_cleaned["record_data"]),
                                   form_cleaned["ttl"],
                                   form_cleaned["key_name"],
                                   form_cleaned["create_reverse"])
            except (KeyringException, RecordException) as exc:
                messages.error(
                    request, "Adding %s.%s failed: %s" %
                    (form_cleaned["record_name"], zone_name, exc))
            else:
                messages.success(
                    request, "%s.%s was added successfully." %
                    (form_cleaned["record_name"], zone_name))
                return redirect('zone_list',
                                dns_server=dns_server,
                                zone_name=zone_name)
    else:
        form = forms.FormAddForwardRecord(initial={'zone_name': zone_name})

    return render(request, "bcommon/add_record_form.html", {
        "dns_server": this_server,
        "form": form
    })