Exemplo n.º 1
0
 def list(self, request):
     dnsinfo = DnsApiKey.objects.get(name=request.GET['dnsname'])
     domain = request.GET['domain']
     dnsapi = BindApi(user=dnsinfo.key, pwd=None, token=dnsinfo.secret)
     query = dnsapi.get_records(domain)
     serializer = BindRecordSerializer(query, many=True)
     return Response(serializer.data)
Exemplo n.º 2
0
 def post(self, request, record_type="A", ttl=600):
     dnsinfo = DnsApiKey.objects.get(name=request.data['dnsname'])
     domain = request.data['domain']
     dnsapi = BindApi(user=dnsinfo.key, pwd=None, token=dnsinfo.secret)
     if request.data['action'] == 'create':
         sub_domain = request.data['sub_domain']
         value = request.data['value']
         record_type = request.data.get('record_type', record_type)
         ttl = request.data.get('ttl', ttl)
         record = {
             'domain': DnsDomain.objects.get(name=domain),
             'name': sub_domain,
             'type': record_type,
             'value': value,
             'ttl': ttl,
         }
         DnsRecord.objects.update_or_create(**record)
         query = dnsapi.add_record(domain,
                                   sub_domain,
                                   value,
                                   record_type,
                                   ttl=ttl)
     elif request.data['action'] == 'update':
         sub_domain = request.data['sub_domain']
         value = request.data['value']
         record_type = request.data.get('record_type', record_type)
         ttl = request.data.get('ttl', ttl)
         record_id = request.data['record_id']
         record = {
             'value': value,
             'ttl': ttl,
         }
         domainquery = DnsDomain.objects.get(name=domain)
         DnsRecord.objects.update_or_create(domain=domainquery,
                                            name=sub_domain,
                                            type=record_type,
                                            **record)
         query = dnsapi.update_record(domain,
                                      record_id,
                                      sub_domain,
                                      value,
                                      record_type,
                                      ttl=ttl)
     elif request.data['action'] == 'sync':
         query = dnsapi.get_records(domain)
         domainquery = DnsDomain.objects.get(name=domain)
         for item in query:
             dnsrecord = dict()
             dnsrecord['name'] = item['name']
             dnsrecord['type'] = item['type']
             dnsrecord['value'] = item['value']
             dnsrecord['ttl'] = item['ttl']
             dnsrecord['record_id'] = item['id']
             dnsrecord['title'] = '{}-{}-{}-{}'.format(
                 domainquery, dnsrecord['name'], dnsrecord['type'],
                 dnsrecord['value'])
             d, create = DnsRecord.objects.update_or_create(
                 domain=domainquery,
                 record_id=dnsrecord['record_id'],
                 defaults=dnsrecord)
         return Response({'status': create})
     return Response(query)