Make TTL configurable

This commit is contained in:
Sander Steffann 2020-04-15 01:09:13 +02:00
parent 102b423896
commit d962420de7
5 changed files with 41 additions and 6 deletions

View file

@ -1,6 +1,10 @@
# vCenter integration plugin for NetBox # Dynamic DNS Connector for NetBox
This plugin shows live data from vCenter clusters in NetBox, making it easier for administrators to make sure that reality reflects what is documented in NetBox. This plugin lets you define DNS servers that support [RFC3007 Dynamic DNS Updates](https://tools.ietf.org/html/rfc3007). For each server you specify which domains and reverse DNS domains it is responsible for, and after that NetBox will automatically send DNS Updates to those servers whenever you change the DNS name of an IP Address in NetBox.
Updates are sent from the worker process in the background. You can see their progress either by configuring Django logging or by looking at the Background Tasks in the NetBox admin back-end.
For now all configuration is done in the NetBox admin back-end. A later version will provide a nicer user interface.
## Compatibility ## Compatibility

View file

@ -51,7 +51,7 @@ class ServerAdmin(admin.ModelAdmin):
@admin.register(Zone, site=admin_site) @admin.register(Zone, site=admin_site)
class ZoneAdmin(admin.ModelAdmin): class ZoneAdmin(admin.ModelAdmin):
list_display = ('name', 'server') list_display = ('name', 'ttl', 'server')
actions = [ actions = [
'update_all_records' 'update_all_records'
] ]
@ -83,7 +83,7 @@ class ZoneAdmin(admin.ModelAdmin):
@admin.register(ReverseZone, site=admin_site) @admin.register(ReverseZone, site=admin_site)
class ReverseZoneAdmin(admin.ModelAdmin): class ReverseZoneAdmin(admin.ModelAdmin):
list_display = ('prefix', 'name', 'server') list_display = ('prefix', 'name', 'ttl', 'server')
list_filter = [IPFamilyFilter] list_filter = [IPFamilyFilter]
actions = [ actions = [
'update_all_records' 'update_all_records'

View file

@ -135,7 +135,7 @@ def update_dns(old_address: IPAddress = None, new_address: IPAddress = None,
update = zone.server.create_update(zone.name) update = zone.server.create_update(zone.name)
update.add( update.add(
new_dns_name + '.', new_dns_name + '.',
300, zone.ttl,
'a' if new_address.version == 4 else 'aaaa', 'a' if new_address.version == 4 else 'aaaa',
str(new_address) str(new_address)
) )
@ -160,7 +160,7 @@ def update_dns(old_address: IPAddress = None, new_address: IPAddress = None,
update = zone.server.create_update(zone.name) update = zone.server.create_update(zone.name)
update.add( update.add(
record_name + '.', record_name + '.',
300, zone.ttl,
'ptr', 'ptr',
new_dns_name + '.' new_dns_name + '.'
) )

View file

@ -0,0 +1,25 @@
# Generated by Django 3.0.5 on 2020-04-14 23:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('netbox_ddns', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='reversezone',
name='ttl',
field=models.PositiveIntegerField(default=3600),
preserve_default=False,
),
migrations.AddField(
model_name='zone',
name='ttl',
field=models.PositiveIntegerField(default=3600),
preserve_default=False,
),
]

View file

@ -89,6 +89,9 @@ class Zone(models.Model):
validators=[HostnameValidator()], validators=[HostnameValidator()],
unique=True, unique=True,
) )
ttl = models.PositiveIntegerField(
verbose_name=_('TTL'),
)
server = models.ForeignKey( server = models.ForeignKey(
to=Server, to=Server,
verbose_name=_('DDNS Server'), verbose_name=_('DDNS Server'),
@ -122,6 +125,9 @@ class ReverseZone(models.Model):
blank=True, blank=True,
help_text=_("RFC 2317 style reverse DNS, required when the prefix doesn't map to a reverse zone"), help_text=_("RFC 2317 style reverse DNS, required when the prefix doesn't map to a reverse zone"),
) )
ttl = models.PositiveIntegerField(
verbose_name=_('TTL'),
)
server = models.ForeignKey( server = models.ForeignKey(
to=Server, to=Server,
verbose_name=_('DDNS Server'), verbose_name=_('DDNS Server'),