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")
def form_valid(self, form): self.object = form.save() ddns_update(self.object) return redirect(self.get_success_url())
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')