Exemple #1
0
def update_ddns_ip(request):

    domain      = request.GET.get('domain', None)
    record_a    = request.GET.get('ipv4', '')
    record_aaaa = request.GET.get('ipv6', '')
    sig         = request.GET.get('sig', None)
    psk         = request.GET.get('psk', None)

    if not domain:
        return error("domain is missing.")

    if not record_a and not record_aaaa:
        ip = get_client_ip(request)
        if ip.find(':') > -1:
            record_aaaa = ip
        else:
            record_a = ip

    base_q = DynamicDomainName.objects.filter(fqdn="%s." % domain)
    base_q = base_q.filter(auth_mode__lt=2)

    try:
        entry = base_q.get()
        if entry.auth_mode == 1:
            if not sig:
                return error("signature is missing.")
            checkstr = ("%s.%s.%s.%s" %
                        (domain, record_a, record_aaaa, entry.psk))
            checksum = md5(checkstr).hexdigest()
            if sig != checksum:
                return error("signature is incorrect.")
        elif entry.psk != psk:
            return error("psk is incorrect.")
    except ObjectDoesNotExist:
        return error("domain does not exist or does not allow updating.")
    except MultipleObjectsReturned:
        return error("mutiple domainname found. database is corrupted.")

    entry.record_a = record_a
    entry.record_aaaa = record_aaaa
    entry.save()

    ddns_update(entry)

    return HttpResponse("OK")
Exemple #2
0
 def form_valid(self, form):
     self.object = form.save()
     ddns_update(self.object)
     return redirect(self.get_success_url())
Exemple #3
0
 def form_valid(self, form):
     self.object = form.save(commit=False)
     self.object.created_by = self.request.user
     self.object.save()
     ddns_update(self.object)
     return redirect('domain.views.ddns.list_view')