netbox-ddns 1.3.0__py3-none-any.whl → 1.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- netbox_ddns/__init__.py +2 -2
- netbox_ddns/admin.py +0 -156
- netbox_ddns/api/__init__.py +0 -0
- netbox_ddns/api/serializers.py +35 -0
- netbox_ddns/api/urls.py +10 -0
- netbox_ddns/api/views.py +11 -0
- netbox_ddns/filtersets.py +30 -0
- netbox_ddns/forms.py +54 -3
- netbox_ddns/migrations/0009_alter_dnsstatus_id_alter_extradnsname_id_and_more.py +38 -0
- netbox_ddns/migrations/0010_extradnsname_created_extradnsname_custom_field_data_and_more.py +36 -0
- netbox_ddns/migrations/0011_server_created_server_custom_field_data_and_more.py +36 -0
- netbox_ddns/migrations/0012_zone_created_zone_custom_field_data_and_more.py +36 -0
- netbox_ddns/migrations/0013_reversezone_created_reversezone_custom_field_data_and_more.py +36 -0
- netbox_ddns/models.py +54 -14
- netbox_ddns/navigation.py +58 -0
- netbox_ddns/search.py +10 -0
- netbox_ddns/tables.py +34 -33
- netbox_ddns/template_content.py +31 -3
- netbox_ddns/templates/netbox_ddns/extradnsname.html +61 -0
- netbox_ddns/templates/netbox_ddns/ipaddress/dns_extra.html +2 -2
- netbox_ddns/templates/netbox_ddns/ipaddress/dns_refresh_button.html +1 -1
- netbox_ddns/templates/netbox_ddns/reversezone.html +51 -0
- netbox_ddns/templates/netbox_ddns/server.html +68 -0
- netbox_ddns/templates/netbox_ddns/update_reverse_zone.html +11 -0
- netbox_ddns/templates/netbox_ddns/update_zone.html +11 -0
- netbox_ddns/templates/netbox_ddns/zone.html +53 -0
- netbox_ddns/urls.py +26 -10
- netbox_ddns/views.py +255 -48
- {netbox_ddns-1.3.0.dist-info → netbox_ddns-1.5.0.dist-info}/METADATA +2 -2
- netbox_ddns-1.5.0.dist-info/RECORD +47 -0
- {netbox_ddns-1.3.0.dist-info → netbox_ddns-1.5.0.dist-info}/WHEEL +1 -1
- netbox_ddns-1.3.0.dist-info/RECORD +0 -29
- {netbox_ddns-1.3.0.dist-info → netbox_ddns-1.5.0.dist-info}/LICENSE.txt +0 -0
- {netbox_ddns-1.3.0.dist-info → netbox_ddns-1.5.0.dist-info}/top_level.txt +0 -0
netbox_ddns/views.py
CHANGED
|
@@ -1,76 +1,204 @@
|
|
|
1
1
|
from django.contrib import messages
|
|
2
2
|
from django.contrib.auth.mixins import PermissionRequiredMixin
|
|
3
|
-
from django.http import Http404
|
|
4
3
|
from django.shortcuts import get_object_or_404, redirect
|
|
5
|
-
from django.urls import reverse
|
|
6
4
|
from django.utils.translation import gettext as _
|
|
7
|
-
from django.views import View
|
|
8
5
|
|
|
9
6
|
from ipam.models import IPAddress
|
|
7
|
+
from ipam.tables import IPAddressTable
|
|
10
8
|
from netbox_ddns.background_tasks import dns_create
|
|
11
|
-
from netbox_ddns.
|
|
12
|
-
from netbox_ddns.
|
|
9
|
+
from netbox_ddns.filtersets import ServerFilterSet, ZoneFilterSet, ReverseZoneFilterSet, ExtraDNSNameFilterSet
|
|
10
|
+
from netbox_ddns.forms import ServerForm, ZoneForm, ReverseZoneForm, ExtraDNSNameIPAddressForm, ExtraDNSNameForm
|
|
11
|
+
from netbox_ddns.models import DNSStatus, ExtraDNSName, Server, Zone, ReverseZone
|
|
12
|
+
from netbox_ddns.tables import ServerTable, ZoneTable, ReverseZoneTable, ExtraDNSNameTable
|
|
13
13
|
from netbox_ddns.utils import normalize_fqdn
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
# NetBox <= 2.9
|
|
17
|
-
from utilities.views import ObjectDeleteView, ObjectEditView
|
|
18
|
-
except ImportError:
|
|
19
|
-
# NetBox >= 2.10
|
|
20
|
-
from netbox.views.generic import ObjectDeleteView, ObjectEditView
|
|
15
|
+
from netbox.views.generic import ObjectDeleteView, ObjectEditView, ObjectView, ObjectListView, BulkDeleteView
|
|
21
16
|
|
|
17
|
+
from django.views.generic import View
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
class ExtraDNSNameObjectMixin:
|
|
25
|
-
def get_object(self, *args, **kwargs):
|
|
26
|
-
# NetBox < 3.2.0
|
|
27
|
-
if not kwargs and len(args) == 1:
|
|
28
|
-
kwargs = args[0]
|
|
29
|
-
elif len(args) > 1:
|
|
30
|
-
raise TypeError('Method takes 1 positional argument but more were given')
|
|
19
|
+
from utilities.views import register_model_view, GetRelatedModelsMixin
|
|
31
20
|
|
|
32
|
-
if 'ipaddress_pk' not in kwargs:
|
|
33
|
-
raise Http404
|
|
34
21
|
|
|
35
|
-
|
|
22
|
+
# ReverseZone
|
|
23
|
+
@register_model_view(ReverseZone)
|
|
24
|
+
class ReverseZoneView(ObjectView):
|
|
25
|
+
queryset = ReverseZone.objects.all()
|
|
36
26
|
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
def get_extra_context(self, request, instance):
|
|
28
|
+
ip_address_table = IPAddressTable(instance.get_managed_ip_address().restrict(request.user, 'view'))
|
|
29
|
+
ip_address_table.configure(request)
|
|
30
|
+
return {
|
|
31
|
+
'ip_address_table': ip_address_table,
|
|
32
|
+
}
|
|
39
33
|
|
|
40
|
-
return ExtraDNSName(ip_address=ip_address)
|
|
41
34
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if return_url and return_url.startswith('/'):
|
|
47
|
-
return return_url
|
|
48
|
-
|
|
49
|
-
# Otherwise check we have an object and can return to its ip-address
|
|
50
|
-
elif obj is not None and obj.ip_address is not None:
|
|
51
|
-
return obj.ip_address.get_absolute_url()
|
|
35
|
+
@register_model_view(ReverseZone, 'list', path='', detail=False)
|
|
36
|
+
class ReverseZoneListView(ObjectListView):
|
|
37
|
+
queryset = ReverseZone.objects.all()
|
|
38
|
+
table = ReverseZoneTable
|
|
52
39
|
|
|
53
|
-
# If all else fails, return home. Ideally this should never happen.
|
|
54
|
-
return reverse('home')
|
|
55
40
|
|
|
41
|
+
@register_model_view(ReverseZone, 'add', detail=False)
|
|
42
|
+
@register_model_view(ReverseZone, 'edit')
|
|
43
|
+
class ReverseZoneEditView(ObjectEditView):
|
|
44
|
+
queryset = ReverseZone.objects.all()
|
|
45
|
+
form = ReverseZoneForm
|
|
56
46
|
|
|
57
|
-
|
|
58
|
-
|
|
47
|
+
|
|
48
|
+
@register_model_view(ReverseZone, 'delete')
|
|
49
|
+
class ReverseZoneDeleteView(ObjectDeleteView):
|
|
50
|
+
queryset = ReverseZone.objects.all()
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@register_model_view(ReverseZone, 'bulk_delete', path='delete', detail=False)
|
|
54
|
+
class ReverseZoneBulkDeleteView(BulkDeleteView):
|
|
55
|
+
queryset = ReverseZone.objects.all()
|
|
56
|
+
filterset = ReverseZoneFilterSet
|
|
57
|
+
table = ReverseZoneTable
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
# Zone
|
|
61
|
+
@register_model_view(Zone)
|
|
62
|
+
class ZoneView(ObjectView):
|
|
63
|
+
queryset = Zone.objects.all()
|
|
64
|
+
|
|
65
|
+
def get_extra_context(self, request, instance):
|
|
66
|
+
ip_address_table = IPAddressTable(instance.get_managed_ip_address().restrict(request.user, 'view'))
|
|
67
|
+
ip_address_table.configure(request)
|
|
68
|
+
|
|
69
|
+
extra_dns_name_table = ExtraDNSNameTable(instance.get_managed_extra_dns_name().restrict(request.user, 'view'))
|
|
70
|
+
extra_dns_name_table.configure(request)
|
|
71
|
+
return {
|
|
72
|
+
'ip_address_table': ip_address_table,
|
|
73
|
+
'extra_dns_name_table': extra_dns_name_table,
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@register_model_view(Zone, 'list', path='', detail=False)
|
|
78
|
+
class ZoneListView(ObjectListView):
|
|
79
|
+
queryset = Zone.objects.all()
|
|
80
|
+
table = ZoneTable
|
|
81
|
+
filterset = ZoneFilterSet
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
@register_model_view(Zone, 'add', detail=False)
|
|
85
|
+
@register_model_view(Zone, 'edit')
|
|
86
|
+
class ZoneEditView(ObjectEditView):
|
|
87
|
+
queryset = Zone.objects.all()
|
|
88
|
+
form = ZoneForm
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@register_model_view(Zone, 'delete')
|
|
92
|
+
class ZoneDeleteView(ObjectDeleteView):
|
|
93
|
+
queryset = Zone.objects.all()
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
@register_model_view(Zone, 'bulk_delete', path='delete', detail=False)
|
|
97
|
+
class ZoneBulkDeleteView(BulkDeleteView):
|
|
98
|
+
queryset = Zone.objects.all()
|
|
99
|
+
filterset = ZoneFilterSet
|
|
100
|
+
table = ZoneTable
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
# Server
|
|
104
|
+
@register_model_view(Server)
|
|
105
|
+
class ServerView(ObjectView):
|
|
106
|
+
queryset = Server.objects.all()
|
|
107
|
+
|
|
108
|
+
def get_extra_context(self, request, instance):
|
|
109
|
+
zone_table = ZoneTable(instance.zone_set.all(), exclude=["server"])
|
|
110
|
+
zone_table.configure(request)
|
|
111
|
+
reversezone_table = ZoneTable(instance.reversezone_set.all(), exclude=["server"])
|
|
112
|
+
reversezone_table.configure(request)
|
|
113
|
+
return {
|
|
114
|
+
'zone_table': zone_table,
|
|
115
|
+
'reversezone_table': reversezone_table,
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@register_model_view(Server, 'list', path='', detail=False)
|
|
120
|
+
class ServerListView(ObjectListView):
|
|
121
|
+
queryset = Server.objects.all()
|
|
122
|
+
table = ServerTable
|
|
123
|
+
filterset = ServerFilterSet
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
@register_model_view(Server, 'add', detail=False)
|
|
127
|
+
@register_model_view(Server, 'edit')
|
|
128
|
+
class ServerEditView(ObjectEditView):
|
|
129
|
+
queryset = Server.objects.all()
|
|
130
|
+
form = ServerForm
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
@register_model_view(Server, 'delete')
|
|
134
|
+
class ServerDeleteView(ObjectDeleteView):
|
|
135
|
+
queryset = Server.objects.all()
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
@register_model_view(Server, 'bulk_delete', path='delete', detail=False)
|
|
139
|
+
class ServerBulkDeleteView(BulkDeleteView):
|
|
140
|
+
queryset = Server.objects.all()
|
|
141
|
+
filterset = ServerFilterSet
|
|
142
|
+
table = ServerTable
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
# ExtraDNSName
|
|
146
|
+
@register_model_view(ExtraDNSName)
|
|
147
|
+
class ExtraDNSNameView(ObjectView):
|
|
148
|
+
queryset = ExtraDNSName.objects.all()
|
|
149
|
+
def get_extra_context(self, request, instance):
|
|
150
|
+
zone = Zone.objects.find_for_dns_name(instance.name)
|
|
151
|
+
server = zone.server if zone else None
|
|
152
|
+
return {
|
|
153
|
+
'zone': zone,
|
|
154
|
+
'server': server,
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@register_model_view(ExtraDNSName, 'list', path='', detail=False)
|
|
158
|
+
class ExtraDNSNameListView(ObjectListView):
|
|
159
|
+
queryset = ExtraDNSName.objects.all()
|
|
160
|
+
table = ExtraDNSNameTable
|
|
161
|
+
filterset = ExtraDNSNameFilterSet
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
@register_model_view(ExtraDNSName, 'add', detail=False)
|
|
165
|
+
class ExtraDNSNameEditView(ObjectEditView):
|
|
59
166
|
queryset = ExtraDNSName.objects.all()
|
|
60
|
-
form =
|
|
61
|
-
|
|
62
|
-
@property
|
|
63
|
-
def model_form(self):
|
|
64
|
-
return self.form
|
|
167
|
+
form = ExtraDNSNameForm
|
|
168
|
+
|
|
65
169
|
|
|
66
|
-
|
|
67
|
-
|
|
170
|
+
@register_model_view(ExtraDNSName, 'edit')
|
|
171
|
+
class ExtraDNSNameEditView(ObjectEditView):
|
|
172
|
+
queryset = ExtraDNSName.objects.all()
|
|
173
|
+
form = ExtraDNSNameIPAddressForm
|
|
68
174
|
|
|
69
175
|
|
|
70
|
-
|
|
71
|
-
|
|
176
|
+
@register_model_view(ExtraDNSName, 'delete')
|
|
177
|
+
class ExtraDNSNameDeleteView(ObjectDeleteView):
|
|
72
178
|
queryset = ExtraDNSName.objects.all()
|
|
73
179
|
|
|
180
|
+
def get_return_url(self, request, obj=None):
|
|
181
|
+
if obj and obj.ip_address:
|
|
182
|
+
return obj.ip_address.get_absolute_url()
|
|
183
|
+
return super().get_return_url(request, obj)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
@register_model_view(ExtraDNSName, 'bulk_delete', path='delete', detail=False)
|
|
187
|
+
class ExtraDNSNameBulkDeleteView(BulkDeleteView):
|
|
188
|
+
queryset = ExtraDNSName.objects.all()
|
|
189
|
+
filterset = ExtraDNSNameFilterSet
|
|
190
|
+
table = ExtraDNSNameTable
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
class ExtraDNSNameCreateView(PermissionRequiredMixin, ObjectEditView):
|
|
194
|
+
permission_required = 'netbox_ddns.add_extradnsname'
|
|
195
|
+
queryset = ExtraDNSName.objects.all()
|
|
196
|
+
form = ExtraDNSNameIPAddressForm
|
|
197
|
+
|
|
198
|
+
def get_object(self, *args, **kwargs):
|
|
199
|
+
ip_address = get_object_or_404(IPAddress, pk=kwargs['ipaddress_pk'])
|
|
200
|
+
return ExtraDNSName(ip_address=ip_address)
|
|
201
|
+
|
|
74
202
|
|
|
75
203
|
class IPAddressDNSNameRecreateView(PermissionRequiredMixin, View):
|
|
76
204
|
permission_required = 'ipam.change_ipaddress'
|
|
@@ -112,3 +240,82 @@ class IPAddressDNSNameRecreateView(PermissionRequiredMixin, View):
|
|
|
112
240
|
messages.info(request, _("Updating DNS for {names}").format(names=', '.join(updated_names)))
|
|
113
241
|
|
|
114
242
|
return redirect('ipam:ipaddress', pk=ip_address.pk)
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
class UpdateForwardZone(PermissionRequiredMixin, View):
|
|
246
|
+
permission_required = 'ipam.change_ipaddress'
|
|
247
|
+
|
|
248
|
+
def post(self, request, pk):
|
|
249
|
+
zone = get_object_or_404(Zone, pk=pk)
|
|
250
|
+
counter = 0
|
|
251
|
+
|
|
252
|
+
ip_addresses = zone.get_managed_ip_address()
|
|
253
|
+
for ip_address in ip_addresses:
|
|
254
|
+
new_address = ip_address.address.ip
|
|
255
|
+
new_dns_name = normalize_fqdn(ip_address.dns_name)
|
|
256
|
+
|
|
257
|
+
if new_dns_name:
|
|
258
|
+
status, created = DNSStatus.objects.get_or_create(ip_address=ip_address)
|
|
259
|
+
|
|
260
|
+
dns_create.delay(
|
|
261
|
+
dns_name=new_dns_name,
|
|
262
|
+
address=new_address,
|
|
263
|
+
status=status,
|
|
264
|
+
reverse=False,
|
|
265
|
+
)
|
|
266
|
+
counter += 1
|
|
267
|
+
|
|
268
|
+
extra_names = zone.get_managed_extra_dns_name()
|
|
269
|
+
for extra in extra_names:
|
|
270
|
+
new_address = extra.ip_address.address.ip
|
|
271
|
+
new_dns_name = extra.name
|
|
272
|
+
|
|
273
|
+
dns_create.delay(
|
|
274
|
+
dns_name=new_dns_name,
|
|
275
|
+
address=new_address,
|
|
276
|
+
status=extra,
|
|
277
|
+
reverse=False,
|
|
278
|
+
)
|
|
279
|
+
counter += 1
|
|
280
|
+
|
|
281
|
+
messages.info(
|
|
282
|
+
request, _("Updating {count} forward records in {name}").format(
|
|
283
|
+
count=counter,
|
|
284
|
+
name=zone.name
|
|
285
|
+
)
|
|
286
|
+
)
|
|
287
|
+
return redirect(zone.get_absolute_url())
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
class UpdateReverseZone(PermissionRequiredMixin, View):
|
|
291
|
+
permission_required = 'ipam.change_ipaddress'
|
|
292
|
+
|
|
293
|
+
def post(self, request, pk):
|
|
294
|
+
reversezone = get_object_or_404(ReverseZone, pk=pk)
|
|
295
|
+
|
|
296
|
+
counter = 0
|
|
297
|
+
|
|
298
|
+
ip_addresses = reversezone.get_managed_ip_address()
|
|
299
|
+
|
|
300
|
+
for ip_address in ip_addresses:
|
|
301
|
+
new_address = ip_address.address.ip
|
|
302
|
+
new_dns_name = normalize_fqdn(ip_address.dns_name)
|
|
303
|
+
|
|
304
|
+
if new_dns_name:
|
|
305
|
+
status, created = DNSStatus.objects.get_or_create(ip_address=ip_address)
|
|
306
|
+
|
|
307
|
+
dns_create.delay(
|
|
308
|
+
dns_name=new_dns_name,
|
|
309
|
+
address=new_address,
|
|
310
|
+
status=status,
|
|
311
|
+
forward=False,
|
|
312
|
+
)
|
|
313
|
+
counter += 1
|
|
314
|
+
|
|
315
|
+
messages.info(
|
|
316
|
+
request, _("Updating {count} reverse records in {name}").format(
|
|
317
|
+
count=counter,
|
|
318
|
+
name=reversezone.name
|
|
319
|
+
)
|
|
320
|
+
)
|
|
321
|
+
return redirect(reversezone.get_absolute_url())
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
netbox_ddns/__init__.py,sha256=UtIar40H5eO-n802D0-MRAAFeqQouOTjB0aaaZvA9qU,652
|
|
2
|
+
netbox_ddns/admin.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
netbox_ddns/background_tasks.py,sha256=oCw6V3aas1Q1C8ftsn1TisrJ0JU51sdDt_iTlm-ZNmk,7070
|
|
4
|
+
netbox_ddns/filtersets.py,sha256=nhHgkef7IqUA9ljyFn5rTuFYl4wKHzMkPfbLMCeHMtk,828
|
|
5
|
+
netbox_ddns/forms.py,sha256=ERHgLdmEyJfHLp1R4PxOEmmWNKNeZUSImTChjuftxW8,1520
|
|
6
|
+
netbox_ddns/models.py,sha256=C5XcotUzYHLFbdffr1mdM3p6XFT_WvjOr70g-vFoReg,13926
|
|
7
|
+
netbox_ddns/navigation.py,sha256=PiDri64dpW2MCiFZBst_YDEhKfeYwG58BvxIfzhQDFc,1899
|
|
8
|
+
netbox_ddns/search.py,sha256=G07DBvjOzKNjbtm9d6_n___GKXQyJ2aCfSDjPRdRzGs,212
|
|
9
|
+
netbox_ddns/signals.py,sha256=yHkgZImnyTqRwPXAr2W9bd4rJof7YblkylJnDn1_FDc,4185
|
|
10
|
+
netbox_ddns/tables.py,sha256=yKZq_yo8RtqDGrTxQdQ1UVTDAWCcJvB_S36o74NLPSQ,1376
|
|
11
|
+
netbox_ddns/template_content.py,sha256=eHFkkH5X5JcKLA1d7Qj_ooG1zD84ebI43mKqGzhafgs,2122
|
|
12
|
+
netbox_ddns/urls.py,sha256=gBHvHlfWwQfQPBkl47v73PDDuIhgjGs4hUkCkCJSQbA,1543
|
|
13
|
+
netbox_ddns/utils.py,sha256=qAomseFWGL_VvL0sPF3Zmb6taMl3P9eEASqbMunmoyA,901
|
|
14
|
+
netbox_ddns/validators.py,sha256=K8EzI6D-Mm_H3Es6LzzXx5ntBDsr8tY79_DHZmbamWM,851
|
|
15
|
+
netbox_ddns/views.py,sha256=X01Hc6chcrPyVWYwWsx8nrXMfsx10_OU3GVB3XtNbDE,10275
|
|
16
|
+
netbox_ddns/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
+
netbox_ddns/api/serializers.py,sha256=8rQUNLIIoUOz2M7AHKxdedDIS7QAMUSdrnMcTWuwG78,1098
|
|
18
|
+
netbox_ddns/api/urls.py,sha256=eoDxcu9tvR31xtTu0QebvTPqsCpckJfTqFj6Pm6-EyY,204
|
|
19
|
+
netbox_ddns/api/views.py,sha256=9P5vqubPTd0MYOrApnmDYSzjdEo9kmq0BcjVqUFtIA8,362
|
|
20
|
+
netbox_ddns/migrations/0001_initial.py,sha256=pYwGDj9C3mPUuc8lfiXqTOYEhZ-MpGhLywGRulHcZQA,2461
|
|
21
|
+
netbox_ddns/migrations/0002_add_ttl.py,sha256=HP_lzWLZeSzgkIFFiGUgdzkPDRYt48uNwNTdAFwEwdg,617
|
|
22
|
+
netbox_ddns/migrations/0003_dnsstatus.py,sha256=TBQltrJeyk9q24_WdFpnUfMbV2-1VDt3ADuXN65bVJw,1200
|
|
23
|
+
netbox_ddns/migrations/0004_ensure_trailing_dot.py,sha256=SxKzmMC8IaO9ZDGRPzI3tWWt6AT0q01Dg1tY60mc1Mc,1243
|
|
24
|
+
netbox_ddns/migrations/0005_extradnsname.py,sha256=80f8OANyKpOa5LMZPQgRBdFQQ7ELjUeE0AU4fw5p114,1429
|
|
25
|
+
netbox_ddns/migrations/0006_extradns_cname.py,sha256=-To2qntWjzhnn3eTUX0JZRtf79NU06hkTJKs3CmTJiM,456
|
|
26
|
+
netbox_ddns/migrations/0007_zone_meta.py,sha256=iKHEk-KUJYbaAvuXL6YrsZsMcEPCYqs0EoEb6hRr_m8,416
|
|
27
|
+
netbox_ddns/migrations/0008_server_server_port.py,sha256=qqCMbOVJgxNmoEd2WofNy6QT6QbsiiML_ZzAaXuo0WI,530
|
|
28
|
+
netbox_ddns/migrations/0009_alter_dnsstatus_id_alter_extradnsname_id_and_more.py,sha256=3pjw6MqigeunuaHX011a2-yzxhwG3cELmtp4pmTx_BQ,1204
|
|
29
|
+
netbox_ddns/migrations/0010_extradnsname_created_extradnsname_custom_field_data_and_more.py,sha256=4bpm4nZLCHU0CqnCF6qWGtZd5x9flKrhJYRuAGFycwA,1157
|
|
30
|
+
netbox_ddns/migrations/0011_server_created_server_custom_field_data_and_more.py,sha256=D0resBMdiy7JEznlq1Fcw018CPFZFIn7lEBp5sC6frU,1133
|
|
31
|
+
netbox_ddns/migrations/0012_zone_created_zone_custom_field_data_and_more.py,sha256=5Rx21TsOxbb-bFRWceRTzBWVuw2b9p70w9yha7SfizE,1113
|
|
32
|
+
netbox_ddns/migrations/0013_reversezone_created_reversezone_custom_field_data_and_more.py,sha256=BTo5lpO9NZMwHOCiOhINMfp4aFeIQXkXLQ5HKTARIk0,1137
|
|
33
|
+
netbox_ddns/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
|
+
netbox_ddns/templates/netbox_ddns/extradnsname.html,sha256=noeIxirmaaxBFCCbhCloIfctGQGY7JRi92z19by7e8s,2630
|
|
35
|
+
netbox_ddns/templates/netbox_ddns/reversezone.html,sha256=Ez5su5iqpbwZbRP8LUS0qcojWrnukyTtWBSLVGjI8MQ,1787
|
|
36
|
+
netbox_ddns/templates/netbox_ddns/server.html,sha256=C1MdMk-d3PRjdgEhUngqGVv5MDiYjayrdFOnJTsozxg,2449
|
|
37
|
+
netbox_ddns/templates/netbox_ddns/update_reverse_zone.html,sha256=oF01zNC5sDJVhoWzoj7jQxZqaBE9xvZRsJ-JmI5zonI,429
|
|
38
|
+
netbox_ddns/templates/netbox_ddns/update_zone.html,sha256=76o3CI7CbaJh6VDtAq2SgeW-kLGmY8SjYlkTfLDE8hw,422
|
|
39
|
+
netbox_ddns/templates/netbox_ddns/zone.html,sha256=j1xHfagwx7hEuOWT5h4YIwGkKD9KM3guYtzZsdYhi8o,1912
|
|
40
|
+
netbox_ddns/templates/netbox_ddns/ipaddress/dns_extra.html,sha256=8lk_HTcDiXugbHMq2hsOdjRB3gv-HX9XnrvZJVHnpoA,724
|
|
41
|
+
netbox_ddns/templates/netbox_ddns/ipaddress/dns_info.html,sha256=x4cpUovY3ZxmFoJeTLeqNUIw4ezoBkNfsYaRA6abUh4,1714
|
|
42
|
+
netbox_ddns/templates/netbox_ddns/ipaddress/dns_refresh_button.html,sha256=BBFwn2AP9PHfaU1ieYoB6X2eX84pPrUYYILbwYiKApc,430
|
|
43
|
+
netbox_ddns-1.5.0.dist-info/LICENSE.txt,sha256=DVQuDIgE45qn836wDaWnYhSdxoLXgpRRKH4RuTjpRZQ,10174
|
|
44
|
+
netbox_ddns-1.5.0.dist-info/METADATA,sha256=z9VdpNI1Xw62cffAK0eGaWyavsKQw5oikYpD-XoCVUA,2266
|
|
45
|
+
netbox_ddns-1.5.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
46
|
+
netbox_ddns-1.5.0.dist-info/top_level.txt,sha256=nSPx7dwqPj2hyzG2H0ohzHt0kkyzA-6M3zYRL6qAm-s,12
|
|
47
|
+
netbox_ddns-1.5.0.dist-info/RECORD,,
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
netbox_ddns/__init__.py,sha256=OTcu4ObcjjMxFMaT-aHc6S1U8SsGS5cXYc0NJopawB0,652
|
|
2
|
-
netbox_ddns/admin.py,sha256=cCi0PnfuNv9PSygWbjFCh0ah6F0m3Ty0C3L-VtQYkFg,5658
|
|
3
|
-
netbox_ddns/background_tasks.py,sha256=oCw6V3aas1Q1C8ftsn1TisrJ0JU51sdDt_iTlm-ZNmk,7070
|
|
4
|
-
netbox_ddns/forms.py,sha256=zxj7IDk6kLxb-Z4HBcPH_-VuHP8bxfy2eEeKuYuf6Gg,188
|
|
5
|
-
netbox_ddns/models.py,sha256=22j5CQ8UfipKAJXz5MbyfkFIyquQqLPbDjZJtxpWKgk,12017
|
|
6
|
-
netbox_ddns/signals.py,sha256=yHkgZImnyTqRwPXAr2W9bd4rJof7YblkylJnDn1_FDc,4185
|
|
7
|
-
netbox_ddns/tables.py,sha256=3HFCZPr0Wj_gpEJeuDo-a0vG6YJ-9Q6_Zy_dMF3-vlA,1696
|
|
8
|
-
netbox_ddns/template_content.py,sha256=cnv3dOUd1LiidpSH2bMtYCs15sDcHLlqRv4cwfoeKNQ,1228
|
|
9
|
-
netbox_ddns/urls.py,sha256=04WS4w3RAX5KntnLSs5YLboIqDqNhubOeb_TVqUl9x0,788
|
|
10
|
-
netbox_ddns/utils.py,sha256=qAomseFWGL_VvL0sPF3Zmb6taMl3P9eEASqbMunmoyA,901
|
|
11
|
-
netbox_ddns/validators.py,sha256=K8EzI6D-Mm_H3Es6LzzXx5ntBDsr8tY79_DHZmbamWM,851
|
|
12
|
-
netbox_ddns/views.py,sha256=eSSmg2jyZY0AA3_hsZL00kGr7FqwWCDHtwzNt08ZGcQ,3950
|
|
13
|
-
netbox_ddns/migrations/0001_initial.py,sha256=pYwGDj9C3mPUuc8lfiXqTOYEhZ-MpGhLywGRulHcZQA,2461
|
|
14
|
-
netbox_ddns/migrations/0002_add_ttl.py,sha256=HP_lzWLZeSzgkIFFiGUgdzkPDRYt48uNwNTdAFwEwdg,617
|
|
15
|
-
netbox_ddns/migrations/0003_dnsstatus.py,sha256=TBQltrJeyk9q24_WdFpnUfMbV2-1VDt3ADuXN65bVJw,1200
|
|
16
|
-
netbox_ddns/migrations/0004_ensure_trailing_dot.py,sha256=SxKzmMC8IaO9ZDGRPzI3tWWt6AT0q01Dg1tY60mc1Mc,1243
|
|
17
|
-
netbox_ddns/migrations/0005_extradnsname.py,sha256=80f8OANyKpOa5LMZPQgRBdFQQ7ELjUeE0AU4fw5p114,1429
|
|
18
|
-
netbox_ddns/migrations/0006_extradns_cname.py,sha256=-To2qntWjzhnn3eTUX0JZRtf79NU06hkTJKs3CmTJiM,456
|
|
19
|
-
netbox_ddns/migrations/0007_zone_meta.py,sha256=iKHEk-KUJYbaAvuXL6YrsZsMcEPCYqs0EoEb6hRr_m8,416
|
|
20
|
-
netbox_ddns/migrations/0008_server_server_port.py,sha256=qqCMbOVJgxNmoEd2WofNy6QT6QbsiiML_ZzAaXuo0WI,530
|
|
21
|
-
netbox_ddns/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
netbox_ddns/templates/netbox_ddns/ipaddress/dns_extra.html,sha256=LmyLtOMpylHiicf4_zU1NIUVIafnEPUIt3hDiD2aK_o,720
|
|
23
|
-
netbox_ddns/templates/netbox_ddns/ipaddress/dns_info.html,sha256=x4cpUovY3ZxmFoJeTLeqNUIw4ezoBkNfsYaRA6abUh4,1714
|
|
24
|
-
netbox_ddns/templates/netbox_ddns/ipaddress/dns_refresh_button.html,sha256=_aBikAGy-UPmfo5MtX3YgLbocrQ8zf2091fW8PDzIRk,437
|
|
25
|
-
netbox_ddns-1.3.0.dist-info/LICENSE.txt,sha256=DVQuDIgE45qn836wDaWnYhSdxoLXgpRRKH4RuTjpRZQ,10174
|
|
26
|
-
netbox_ddns-1.3.0.dist-info/METADATA,sha256=POraBfrmm-XJTcN3kptGPdqSOI5m3p3A3mmTDkZK-8o,2266
|
|
27
|
-
netbox_ddns-1.3.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
28
|
-
netbox_ddns-1.3.0.dist-info/top_level.txt,sha256=nSPx7dwqPj2hyzG2H0ohzHt0kkyzA-6M3zYRL6qAm-s,12
|
|
29
|
-
netbox_ddns-1.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|