netbox-plugin-dns 1.4.1__py3-none-any.whl → 1.4.3__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.
Potentially problematic release.
This version of netbox-plugin-dns might be problematic. Click here for more details.
- netbox_dns/__init__.py +1 -1
- netbox_dns/api/nested_serializers.py +1 -0
- netbox_dns/api/serializers_/dnssec_policy.py +2 -0
- netbox_dns/api/serializers_/zone.py +5 -0
- netbox_dns/fields/address.py +17 -0
- netbox_dns/filtersets/dnssec_policy.py +1 -0
- netbox_dns/filtersets/zone.py +22 -1
- netbox_dns/forms/dnssec_policy.py +42 -0
- netbox_dns/forms/zone.py +8 -15
- netbox_dns/graphql/filters/dnssec_policy.py +1 -0
- netbox_dns/graphql/filters/zone.py +2 -1
- netbox_dns/graphql/types.py +6 -2
- netbox_dns/migrations/0025_remove_zone_inline_signing_and_more.py +22 -0
- netbox_dns/migrations/0026_alter_dnssecpolicy_nsec3_opt_out.py +18 -0
- netbox_dns/migrations/0027_zone_comments.py +18 -0
- netbox_dns/models/dnssec_policy.py +7 -3
- netbox_dns/models/zone.py +28 -10
- netbox_dns/tables/dnssec_policy.py +11 -6
- netbox_dns/tables/record.py +6 -4
- netbox_dns/tables/record_template.py +10 -4
- netbox_dns/tables/view.py +2 -2
- netbox_dns/tables/zone.py +3 -1
- netbox_dns/template_content.py +26 -6
- netbox_dns/templates/netbox_dns/dnssecpolicy.html +9 -1
- netbox_dns/templates/netbox_dns/record/related.html +6 -15
- netbox_dns/templates/netbox_dns/zone.html +1 -4
- {netbox_plugin_dns-1.4.1.dist-info → netbox_plugin_dns-1.4.3.dist-info}/METADATA +1 -1
- {netbox_plugin_dns-1.4.1.dist-info → netbox_plugin_dns-1.4.3.dist-info}/RECORD +31 -28
- {netbox_plugin_dns-1.4.1.dist-info → netbox_plugin_dns-1.4.3.dist-info}/WHEEL +0 -0
- {netbox_plugin_dns-1.4.1.dist-info → netbox_plugin_dns-1.4.3.dist-info}/licenses/LICENSE +0 -0
- {netbox_plugin_dns-1.4.1.dist-info → netbox_plugin_dns-1.4.3.dist-info}/top_level.txt +0 -0
netbox_dns/__init__.py
CHANGED
|
@@ -26,6 +26,7 @@ class DNSSECPolicySerializer(NetBoxModelSerializer):
|
|
|
26
26
|
"description",
|
|
27
27
|
"status",
|
|
28
28
|
"tags",
|
|
29
|
+
"inline_signing",
|
|
29
30
|
"key_templates",
|
|
30
31
|
"zones",
|
|
31
32
|
"zone_templates",
|
|
@@ -60,6 +61,7 @@ class DNSSECPolicySerializer(NetBoxModelSerializer):
|
|
|
60
61
|
"name",
|
|
61
62
|
"description",
|
|
62
63
|
"status",
|
|
64
|
+
"inline_signing",
|
|
63
65
|
)
|
|
64
66
|
|
|
65
67
|
url = serializers.HyperlinkedIdentityField(
|
|
@@ -61,6 +61,7 @@ class ZoneSerializer(NetBoxModelSerializer):
|
|
|
61
61
|
"tech_c",
|
|
62
62
|
"admin_c",
|
|
63
63
|
"billing_c",
|
|
64
|
+
"comments",
|
|
64
65
|
"active",
|
|
65
66
|
"custom_fields",
|
|
66
67
|
"tenant",
|
|
@@ -195,6 +196,7 @@ class ZoneSerializer(NetBoxModelSerializer):
|
|
|
195
196
|
default=None,
|
|
196
197
|
help_text=_("Template to apply to the zone"),
|
|
197
198
|
)
|
|
199
|
+
inline_signing = serializers.SerializerMethodField()
|
|
198
200
|
active = serializers.BooleanField(
|
|
199
201
|
required=False,
|
|
200
202
|
read_only=True,
|
|
@@ -212,6 +214,9 @@ class ZoneSerializer(NetBoxModelSerializer):
|
|
|
212
214
|
|
|
213
215
|
return super().validate(data)
|
|
214
216
|
|
|
217
|
+
def get_inline_signing(self, instance):
|
|
218
|
+
return instance.inline_signing
|
|
219
|
+
|
|
215
220
|
def create(self, validated_data):
|
|
216
221
|
template = validated_data.pop("template", None)
|
|
217
222
|
nameservers = validated_data.pop("nameservers", None)
|
netbox_dns/fields/address.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from django.db import models
|
|
2
|
+
from django.db.models import Lookup
|
|
2
3
|
from django.core.exceptions import ValidationError
|
|
3
4
|
from django.utils.translation import gettext_lazy as _
|
|
4
5
|
|
|
@@ -50,3 +51,19 @@ class AddressField(models.Field):
|
|
|
50
51
|
|
|
51
52
|
def db_type(self, connection):
|
|
52
53
|
return "inet"
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class AddressContained(Lookup):
|
|
57
|
+
lookup_name = "contained"
|
|
58
|
+
|
|
59
|
+
def get_prep_lookup(self):
|
|
60
|
+
return str(self.rhs)
|
|
61
|
+
|
|
62
|
+
def as_sql(self, compiler, connection):
|
|
63
|
+
lhs, lhs_params = self.process_lhs(compiler, connection)
|
|
64
|
+
rhs, rhs_params = self.process_rhs(compiler, connection)
|
|
65
|
+
params = lhs_params + rhs_params
|
|
66
|
+
return f"CAST(HOST({lhs}) AS INET) <<= {rhs}", params
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
AddressField.register_lookup(AddressContained)
|
netbox_dns/filtersets/zone.py
CHANGED
|
@@ -41,9 +41,9 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
41
41
|
"soa_minimum",
|
|
42
42
|
"soa_serial_auto",
|
|
43
43
|
"rfc2317_parent_managed",
|
|
44
|
-
"inline_signing",
|
|
45
44
|
"registry_domain_id",
|
|
46
45
|
"domain_status",
|
|
46
|
+
"inline_signing",
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
status = django_filters.MultipleChoiceFilter(
|
|
@@ -172,6 +172,10 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
172
172
|
active = django_filters.BooleanFilter(
|
|
173
173
|
label=_("Zone is active"),
|
|
174
174
|
)
|
|
175
|
+
inline_signing = django_filters.BooleanFilter(
|
|
176
|
+
label=_("Zone is using a DNSSEC policy with inline signing"),
|
|
177
|
+
method="filter_inline_signing",
|
|
178
|
+
)
|
|
175
179
|
|
|
176
180
|
def filter_parental_agents(self, queryset, name, value):
|
|
177
181
|
if not value:
|
|
@@ -214,6 +218,22 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
214
218
|
except (netaddr.AddrFormatError, ValueError):
|
|
215
219
|
return queryset.none()
|
|
216
220
|
|
|
221
|
+
def filter_inline_signing(self, queryset, name, value):
|
|
222
|
+
if value is None:
|
|
223
|
+
return queryset
|
|
224
|
+
|
|
225
|
+
if value:
|
|
226
|
+
return queryset.filter(
|
|
227
|
+
dnssec_policy__isnull=False, dnssec_policy__inline_signing=True
|
|
228
|
+
)
|
|
229
|
+
else:
|
|
230
|
+
return queryset.filter(
|
|
231
|
+
Q(
|
|
232
|
+
Q(dnssec_policy__isnull=True)
|
|
233
|
+
| Q(dnssec_policy__inline_signing=False)
|
|
234
|
+
)
|
|
235
|
+
)
|
|
236
|
+
|
|
217
237
|
def search(self, queryset, name, value):
|
|
218
238
|
if not value.strip():
|
|
219
239
|
return queryset
|
|
@@ -228,5 +248,6 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
228
248
|
| Q(admin_c__name__icontains=value)
|
|
229
249
|
| Q(tech_c__name__icontains=value)
|
|
230
250
|
| Q(billing_c__name__icontains=value)
|
|
251
|
+
| Q(comments__icontains=value)
|
|
231
252
|
)
|
|
232
253
|
return queryset.filter(qs_filter)
|
|
@@ -41,6 +41,7 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
|
|
|
41
41
|
"name",
|
|
42
42
|
"description",
|
|
43
43
|
"status",
|
|
44
|
+
"inline_signing",
|
|
44
45
|
"key_templates",
|
|
45
46
|
"dnskey_ttl",
|
|
46
47
|
"purge_keys",
|
|
@@ -71,6 +72,7 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
|
|
|
71
72
|
"description",
|
|
72
73
|
"status",
|
|
73
74
|
"key_templates",
|
|
75
|
+
"inline_signing",
|
|
74
76
|
name=_("Attributes"),
|
|
75
77
|
),
|
|
76
78
|
FieldSet(
|
|
@@ -111,6 +113,14 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
|
|
|
111
113
|
),
|
|
112
114
|
)
|
|
113
115
|
|
|
116
|
+
def __init__(self, *args, **kwargs):
|
|
117
|
+
super().__init__(*args, **kwargs)
|
|
118
|
+
|
|
119
|
+
if not self.initial.get("use_nsec3"):
|
|
120
|
+
self.initial["nsec3_iterations"] = None
|
|
121
|
+
self.initial["nsec3_opt_out"] = None
|
|
122
|
+
self.initial["nsec3_salt_size"] = None
|
|
123
|
+
|
|
114
124
|
key_templates = DynamicModelMultipleChoiceField(
|
|
115
125
|
queryset=DNSSECKeyTemplate.objects.all(),
|
|
116
126
|
required=False,
|
|
@@ -178,6 +188,21 @@ class DNSSECPolicyForm(TenancyForm, NetBoxModelForm):
|
|
|
178
188
|
label=_("Parent Propagation Delay"),
|
|
179
189
|
placeholder=DNSSECPolicy.get_fallback_setting("parent_propagation_delay"),
|
|
180
190
|
)
|
|
191
|
+
nsec3_opt_out = forms.NullBooleanField(
|
|
192
|
+
required=False,
|
|
193
|
+
widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES),
|
|
194
|
+
label=_("NSEC3 Opt-Out"),
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
def clean(self, *args, **kwargs):
|
|
198
|
+
super().clean(*args, **kwargs)
|
|
199
|
+
|
|
200
|
+
if not self.cleaned_data.get("use_nsec3"):
|
|
201
|
+
self.cleaned_data["nsec3_iterations"] = None
|
|
202
|
+
self.cleaned_data["nsec3_opt_out"] = None
|
|
203
|
+
self.cleaned_data["nsec3_salt_size"] = None
|
|
204
|
+
|
|
205
|
+
return self.cleaned_data
|
|
181
206
|
|
|
182
207
|
|
|
183
208
|
class DNSSECPolicyFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
@@ -194,6 +219,7 @@ class DNSSECPolicyFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
194
219
|
"description",
|
|
195
220
|
"status",
|
|
196
221
|
"key_template_id",
|
|
222
|
+
"inline_signing",
|
|
197
223
|
name=_("Attributes"),
|
|
198
224
|
),
|
|
199
225
|
FieldSet(
|
|
@@ -250,6 +276,11 @@ class DNSSECPolicyFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
250
276
|
required=False,
|
|
251
277
|
label=_("Status"),
|
|
252
278
|
)
|
|
279
|
+
inline_signing = forms.NullBooleanField(
|
|
280
|
+
required=False,
|
|
281
|
+
widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES),
|
|
282
|
+
label=_("Use Inline Signing"),
|
|
283
|
+
)
|
|
253
284
|
key_template_id = DynamicModelMultipleChoiceField(
|
|
254
285
|
queryset=DNSSECKeyTemplate.objects.all(),
|
|
255
286
|
required=False,
|
|
@@ -355,6 +386,7 @@ class DNSSECPolicyImportForm(NetBoxModelImportForm):
|
|
|
355
386
|
fields = (
|
|
356
387
|
"name",
|
|
357
388
|
"description",
|
|
389
|
+
"inline_signing",
|
|
358
390
|
"key_templates",
|
|
359
391
|
"dnskey_ttl",
|
|
360
392
|
"purge_keys",
|
|
@@ -383,6 +415,10 @@ class DNSSECPolicyImportForm(NetBoxModelImportForm):
|
|
|
383
415
|
required=False,
|
|
384
416
|
label=_("Status"),
|
|
385
417
|
)
|
|
418
|
+
inline_signing = forms.BooleanField(
|
|
419
|
+
required=False,
|
|
420
|
+
label=_("Use Inline Signing"),
|
|
421
|
+
)
|
|
386
422
|
dnskey_ttl = TimePeriodField(
|
|
387
423
|
required=False,
|
|
388
424
|
label=_("DNSKEY TTL"),
|
|
@@ -446,6 +482,7 @@ class DNSSECPolicyBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
446
482
|
FieldSet(
|
|
447
483
|
"description",
|
|
448
484
|
"key_templates",
|
|
485
|
+
"inline_signing",
|
|
449
486
|
name=_("Attributes"),
|
|
450
487
|
),
|
|
451
488
|
FieldSet(
|
|
@@ -516,6 +553,11 @@ class DNSSECPolicyBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
516
553
|
required=False,
|
|
517
554
|
label=_("Status"),
|
|
518
555
|
)
|
|
556
|
+
inline_signing = forms.NullBooleanField(
|
|
557
|
+
required=False,
|
|
558
|
+
widget=BulkEditNullBooleanSelect(),
|
|
559
|
+
label=_("Use Inline Signing"),
|
|
560
|
+
)
|
|
519
561
|
dnskey_ttl = TimePeriodField(
|
|
520
562
|
required=False,
|
|
521
563
|
label=_("DNSKEY TTL"),
|
netbox_dns/forms/zone.py
CHANGED
|
@@ -20,6 +20,7 @@ from utilities.forms.fields import (
|
|
|
20
20
|
CSVModelChoiceField,
|
|
21
21
|
CSVModelMultipleChoiceField,
|
|
22
22
|
DynamicModelChoiceField,
|
|
23
|
+
CommentField,
|
|
23
24
|
)
|
|
24
25
|
from utilities.forms.widgets import BulkEditNullBooleanSelect, DatePicker, HTMXSelect
|
|
25
26
|
from utilities.forms.rendering import FieldSet
|
|
@@ -183,7 +184,6 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
183
184
|
"rfc2317_prefix",
|
|
184
185
|
"rfc2317_parent_managed",
|
|
185
186
|
"dnssec_policy",
|
|
186
|
-
"inline_signing",
|
|
187
187
|
"parental_agents",
|
|
188
188
|
"registrar",
|
|
189
189
|
"registry_domain_id",
|
|
@@ -195,6 +195,7 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
195
195
|
"billing_c",
|
|
196
196
|
"tenant_group",
|
|
197
197
|
"tenant",
|
|
198
|
+
"comments",
|
|
198
199
|
"tags",
|
|
199
200
|
)
|
|
200
201
|
|
|
@@ -241,7 +242,6 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
241
242
|
),
|
|
242
243
|
FieldSet(
|
|
243
244
|
"dnssec_policy",
|
|
244
|
-
"inline_signing",
|
|
245
245
|
"parental_agents",
|
|
246
246
|
name=_("DNSSEC"),
|
|
247
247
|
),
|
|
@@ -317,7 +317,6 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
317
317
|
)
|
|
318
318
|
|
|
319
319
|
if not get_field_value(self, "dnssec_policy"):
|
|
320
|
-
del self.fields["inline_signing"]
|
|
321
320
|
del self.fields["parental_agents"]
|
|
322
321
|
|
|
323
322
|
if not get_field_value(self, "registrar"):
|
|
@@ -415,6 +414,8 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
415
414
|
label=_("RFC2317 Prefix"),
|
|
416
415
|
)
|
|
417
416
|
|
|
417
|
+
comments = CommentField()
|
|
418
|
+
|
|
418
419
|
def clean_default_ttl(self):
|
|
419
420
|
return (
|
|
420
421
|
self.cleaned_data["default_ttl"]
|
|
@@ -552,7 +553,7 @@ class ZoneFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
552
553
|
inline_signing = forms.NullBooleanField(
|
|
553
554
|
required=False,
|
|
554
555
|
widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES),
|
|
555
|
-
label=_("
|
|
556
|
+
label=_("DNSSEC Policy uses inline signing"),
|
|
556
557
|
)
|
|
557
558
|
parental_agents = forms.GenericIPAddressField(
|
|
558
559
|
required=False,
|
|
@@ -632,7 +633,6 @@ class ZoneImportForm(ZoneTemplateUpdateMixin, NetBoxModelImportForm):
|
|
|
632
633
|
"soa_expire",
|
|
633
634
|
"soa_minimum",
|
|
634
635
|
"dnssec_policy",
|
|
635
|
-
"inline_signing",
|
|
636
636
|
"parental_agents",
|
|
637
637
|
"rfc2317_prefix",
|
|
638
638
|
"rfc2317_parent_managed",
|
|
@@ -645,6 +645,7 @@ class ZoneImportForm(ZoneTemplateUpdateMixin, NetBoxModelImportForm):
|
|
|
645
645
|
"tech_c",
|
|
646
646
|
"billing_c",
|
|
647
647
|
"tenant",
|
|
648
|
+
"comments",
|
|
648
649
|
"tags",
|
|
649
650
|
)
|
|
650
651
|
|
|
@@ -741,10 +742,6 @@ class ZoneImportForm(ZoneTemplateUpdateMixin, NetBoxModelImportForm):
|
|
|
741
742
|
},
|
|
742
743
|
label=_("DNSSEC Policy"),
|
|
743
744
|
)
|
|
744
|
-
inline_signing = forms.BooleanField(
|
|
745
|
-
required=False,
|
|
746
|
-
label=_("Use Inline Signing"),
|
|
747
|
-
)
|
|
748
745
|
registrar = CSVModelChoiceField(
|
|
749
746
|
queryset=Registrar.objects.all(),
|
|
750
747
|
required=False,
|
|
@@ -860,7 +857,6 @@ class ZoneBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
860
857
|
),
|
|
861
858
|
FieldSet(
|
|
862
859
|
"dnssec_policy",
|
|
863
|
-
"inline_signing",
|
|
864
860
|
"parental_agents",
|
|
865
861
|
name=_("DNSSEC"),
|
|
866
862
|
),
|
|
@@ -900,6 +896,7 @@ class ZoneBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
900
896
|
"tech_c",
|
|
901
897
|
"billing_c",
|
|
902
898
|
"tenant",
|
|
899
|
+
"comments",
|
|
903
900
|
)
|
|
904
901
|
|
|
905
902
|
view = DynamicModelChoiceField(
|
|
@@ -990,11 +987,6 @@ class ZoneBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
990
987
|
required=False,
|
|
991
988
|
label=_("DNSSEC Policy"),
|
|
992
989
|
)
|
|
993
|
-
inline_signing = forms.NullBooleanField(
|
|
994
|
-
required=False,
|
|
995
|
-
widget=BulkEditNullBooleanSelect(),
|
|
996
|
-
label=_("Use Inline Signing"),
|
|
997
|
-
)
|
|
998
990
|
parental_agents = SimpleArrayField(
|
|
999
991
|
required=False,
|
|
1000
992
|
base_field=forms.GenericIPAddressField(),
|
|
@@ -1049,3 +1041,4 @@ class ZoneBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
1049
1041
|
required=False,
|
|
1050
1042
|
label=_("Tenant"),
|
|
1051
1043
|
)
|
|
1044
|
+
comments = CommentField()
|
|
@@ -91,7 +91,6 @@ class NetBoxDNSZoneFilter(
|
|
|
91
91
|
]
|
|
92
92
|
| None
|
|
93
93
|
)
|
|
94
|
-
inline_signing: FilterLookup[bool] | None = strawberry_django.filter_field()
|
|
95
94
|
|
|
96
95
|
registrar: (
|
|
97
96
|
Annotated[
|
|
@@ -142,5 +141,7 @@ class NetBoxDNSZoneFilter(
|
|
|
142
141
|
rfc2317_parent_zone_id: ID | None = strawberry_django.filter_field()
|
|
143
142
|
rfc2317_parent_managed: FilterLookup[bool] | None = strawberry_django.filter_field()
|
|
144
143
|
|
|
144
|
+
comments: FilterLookup[str] | None = strawberry_django.filter_field()
|
|
145
|
+
|
|
145
146
|
arpa_network: FilterLookup[str] | None = strawberry_django.filter_field()
|
|
146
147
|
active: FilterLookup[bool] | None = strawberry_django.filter_field()
|
netbox_dns/graphql/types.py
CHANGED
|
@@ -89,7 +89,7 @@ class NetBoxDNSZoneType(NetBoxObjectType):
|
|
|
89
89
|
]
|
|
90
90
|
| None
|
|
91
91
|
)
|
|
92
|
-
inline_signing: bool
|
|
92
|
+
inline_signing: bool | None
|
|
93
93
|
parental_agents: List[str]
|
|
94
94
|
registrar: (
|
|
95
95
|
Annotated["NetBoxDNSRegistrarType", strawberry.lazy("netbox_dns.graphql.types")]
|
|
@@ -136,6 +136,9 @@ class NetBoxDNSZoneType(NetBoxObjectType):
|
|
|
136
136
|
rfc2317_child_zones: List[
|
|
137
137
|
Annotated["NetBoxDNSRecordType", strawberry.lazy("netbox_dns.graphql.types")]
|
|
138
138
|
]
|
|
139
|
+
|
|
140
|
+
comments: str | None
|
|
141
|
+
|
|
139
142
|
arpa_network: str | None
|
|
140
143
|
tenant: Annotated["TenantType", strawberry.lazy("tenancy.graphql.types")] | None
|
|
141
144
|
|
|
@@ -194,6 +197,7 @@ class NetBoxDNSDNSSECPolicyType(NetBoxObjectType):
|
|
|
194
197
|
description: str | None
|
|
195
198
|
status: str
|
|
196
199
|
tenant: Annotated["TenantType", strawberry.lazy("tenancy.graphql.types")] | None
|
|
200
|
+
inline_signing: bool
|
|
197
201
|
key_templates: List[
|
|
198
202
|
Annotated[
|
|
199
203
|
"NetBoxDNSDNSSECKeyTemplateType",
|
|
@@ -216,7 +220,7 @@ class NetBoxDNSDNSSECPolicyType(NetBoxObjectType):
|
|
|
216
220
|
parent_propagation_delay: BigInt | None
|
|
217
221
|
use_nsec3: bool
|
|
218
222
|
nsec3_iterations: BigInt | None
|
|
219
|
-
nsec3_opt_out: bool
|
|
223
|
+
nsec3_opt_out: bool | None
|
|
220
224
|
nsec3_salt_size: BigInt | None
|
|
221
225
|
|
|
222
226
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Generated by Django 5.2.6 on 2025-10-05 16:57
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("netbox_dns", "0024_zonetemplate_parental_agents"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.RemoveField(
|
|
14
|
+
model_name="zone",
|
|
15
|
+
name="inline_signing",
|
|
16
|
+
),
|
|
17
|
+
migrations.AddField(
|
|
18
|
+
model_name="dnssecpolicy",
|
|
19
|
+
name="inline_signing",
|
|
20
|
+
field=models.BooleanField(default=True),
|
|
21
|
+
),
|
|
22
|
+
]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 5.2.6 on 2025-10-08 14:04
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("netbox_dns", "0025_remove_zone_inline_signing_and_more"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterField(
|
|
14
|
+
model_name="dnssecpolicy",
|
|
15
|
+
name="nsec3_opt_out",
|
|
16
|
+
field=models.BooleanField(blank=True, null=True),
|
|
17
|
+
),
|
|
18
|
+
]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 5.2.7 on 2025-10-24 12:10
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
("netbox_dns", "0026_alter_dnssecpolicy_nsec3_opt_out"),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AddField(
|
|
14
|
+
model_name="zone",
|
|
15
|
+
name="comments",
|
|
16
|
+
field=models.TextField(blank=True),
|
|
17
|
+
),
|
|
18
|
+
]
|
|
@@ -51,6 +51,11 @@ class DNSSECPolicy(ContactsMixin, NetBoxModel):
|
|
|
51
51
|
null=False,
|
|
52
52
|
)
|
|
53
53
|
|
|
54
|
+
inline_signing = models.BooleanField(
|
|
55
|
+
verbose_name=_("Inline Signing"),
|
|
56
|
+
help_text=_("Use inline signing"),
|
|
57
|
+
default=True,
|
|
58
|
+
)
|
|
54
59
|
key_templates = models.ManyToManyField(
|
|
55
60
|
verbose_name=_("Key Templates"),
|
|
56
61
|
to="DNSSECKeyTemplate",
|
|
@@ -145,9 +150,8 @@ class DNSSECPolicy(ContactsMixin, NetBoxModel):
|
|
|
145
150
|
)
|
|
146
151
|
nsec3_opt_out = models.BooleanField(
|
|
147
152
|
verbose_name=_("NSEC3 Opt-Out"),
|
|
148
|
-
blank=
|
|
149
|
-
null=
|
|
150
|
-
default=False,
|
|
153
|
+
blank=True,
|
|
154
|
+
null=True,
|
|
151
155
|
)
|
|
152
156
|
nsec3_salt_size = models.PositiveIntegerField(
|
|
153
157
|
verbose_name=_("NSEC3 Salt Size"),
|
netbox_dns/models/zone.py
CHANGED
|
@@ -25,6 +25,7 @@ from netbox.search import SearchIndex, register_search
|
|
|
25
25
|
from netbox.plugins.utils import get_plugin_config
|
|
26
26
|
from utilities.querysets import RestrictedQuerySet
|
|
27
27
|
from ipam.models import IPAddress
|
|
28
|
+
from ipam.choices import IPAddressFamilyChoices
|
|
28
29
|
|
|
29
30
|
from netbox_dns.choices import (
|
|
30
31
|
RecordClassChoices,
|
|
@@ -123,7 +124,6 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
123
124
|
"description",
|
|
124
125
|
"status",
|
|
125
126
|
"dnssec_policy",
|
|
126
|
-
"inline_signing",
|
|
127
127
|
"parental_agents",
|
|
128
128
|
"registrar",
|
|
129
129
|
"registry_domain_id",
|
|
@@ -135,6 +135,7 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
135
135
|
"billing_c",
|
|
136
136
|
"rfc2317_parent_managed",
|
|
137
137
|
"tenant",
|
|
138
|
+
"comments",
|
|
138
139
|
}
|
|
139
140
|
|
|
140
141
|
objects = ZoneManager()
|
|
@@ -262,11 +263,6 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
262
263
|
blank=True,
|
|
263
264
|
null=True,
|
|
264
265
|
)
|
|
265
|
-
inline_signing = models.BooleanField(
|
|
266
|
-
verbose_name=_("Inline Signing"),
|
|
267
|
-
help_text=_("Use inline signing for DNSSEC"),
|
|
268
|
-
default=True,
|
|
269
|
-
)
|
|
270
266
|
parental_agents = ArrayField(
|
|
271
267
|
base_field=models.GenericIPAddressField(
|
|
272
268
|
protocol="both",
|
|
@@ -367,6 +363,10 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
367
363
|
blank=True,
|
|
368
364
|
null=True,
|
|
369
365
|
)
|
|
366
|
+
comments = models.TextField(
|
|
367
|
+
verbose_name=_("Comments"),
|
|
368
|
+
blank=True,
|
|
369
|
+
)
|
|
370
370
|
|
|
371
371
|
@property
|
|
372
372
|
def fqdn(self):
|
|
@@ -432,6 +432,13 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
432
432
|
def is_rfc2317_zone(self):
|
|
433
433
|
return self.rfc2317_prefix is not None
|
|
434
434
|
|
|
435
|
+
@property
|
|
436
|
+
def inline_signing(self):
|
|
437
|
+
if self.dnssec_policy is None:
|
|
438
|
+
return None
|
|
439
|
+
|
|
440
|
+
return self.dnssec_policy.inline_signing
|
|
441
|
+
|
|
435
442
|
def get_rfc2317_parent_zone(self):
|
|
436
443
|
if not self.is_rfc2317_zone:
|
|
437
444
|
return None
|
|
@@ -801,7 +808,6 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
801
808
|
|
|
802
809
|
def clean(self, *args, **kwargs):
|
|
803
810
|
if not self.dnssec_policy:
|
|
804
|
-
self.inline_signing = self._meta.get_field("inline_signing").get_default()
|
|
805
811
|
self.parental_agents = self._meta.get_field("parental_agents").get_default()
|
|
806
812
|
|
|
807
813
|
if not self.registrar:
|
|
@@ -970,9 +976,21 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
970
976
|
zones = self.view.zones.filter(
|
|
971
977
|
arpa_network__net_contains_or_equals=self.arpa_network
|
|
972
978
|
)
|
|
979
|
+
|
|
980
|
+
if self.arpa_network.version == IPAddressFamilyChoices.FAMILY_4:
|
|
981
|
+
record_type = RecordTypeChoices.A
|
|
982
|
+
else:
|
|
983
|
+
record_type = RecordTypeChoices.AAAA
|
|
984
|
+
|
|
973
985
|
address_records = Record.objects.filter(
|
|
974
|
-
Q(
|
|
975
|
-
|
|
986
|
+
Q(
|
|
987
|
+
ptr_record__isnull=True,
|
|
988
|
+
zone__view=self.view,
|
|
989
|
+
ip_address__isnull=False,
|
|
990
|
+
ip_address__contained=self.arpa_network,
|
|
991
|
+
type=record_type,
|
|
992
|
+
)
|
|
993
|
+
| Q(ptr_record__zone__in=zones),
|
|
976
994
|
disable_ptr=False,
|
|
977
995
|
)
|
|
978
996
|
|
|
@@ -1001,7 +1019,7 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
1001
1019
|
arpa_network__net_contains=self.rfc2317_prefix
|
|
1002
1020
|
)
|
|
1003
1021
|
address_records = Record.objects.filter(
|
|
1004
|
-
Q(ptr_record__isnull=True)
|
|
1022
|
+
Q(ptr_record__isnull=True, ip_address__contained=self.rfc2317_prefix)
|
|
1005
1023
|
| Q(ptr_record__zone__in=zones)
|
|
1006
1024
|
| Q(ptr_record__zone=self),
|
|
1007
1025
|
type=RecordTypeChoices.A,
|
|
@@ -7,6 +7,7 @@ from netbox.tables import (
|
|
|
7
7
|
TagColumn,
|
|
8
8
|
ChoiceFieldColumn,
|
|
9
9
|
ActionsColumn,
|
|
10
|
+
BooleanColumn,
|
|
10
11
|
)
|
|
11
12
|
from tenancy.tables import TenancyColumnsMixin
|
|
12
13
|
|
|
@@ -23,12 +24,16 @@ class DNSSECPolicyTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
23
24
|
class Meta(NetBoxTable.Meta):
|
|
24
25
|
model = DNSSECPolicy
|
|
25
26
|
|
|
26
|
-
fields = (
|
|
27
|
+
fields = (
|
|
28
|
+
"description",
|
|
29
|
+
"inline_signing",
|
|
30
|
+
)
|
|
27
31
|
|
|
28
32
|
default_columns = (
|
|
29
33
|
"name",
|
|
30
34
|
"description",
|
|
31
35
|
"status",
|
|
36
|
+
"inline_signing",
|
|
32
37
|
"use_nsec3",
|
|
33
38
|
"tags",
|
|
34
39
|
)
|
|
@@ -73,7 +78,7 @@ class DNSSECPolicyTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
73
78
|
zone_propagation_delay = tables.Column(
|
|
74
79
|
verbose_name=_("Zone Propagation Delay"),
|
|
75
80
|
)
|
|
76
|
-
create_cdnskey =
|
|
81
|
+
create_cdnskey = BooleanColumn(
|
|
77
82
|
verbose_name=_("Create CDNSKEY"),
|
|
78
83
|
)
|
|
79
84
|
cds_digest_types = tables.Column(
|
|
@@ -85,13 +90,13 @@ class DNSSECPolicyTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
85
90
|
parent_propagation_delay = tables.Column(
|
|
86
91
|
verbose_name=_("Parent Propagation Delay"),
|
|
87
92
|
)
|
|
88
|
-
use_nsec3 =
|
|
93
|
+
use_nsec3 = BooleanColumn(
|
|
89
94
|
verbose_name=_("Use NSEC3"),
|
|
90
95
|
)
|
|
91
96
|
nsec3_iterations = tables.Column(
|
|
92
97
|
verbose_name=_("NSEC3 Iterations"),
|
|
93
98
|
)
|
|
94
|
-
nsec3_opt_out =
|
|
99
|
+
nsec3_opt_out = BooleanColumn(
|
|
95
100
|
verbose_name=_("NSEC3 Opt Out"),
|
|
96
101
|
)
|
|
97
102
|
nsec3_salt_size = tables.Column(
|
|
@@ -122,10 +127,10 @@ class DNSSECPolicyDisplayTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
122
127
|
status = ChoiceFieldColumn(
|
|
123
128
|
verbose_name=_("Status"),
|
|
124
129
|
)
|
|
125
|
-
create_cdnskey =
|
|
130
|
+
create_cdnskey = BooleanColumn(
|
|
126
131
|
verbose_name=_("Create CDNSKEY"),
|
|
127
132
|
)
|
|
128
|
-
use_nsec3 =
|
|
133
|
+
use_nsec3 = BooleanColumn(
|
|
129
134
|
verbose_name=_("Use NSEC3"),
|
|
130
135
|
)
|
|
131
136
|
tags = TagColumn(
|
netbox_dns/tables/record.py
CHANGED
|
@@ -8,6 +8,8 @@ from netbox.tables import (
|
|
|
8
8
|
ChoiceFieldColumn,
|
|
9
9
|
TagColumn,
|
|
10
10
|
ActionsColumn,
|
|
11
|
+
BooleanColumn,
|
|
12
|
+
TemplateColumn,
|
|
11
13
|
)
|
|
12
14
|
from tenancy.tables import TenancyColumnsMixin
|
|
13
15
|
|
|
@@ -44,11 +46,11 @@ class RecordBaseTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
44
46
|
verbose_name=_("FQDN"),
|
|
45
47
|
linkify=True,
|
|
46
48
|
)
|
|
47
|
-
value =
|
|
49
|
+
value = TemplateColumn(
|
|
48
50
|
verbose_name=_("Value"),
|
|
49
51
|
template_code="{{ value|truncatechars:64 }}",
|
|
50
52
|
)
|
|
51
|
-
unicode_value =
|
|
53
|
+
unicode_value = TemplateColumn(
|
|
52
54
|
verbose_name=_("Unicode Value"),
|
|
53
55
|
template_code="{{ value|truncatechars:64 }}",
|
|
54
56
|
accessor="value",
|
|
@@ -56,7 +58,7 @@ class RecordBaseTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
56
58
|
ttl = tables.Column(
|
|
57
59
|
verbose_name=_("TTL"),
|
|
58
60
|
)
|
|
59
|
-
active =
|
|
61
|
+
active = BooleanColumn(
|
|
60
62
|
verbose_name=_("Active"),
|
|
61
63
|
)
|
|
62
64
|
|
|
@@ -89,7 +91,7 @@ class RecordTable(RecordBaseTable):
|
|
|
89
91
|
status = ChoiceFieldColumn(
|
|
90
92
|
verbose_name=_("Status"),
|
|
91
93
|
)
|
|
92
|
-
disable_ptr =
|
|
94
|
+
disable_ptr = BooleanColumn(
|
|
93
95
|
verbose_name=_("Disable PTR"),
|
|
94
96
|
)
|
|
95
97
|
tags = TagColumn(
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import django_tables2 as tables
|
|
2
2
|
from django.utils.translation import gettext_lazy as _
|
|
3
3
|
|
|
4
|
-
from netbox.tables import
|
|
4
|
+
from netbox.tables import (
|
|
5
|
+
ActionsColumn,
|
|
6
|
+
BooleanColumn,
|
|
7
|
+
NetBoxTable,
|
|
8
|
+
TagColumn,
|
|
9
|
+
TemplateColumn,
|
|
10
|
+
)
|
|
5
11
|
from tenancy.tables import TenancyColumnsMixin
|
|
6
12
|
|
|
7
13
|
from netbox_dns.models import RecordTemplate
|
|
@@ -42,11 +48,11 @@ class RecordTemplateTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
42
48
|
type = tables.Column(
|
|
43
49
|
verbose_name=_("Type"),
|
|
44
50
|
)
|
|
45
|
-
value =
|
|
51
|
+
value = TemplateColumn(
|
|
46
52
|
verbose_name=_("Value"),
|
|
47
53
|
template_code="{{ value|truncatechars:64 }}",
|
|
48
54
|
)
|
|
49
|
-
unicode_value =
|
|
55
|
+
unicode_value = TemplateColumn(
|
|
50
56
|
verbose_name=_("Unicode Value"),
|
|
51
57
|
template_code="{{ value|truncatechars:64 }}",
|
|
52
58
|
accessor="value",
|
|
@@ -54,7 +60,7 @@ class RecordTemplateTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
54
60
|
ttl = tables.Column(
|
|
55
61
|
verbose_name=_("TTL"),
|
|
56
62
|
)
|
|
57
|
-
disable_ptr =
|
|
63
|
+
disable_ptr = BooleanColumn(
|
|
58
64
|
verbose_name=_("Disable PTR"),
|
|
59
65
|
)
|
|
60
66
|
tags = TagColumn(
|
netbox_dns/tables/view.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import django_tables2 as tables
|
|
2
2
|
from django.utils.translation import gettext_lazy as _
|
|
3
3
|
|
|
4
|
-
from netbox.tables import NetBoxTable, TagColumn
|
|
4
|
+
from netbox.tables import ActionsColumn, BooleanColumn, NetBoxTable, TagColumn
|
|
5
5
|
from tenancy.tables import TenancyColumnsMixin
|
|
6
6
|
|
|
7
7
|
from netbox_dns.models import View
|
|
@@ -31,7 +31,7 @@ class ViewTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
31
31
|
verbose_name=_("Name"),
|
|
32
32
|
linkify=True,
|
|
33
33
|
)
|
|
34
|
-
default_view =
|
|
34
|
+
default_view = BooleanColumn(
|
|
35
35
|
verbose_name=_("Default View"),
|
|
36
36
|
)
|
|
37
37
|
tags = TagColumn(url_name="plugins:netbox_dns:view_list")
|
netbox_dns/tables/zone.py
CHANGED
|
@@ -6,6 +6,7 @@ from netbox.tables import (
|
|
|
6
6
|
NetBoxTable,
|
|
7
7
|
TagColumn,
|
|
8
8
|
ActionsColumn,
|
|
9
|
+
columns,
|
|
9
10
|
)
|
|
10
11
|
from tenancy.tables import TenancyColumnsMixin
|
|
11
12
|
|
|
@@ -26,11 +27,11 @@ class ZoneTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
26
27
|
"description",
|
|
27
28
|
"soa_rname",
|
|
28
29
|
"soa_serial",
|
|
29
|
-
"inline_signing",
|
|
30
30
|
"rfc2317_parent_managed",
|
|
31
31
|
"registry_domain_id",
|
|
32
32
|
"expiration_date",
|
|
33
33
|
"domain_status",
|
|
34
|
+
"comments",
|
|
34
35
|
)
|
|
35
36
|
|
|
36
37
|
default_columns = (
|
|
@@ -95,6 +96,7 @@ class ZoneTable(TenancyColumnsMixin, NetBoxTable):
|
|
|
95
96
|
verbose_name=_("Billing Contact"),
|
|
96
97
|
linkify=True,
|
|
97
98
|
)
|
|
99
|
+
comments = columns.MarkdownColumn()
|
|
98
100
|
|
|
99
101
|
def render_name(self, value, record):
|
|
100
102
|
return record.display_name
|
netbox_dns/template_content.py
CHANGED
|
@@ -48,8 +48,18 @@ class RelatedDNSRecords(PluginTemplateExtension):
|
|
|
48
48
|
return self.render(
|
|
49
49
|
"netbox_dns/record/related.html",
|
|
50
50
|
extra_context={
|
|
51
|
-
"
|
|
52
|
-
|
|
51
|
+
"address_card_title": (
|
|
52
|
+
_("Synchronized Address Records")
|
|
53
|
+
if len(address_records) > 1
|
|
54
|
+
else _("Synchronized Address Record")
|
|
55
|
+
),
|
|
56
|
+
"address_record_table": address_record_table,
|
|
57
|
+
"pointer_card_title": (
|
|
58
|
+
_("Synchronized Pointer Records")
|
|
59
|
+
if len(pointer_records) > 1
|
|
60
|
+
else _("Synchronized Pointer Record")
|
|
61
|
+
),
|
|
62
|
+
"pointer_record_table": pointer_record_table,
|
|
53
63
|
},
|
|
54
64
|
)
|
|
55
65
|
|
|
@@ -99,11 +109,11 @@ class IPRelatedDNSRecords(PluginTemplateExtension):
|
|
|
99
109
|
address_records = Record.objects.filter(
|
|
100
110
|
type__in=(RecordTypeChoices.A, RecordTypeChoices.AAAA),
|
|
101
111
|
ip_address=ip_address.address.ip,
|
|
102
|
-
)
|
|
112
|
+
).exclude(ipam_ip_address=ip_address)
|
|
103
113
|
pointer_records = Record.objects.filter(
|
|
104
114
|
type=RecordTypeChoices.PTR,
|
|
105
115
|
ip_address=ip_address.address.ip,
|
|
106
|
-
)
|
|
116
|
+
).exclude(address_records__ipam_ip_address__in=[ip_address])
|
|
107
117
|
|
|
108
118
|
if address_records:
|
|
109
119
|
address_record_table = RelatedRecordTable(
|
|
@@ -124,8 +134,18 @@ class IPRelatedDNSRecords(PluginTemplateExtension):
|
|
|
124
134
|
return self.render(
|
|
125
135
|
"netbox_dns/record/related.html",
|
|
126
136
|
extra_context={
|
|
127
|
-
"
|
|
128
|
-
|
|
137
|
+
"address_card_title": (
|
|
138
|
+
_("Related Address Records")
|
|
139
|
+
if len(address_records) > 1
|
|
140
|
+
else _("Related Address Record")
|
|
141
|
+
),
|
|
142
|
+
"address_record_table": address_record_table,
|
|
143
|
+
"pointer_card_title": (
|
|
144
|
+
_("Related Pointer Records")
|
|
145
|
+
if len(pointer_records) > 1
|
|
146
|
+
else _("Related Pointer Record")
|
|
147
|
+
),
|
|
148
|
+
"pointer_record_table": pointer_record_table,
|
|
129
149
|
},
|
|
130
150
|
)
|
|
131
151
|
|
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
<th scope="row">{% trans "Status" %}</th>
|
|
18
18
|
<td>{% badge object.get_status_display bg_color=object.get_status_color %}</td>
|
|
19
19
|
</tr>
|
|
20
|
+
<tr>
|
|
21
|
+
<th scope="row">{% trans "Use Inline Signing" %}</th>
|
|
22
|
+
<td>{% checkmark object.inline_signing %}</td>
|
|
23
|
+
</tr>
|
|
20
24
|
<tr>
|
|
21
25
|
<th scope="row">{% trans "Key Templates" %}</th>
|
|
22
26
|
<td>
|
|
@@ -134,7 +138,11 @@
|
|
|
134
138
|
</tr>
|
|
135
139
|
<tr>
|
|
136
140
|
<th scope="row">{% trans "NSEC3 Opt Out" %}</th>
|
|
137
|
-
|
|
141
|
+
{% if object.nsec3_opt_out is None %}
|
|
142
|
+
<td>{{ ''|placeholder }}</td>
|
|
143
|
+
{% else %}
|
|
144
|
+
<td>{% checkmark object.nsec3_opt_out %}</td>
|
|
145
|
+
{% endif %}
|
|
138
146
|
</tr>
|
|
139
147
|
<tr>
|
|
140
148
|
<th scope="row">{% trans "NSEC3 Salt Size" %}</th>
|
|
@@ -1,29 +1,20 @@
|
|
|
1
1
|
{% load render_table from django_tables2 %}
|
|
2
2
|
{% load perms %}
|
|
3
|
-
{% load i18n %}
|
|
4
3
|
|
|
5
4
|
{% if perms.netbox_dns.view_record %}
|
|
6
|
-
{% if
|
|
5
|
+
{% if address_record_table %}
|
|
7
6
|
<div class="card">
|
|
8
|
-
{
|
|
9
|
-
<h2 class="card-header">{% trans "Related DNS Address Record" %}</h2>
|
|
10
|
-
{% else %}
|
|
11
|
-
<h2 class="card-header">{% trans "Related DNS Address Records" %}</h2>
|
|
12
|
-
{% endif %}
|
|
7
|
+
<h2 class="card-header">{{ address_card_title }}</h2>
|
|
13
8
|
<div class="table-responsive">
|
|
14
|
-
{% render_table
|
|
9
|
+
{% render_table address_record_table 'inc/table.html' %}
|
|
15
10
|
</div>
|
|
16
11
|
</div>
|
|
17
12
|
{% endif %}
|
|
18
|
-
{% if
|
|
13
|
+
{% if pointer_record_table %}
|
|
19
14
|
<div class="card">
|
|
20
|
-
{
|
|
21
|
-
<h2 class="card-header">{% trans "Related DNS Pointer Record" %}</h2>
|
|
22
|
-
{% else %}
|
|
23
|
-
<h2 class="card-header">{% trans "Related DNS Pointer Records" %}</h2>
|
|
24
|
-
{% endif %}
|
|
15
|
+
<h2 class="card-header">{{ pointer_card_title }}</h2>
|
|
25
16
|
<div class="table-responsive">
|
|
26
|
-
{% render_table
|
|
17
|
+
{% render_table pointer_record_table 'inc/table.html' %}
|
|
27
18
|
</div>
|
|
28
19
|
</div>
|
|
29
20
|
{% endif %}
|
|
@@ -104,10 +104,6 @@
|
|
|
104
104
|
<th scope="row">{% trans "Policy" %}</th>
|
|
105
105
|
<td>{{ object.dnssec_policy|linkify }}</td>
|
|
106
106
|
</tr>
|
|
107
|
-
<tr>
|
|
108
|
-
<th scope="row">{% trans "Use Inline Signing" %}</th>
|
|
109
|
-
<td>{% checkmark object.inline_signing %}</td>
|
|
110
|
-
</tr>
|
|
111
107
|
<tr>
|
|
112
108
|
<th scope="row">{% trans "Parental Agents" %}</th>
|
|
113
109
|
<td>
|
|
@@ -122,6 +118,7 @@
|
|
|
122
118
|
</div>
|
|
123
119
|
{% endif %}
|
|
124
120
|
|
|
121
|
+
{% include 'inc/panels/comments.html' %}
|
|
125
122
|
{% include 'inc/panels/tags.html' %}
|
|
126
123
|
{% include 'inc/panels/custom_fields.html' %}
|
|
127
124
|
</div>
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
netbox_dns/__init__.py,sha256=
|
|
1
|
+
netbox_dns/__init__.py,sha256=FyJUZCg5fyQWrdkfpDH5PwjsSfv20QS0MBnbNWvsIVI,4890
|
|
2
2
|
netbox_dns/apps.py,sha256=JCW5eS-AQBUubDJve1DjP-IRFKTFGQh1NLGWzJpC5MI,151
|
|
3
3
|
netbox_dns/navigation.py,sha256=ZF2-bKRfuxXnLArSCvozyRXRd7GME14sVJZdmDEMhBk,7741
|
|
4
|
-
netbox_dns/template_content.py,sha256=
|
|
4
|
+
netbox_dns/template_content.py,sha256=BCBx7dFZOu429CSyG5jFPnDSF8nJNLzwAsCGpAGF0zI,5787
|
|
5
5
|
netbox_dns/urls.py,sha256=wrse8l5scD-jz_O7WY0YXRlYPzpkL-0-kyAd-wCPtbQ,2596
|
|
6
6
|
netbox_dns/api/field_serializers.py,sha256=nVZ6d69DWagONDwbYCP2j3cmL-x9lryitF1wThEJxyI,725
|
|
7
|
-
netbox_dns/api/nested_serializers.py,sha256=
|
|
7
|
+
netbox_dns/api/nested_serializers.py,sha256=jPFLmZDZawasKBM3OxYecjkV5-ZV67_qmSbStyDah4k,3725
|
|
8
8
|
netbox_dns/api/serializers.py,sha256=OHrpfJkBn6D1y6b3nIxBEFyE50U5p-Aqv4lBojMEFgk,474
|
|
9
9
|
netbox_dns/api/urls.py,sha256=-kQaei47yZeGbDpQ9RaFaFlFb682ThuPA5h321_2cgM,1000
|
|
10
10
|
netbox_dns/api/views.py,sha256=w71SRyZue5zPD1C64TIr496nYFA_ARjHTlpSVFTZ76o,4522
|
|
11
11
|
netbox_dns/api/serializers_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
12
|
netbox_dns/api/serializers_/dnssec_key_template.py,sha256=gZNv8hdpTc_X0rhfuKfUcsLzV_l6CV_tTzElw6tyEGw,1654
|
|
13
|
-
netbox_dns/api/serializers_/dnssec_policy.py,sha256=
|
|
13
|
+
netbox_dns/api/serializers_/dnssec_policy.py,sha256=ajeNPp6ziC_M2HLtZxCUUOk-aOQ4Mj1Knq6W1Z8EL3M,4382
|
|
14
14
|
netbox_dns/api/serializers_/nameserver.py,sha256=0ItKFCmDVqMbw9i5LandYMZTpJAGClu6lejaWvpLbBY,1288
|
|
15
15
|
netbox_dns/api/serializers_/prefix.py,sha256=kZ1DjDly6VFZamXSxGa57YC6MfZZcI5S7jmGBkVB2_I,551
|
|
16
16
|
netbox_dns/api/serializers_/record.py,sha256=wHs86KwLCgeC_7ORw2b0gvlpAustwfBSfbPva1yPb-k,2570
|
|
@@ -18,7 +18,7 @@ netbox_dns/api/serializers_/record_template.py,sha256=imRRPkCXQMCpXUUk58kB2KwXC6
|
|
|
18
18
|
netbox_dns/api/serializers_/registrar.py,sha256=ul_6SJVqxvTE2ysXBy52U59oTzwmaD781URH1l1OW9o,927
|
|
19
19
|
netbox_dns/api/serializers_/registration_contact.py,sha256=P_aoG_1rriHn4KkwTx5Dhw37Rn3VY2whg0vAIm55cjk,1108
|
|
20
20
|
netbox_dns/api/serializers_/view.py,sha256=ipuL4FVTl5MYt5_ThayBAOBMGu61ZUGnCb8Co1tNQGU,1894
|
|
21
|
-
netbox_dns/api/serializers_/zone.py,sha256=
|
|
21
|
+
netbox_dns/api/serializers_/zone.py,sha256=_Upe1-xTCXQ-lsiH1bmIjm2zhsGiYYHWBUuzXgjWEVw,6572
|
|
22
22
|
netbox_dns/api/serializers_/zone_template.py,sha256=sThICHWbQpXRKCFq8I--3PSkad-aPzh7TBdoDm31jzg,4438
|
|
23
23
|
netbox_dns/choices/__init__.py,sha256=K3JfawICeoUny8O_Dqexr7DOxwyg3QqijZ4DO6j5yP8,106
|
|
24
24
|
netbox_dns/choices/dnssec_key_template.py,sha256=Xl3y_ScKJmnsqMH1sv6ezLcZI1rruHDGJP5e2IRSC4s,1511
|
|
@@ -27,7 +27,7 @@ netbox_dns/choices/record.py,sha256=Ynw1aDASQEovzIPJbRFRM6F-M9u39iHMe0aj9DZsrfk,
|
|
|
27
27
|
netbox_dns/choices/utilities.py,sha256=osvDMxOZnvxx9Jc7zKjkMGNFGxtnhM49q71Q-h61lLA,123
|
|
28
28
|
netbox_dns/choices/zone.py,sha256=KvyNL_TR_2FXCoH6usrXTRJYRzZ9W1PiDvunutAUYhY,4294
|
|
29
29
|
netbox_dns/fields/__init__.py,sha256=yUVrNQ7BvoeVRGoiRFmrZxXsp1LIwHLRLl0_5mBIyzk,143
|
|
30
|
-
netbox_dns/fields/address.py,sha256=
|
|
30
|
+
netbox_dns/fields/address.py,sha256=t0BLnGKYyqraiHixEtt6FvpqUixaHoIFTN9YgNufWng,1750
|
|
31
31
|
netbox_dns/fields/choice_array.py,sha256=qECgwzJ9PVGIbpqC_JVzuSUsV7C3FG03ibv1EUrvZr4,850
|
|
32
32
|
netbox_dns/fields/ipam.py,sha256=wla-kBm77BpD0LNQhgRZS1RYbVois7WDqPpyQkUT02k,481
|
|
33
33
|
netbox_dns/fields/network.py,sha256=a5nTzjscRufxgMjVsf5juszSYuTujU50pQ9P7q4qMVs,3740
|
|
@@ -35,41 +35,41 @@ netbox_dns/fields/rfc2317.py,sha256=y72PZKlXZ8_6P4eeWZ8IF3gqOMjPxW48gk3AB81XboE,
|
|
|
35
35
|
netbox_dns/fields/timeperiod.py,sha256=InK3FVc8gHNQjx101a7HsGfrHxvoG1y6drYwuRjRSIE,941
|
|
36
36
|
netbox_dns/filtersets/__init__.py,sha256=bKppz_w3X2xNNHOcxZZiIO7zSkDaNTrZJ__k1U7rKik,275
|
|
37
37
|
netbox_dns/filtersets/dnssec_key_template.py,sha256=dFaNGYdGXghe_uDMedOPxrMGxhDu4gHXwSQ6VLSY7gk,1625
|
|
38
|
-
netbox_dns/filtersets/dnssec_policy.py,sha256=
|
|
38
|
+
netbox_dns/filtersets/dnssec_policy.py,sha256=Z0SOfhKYA0GCgbfTqoDnAqcnzt9AmMZLGGkYD3VO7dc,3101
|
|
39
39
|
netbox_dns/filtersets/nameserver.py,sha256=4hkFsohhvBptFwY9_LJJN8_8KkMhCPsFujzIlDhlnqw,1251
|
|
40
40
|
netbox_dns/filtersets/record.py,sha256=7asGcd2zePhnIDAvuVE-aKAo_NNM0Pm06epXzEql4y4,3916
|
|
41
41
|
netbox_dns/filtersets/record_template.py,sha256=Pc4P479MqfgdUMvBK39ic2nsV_gg4GT_tbdVcCL9wSI,1605
|
|
42
42
|
netbox_dns/filtersets/registrar.py,sha256=6QrsrWXu19bMa99DzwwXqfNqxpvTG0JwGEpybhOSYps,978
|
|
43
43
|
netbox_dns/filtersets/registration_contact.py,sha256=42j7NkwkbSEfomCDekkIE9ZWNug_qfvmTO_D1e-fFIw,1140
|
|
44
44
|
netbox_dns/filtersets/view.py,sha256=g8Qz363F9sieNtf4zA2L87mR86HFtkpvHTCkql6TxGk,1107
|
|
45
|
-
netbox_dns/filtersets/zone.py,sha256=
|
|
45
|
+
netbox_dns/filtersets/zone.py,sha256=pg513mVNwlZ0EPEY3v6b8g7-xLKwyZP35cU_FMyWr4E,8289
|
|
46
46
|
netbox_dns/filtersets/zone_template.py,sha256=W-s-Gm1OhnHRdQaU0sBie7ZAup4CfBMX3xeZfKGgJXc,5358
|
|
47
47
|
netbox_dns/forms/__init__.py,sha256=tObkTOHw_6kVtEcwdyshN0Ql-8VGhwsgQw7owL_s2lI,273
|
|
48
48
|
netbox_dns/forms/dnssec_key_template.py,sha256=zWOTdsbfCcjpizOZn6Y8HRewJarFwtlXcW4H0ZyqJVI,6176
|
|
49
|
-
netbox_dns/forms/dnssec_policy.py,sha256=
|
|
49
|
+
netbox_dns/forms/dnssec_policy.py,sha256=aARkERqxU7DugvgvO0cwxpynvGz_YGtlDX6R9My1rHE,18523
|
|
50
50
|
netbox_dns/forms/nameserver.py,sha256=_iQJXbdFrrtMnRT8yZHnOp1Nj1iwxjHIAH_hrvCkrKU,3848
|
|
51
51
|
netbox_dns/forms/record.py,sha256=wRl3uRY13VK8cF79u69-DDJmHJnZjwuLR60PsUGJ3p0,8493
|
|
52
52
|
netbox_dns/forms/record_template.py,sha256=5yuY2ppV2diEOdm_IN3QSLLEdWkOkWZOYRtOh0qPY7A,6796
|
|
53
53
|
netbox_dns/forms/registrar.py,sha256=oLMcXJOpt0F02a2Aga6A45rja7TvI18nTCZb_Dx_8t0,4038
|
|
54
54
|
netbox_dns/forms/registration_contact.py,sha256=GtUmHzPmAFNRt81rTgJbmb5TMoEJ-mpmjltkuyppJwc,6157
|
|
55
55
|
netbox_dns/forms/view.py,sha256=KZ2enzbqAEElt3b5C02kMJwnIDEjdQf_BsgMuMqKP50,10836
|
|
56
|
-
netbox_dns/forms/zone.py,sha256=
|
|
56
|
+
netbox_dns/forms/zone.py,sha256=mS1kCz57I0SXMLFqR_fPYK4TSKbiknf8Aplo2TnchsU,30541
|
|
57
57
|
netbox_dns/forms/zone_template.py,sha256=SN4E-DkD1RgUcZhvUNzRFg4-FHbkvdFs1l28eShAx4o,12203
|
|
58
58
|
netbox_dns/graphql/__init__.py,sha256=0xg_5d1PPFTadBOZo752t5sfZeLFrqs2jM51Rbf8ti4,652
|
|
59
59
|
netbox_dns/graphql/enums.py,sha256=vC-v24AuNbaGoekLTDu1PBVbnR1aYeX6LmvrZkfd2F4,1453
|
|
60
60
|
netbox_dns/graphql/filter_lookups.py,sha256=P6wW2JrtkzUiIx6mJz_DvwYg5Sov68IKAx0zVQfuvYY,355
|
|
61
61
|
netbox_dns/graphql/schema.py,sha256=KlbJmlfQEqZhvb6-cYmq94mrMFcQoCh3MldaUD5eVV4,2904
|
|
62
|
-
netbox_dns/graphql/types.py,sha256=
|
|
62
|
+
netbox_dns/graphql/types.py,sha256=drw0dQO10QAle8__YBhtK-uZwsGZurfcpXBb3Et35uA,10279
|
|
63
63
|
netbox_dns/graphql/filters/__init__.py,sha256=bKppz_w3X2xNNHOcxZZiIO7zSkDaNTrZJ__k1U7rKik,275
|
|
64
64
|
netbox_dns/graphql/filters/dnssec_key_template.py,sha256=hK7KgikQOC-BMp88PR1moHQboWd-DS59GwQ0TJADdLM,2076
|
|
65
|
-
netbox_dns/graphql/filters/dnssec_policy.py,sha256=
|
|
65
|
+
netbox_dns/graphql/filters/dnssec_policy.py,sha256=MAnnCU48UhtETcXJjwLdiikczpb5fR3k6wrfZCQKJTI,4737
|
|
66
66
|
netbox_dns/graphql/filters/nameserver.py,sha256=sDVIrRXBeyscGfQSost4SqrBnBQ_ZIK13GjaXkKAcCw,1050
|
|
67
67
|
netbox_dns/graphql/filters/record.py,sha256=v3-8zyVrA0Hl4AC9d4SkYAQLHpQ1StIP-ws8xM_5Qb4,3313
|
|
68
68
|
netbox_dns/graphql/filters/record_template.py,sha256=sCAm-ct3aXjz9XNtAfUhPXaXRRHIaiXq_oQ4oFzxFY8,1819
|
|
69
69
|
netbox_dns/graphql/filters/registrar.py,sha256=4tv1nlZU41-sOsNXf3-JyZESpAdktsDj7JTr1hv0aG4,1158
|
|
70
70
|
netbox_dns/graphql/filters/registration_contact.py,sha256=feCw4zZd2UQ9895Gg0PJ4R-oGm90ss5XB6ve3B9JlVg,1402
|
|
71
71
|
netbox_dns/graphql/filters/view.py,sha256=ozXGNJ0ELri2FAnQXPHDs3--Hznzx4ZF5mH264nr-DI,934
|
|
72
|
-
netbox_dns/graphql/filters/zone.py,sha256=
|
|
72
|
+
netbox_dns/graphql/filters/zone.py,sha256=T-f-2P9v9PqJSSUEs5uz1r9l9ULvVBqwiLNkHecE0vk,5247
|
|
73
73
|
netbox_dns/graphql/filters/zone_template.py,sha256=6ZxBN_VPXvBDGXXwcYlkX6wJXx_IlMAZIEDX5-ARO_4,3100
|
|
74
74
|
netbox_dns/locale/de/LC_MESSAGES/django.mo,sha256=Q6edOBPHxBTbVYE-7TM9G_o83ED_9TpGgefOazR6TP0,29831
|
|
75
75
|
netbox_dns/locale/en/LC_MESSAGES/django.mo,sha256=GDnSZkfHs3yjtTsll7dksEEej4B50F8pc9RGytZNubM,393
|
|
@@ -109,8 +109,11 @@ netbox_dns/migrations/0023_disable_ptr_false.py,sha256=Wo-d60QmPCcvdVIVShF8L7z-L
|
|
|
109
109
|
netbox_dns/migrations/0024_tenancy.py,sha256=3kc5l5_AyfhOI6g6mbCfReUAbSgb2DAv0MDMZqJ-3YQ,1745
|
|
110
110
|
netbox_dns/migrations/0024_zonetemplate_parental_agents.py,sha256=e1mQ1NwP8eqqfgc74PFSRmnENL5VCLPIFzInePsZd4w,635
|
|
111
111
|
netbox_dns/migrations/0025_ipam_coupling_cf.py,sha256=7uHujclWrsYw5QMLWft0Po78Ow5Q8MjPuU7moKyQ2qs,620
|
|
112
|
+
netbox_dns/migrations/0025_remove_zone_inline_signing_and_more.py,sha256=jCubcnlrdTbffK-DpRvmJ5CKcg5drGJg13sUG7OTtdU,522
|
|
113
|
+
netbox_dns/migrations/0026_alter_dnssecpolicy_nsec3_opt_out.py,sha256=bDjqslmVEBOspXmGbhakf8juZdHT9fU_ZY2kSUs7mUI,430
|
|
112
114
|
netbox_dns/migrations/0026_domain_registration.py,sha256=qUJ1oUGHIGGNWD7QRLnxElbM5eNp7dYNNn_OYIw8Xvo,5796
|
|
113
115
|
netbox_dns/migrations/0027_alter_registrar_iana_id.py,sha256=QUtRIrqqfkraFmzzeJFZWAEv4PfrOouoHtrV6FRn8Kc,404
|
|
116
|
+
netbox_dns/migrations/0027_zone_comments.py,sha256=brM80qZzY2bsyArrF5Nj6QLStSi3z5r7FhxErVwL5Po,398
|
|
114
117
|
netbox_dns/migrations/0028_rfc2317_fields.py,sha256=D8r43xxBjYXiL6ycmX8RY5_WG7tRYEDjutOeYM1H56I,1364
|
|
115
118
|
netbox_dns/migrations/0029_record_fqdn.py,sha256=UAAU38ekKQyiYDOJlcrz6Qbk4bqZfSHZyAHUZFFQrOw,808
|
|
116
119
|
netbox_dns/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -118,42 +121,42 @@ netbox_dns/mixins/__init__.py,sha256=LxTEfpod_RHCyMtnzDljv0_dwqp2z3Q6tqbXW8LTGD8
|
|
|
118
121
|
netbox_dns/mixins/object_modification.py,sha256=AR64fU5f7g-scNAj9b54eSoS9dpjyOpqrxXVXPcOhY8,1807
|
|
119
122
|
netbox_dns/models/__init__.py,sha256=CuwFENIVUv0FNMDlY18Am-mvN5kBGkPOGavCP0cle7c,273
|
|
120
123
|
netbox_dns/models/dnssec_key_template.py,sha256=AcyD9PLtg1lLZAFlEJ8TugSlglOSIBVihxgmi39zRm4,2738
|
|
121
|
-
netbox_dns/models/dnssec_policy.py,sha256=
|
|
124
|
+
netbox_dns/models/dnssec_policy.py,sha256=be-ceOgUS48ACsZcZW51VivkWmuqXAszlAJEKt11gf8,5398
|
|
122
125
|
netbox_dns/models/nameserver.py,sha256=oVfyc_iWRzxVE2tIhfRb1Vuj2gZmlfFFzEtXj9ZEr6s,3848
|
|
123
126
|
netbox_dns/models/record.py,sha256=7f4h3ngUvPpQ4IQroTJAWO8wD2fqy1u8j-LuA23PWtM,32761
|
|
124
127
|
netbox_dns/models/record_template.py,sha256=Qr43_YZm1z3Od1cBdDY9wpNlV-UCzvpn2c6_dDzFzN8,5145
|
|
125
128
|
netbox_dns/models/registrar.py,sha256=-ozazecvd-oryEoDlOUvTWhEQKKQp3my6YVTEzWlUuI,1747
|
|
126
129
|
netbox_dns/models/registration_contact.py,sha256=9ehnTjg8KUrUYJKRRu2SaJX-NE5dO4wy90FRPlT2ys4,3620
|
|
127
130
|
netbox_dns/models/view.py,sha256=pwo7i8gtukIRgAC1A4rm58jcEpIbsSW_IUq6vSv-mRo,4618
|
|
128
|
-
netbox_dns/models/zone.py,sha256=
|
|
131
|
+
netbox_dns/models/zone.py,sha256=Oa2myD-YFUTkdzNS0hve9zhL9J1LIJNX7vH3hY3VfW8,36955
|
|
129
132
|
netbox_dns/models/zone_template.py,sha256=jm7XsBADOWhGYOH-_n9a97CTE6w_BCP3gMEUIO-tfTs,5391
|
|
130
133
|
netbox_dns/signals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
134
|
netbox_dns/signals/dnssec.py,sha256=o4MOEg6ftxoDWFAhDtajkXzb7Nb6KuUHjtx1zNu7C1w,1040
|
|
132
135
|
netbox_dns/signals/ipam_dnssync.py,sha256=1zhlf4cMcJLlFosX7YzyqVYdFFHV4MFwTz5KCdL8xQc,7730
|
|
133
136
|
netbox_dns/tables/__init__.py,sha256=tObkTOHw_6kVtEcwdyshN0Ql-8VGhwsgQw7owL_s2lI,273
|
|
134
137
|
netbox_dns/tables/dnssec_key_template.py,sha256=5Y4S3Q_RtDdUHI4KxY37Trm7uKQCFUcqkC5mrb8Wi_A,1101
|
|
135
|
-
netbox_dns/tables/dnssec_policy.py,sha256=
|
|
138
|
+
netbox_dns/tables/dnssec_policy.py,sha256=WIzMChFxOsNBydvo2voVYobygpByp7Uw__nBqEw4onU,3398
|
|
136
139
|
netbox_dns/tables/ipam_dnssync.py,sha256=7IK95XlA2ter6gsHqXjXPd6WubpOxrV-O5-UT6R1CKU,330
|
|
137
140
|
netbox_dns/tables/nameserver.py,sha256=NFFHwwW174x_XskHF9oBllnI22PGV0J78mklrJF_psw,741
|
|
138
|
-
netbox_dns/tables/record.py,sha256=
|
|
139
|
-
netbox_dns/tables/record_template.py,sha256=
|
|
141
|
+
netbox_dns/tables/record.py,sha256=yaRcdBic9dGmeZGFmGsGWV_ZcmpVKBgxd5CYgI20VWY,4788
|
|
142
|
+
netbox_dns/tables/record_template.py,sha256=Bsjz4yZEQ3Eh-akMMEgPRB1z0ZZ4ysSotb-CwdOFwUI,2012
|
|
140
143
|
netbox_dns/tables/registrar.py,sha256=yI4n0jq7igYwa-zs6YT6YVV2FxkgpfkSAsA_iPzel7A,776
|
|
141
144
|
netbox_dns/tables/registration_contact.py,sha256=PeXp5l2WC5qIwctNdk_WP9LRDq_7bnoUlSS3OS6-SDs,980
|
|
142
|
-
netbox_dns/tables/view.py,sha256=
|
|
143
|
-
netbox_dns/tables/zone.py,sha256=
|
|
145
|
+
netbox_dns/tables/view.py,sha256=Z3323-796hbpQMCH7CbmcXp3QxaGHEh6_MwJ2UqDpiI,1326
|
|
146
|
+
netbox_dns/tables/zone.py,sha256=Dv8NvUrfepXhba1kMxLrqRUQEy0v4jKq5_5dCAR0iuw,2481
|
|
144
147
|
netbox_dns/tables/zone_template.py,sha256=90geASGP6jSqKnvx2t-DaSxNZpp7j67lH1t0UzsKZ1Q,1755
|
|
145
148
|
netbox_dns/templates/netbox_dns/dnsseckeytemplate.html,sha256=dSEyHgUp0k_5JSdR4s4m_7Rom67TqvRIQN0zbQKYfjE,2839
|
|
146
|
-
netbox_dns/templates/netbox_dns/dnssecpolicy.html,sha256=
|
|
149
|
+
netbox_dns/templates/netbox_dns/dnssecpolicy.html,sha256=e1nfrk-VvSY1AC9Vi9LO5Eukck6l10pdtDwW0zKbRjE,8105
|
|
147
150
|
netbox_dns/templates/netbox_dns/nameserver.html,sha256=MawPiuAmjFrbv0zRi-7xkm8vr-dT1tlEno8EcoQ9peU,1714
|
|
148
151
|
netbox_dns/templates/netbox_dns/record.html,sha256=aFvbIEhhfp0AH5tRDNSgc2nQIymGgnVilk5Q8lCpKKw,7055
|
|
149
152
|
netbox_dns/templates/netbox_dns/recordtemplate.html,sha256=a29PAUl-KI_I1lxWpVdPp2loJtzgis9DG9erOWrOZM0,3708
|
|
150
153
|
netbox_dns/templates/netbox_dns/registrar.html,sha256=4kJuj3biiDxQrIMQEQUEmF4iGRE4psr6Fh0CBP1evz8,2308
|
|
151
154
|
netbox_dns/templates/netbox_dns/registrationcontact.html,sha256=sljVp_MrPSJRc2vJCPFXq9MiWOw4wjbr1kI_YStBntw,3094
|
|
152
155
|
netbox_dns/templates/netbox_dns/view.html,sha256=1MuzOYNQezRrryNjlklgxErjGTFoVnwqcxf4qceuglw,3320
|
|
153
|
-
netbox_dns/templates/netbox_dns/zone.html,sha256=
|
|
156
|
+
netbox_dns/templates/netbox_dns/zone.html,sha256=zCw33RbcsGO5FhJ_en7olBXWJBArsxUp9Uv5jNS0vTQ,8111
|
|
154
157
|
netbox_dns/templates/netbox_dns/zonetemplate.html,sha256=juPdeCtpZGcCqM-nJT4IVTmwgOtTOEvDek2iiAJ6aQw,4801
|
|
155
158
|
netbox_dns/templates/netbox_dns/record/managed.html,sha256=uwpxQTxyfAXkWqThLT-T2ZssKNUhXTDDMnLWJSVuDNU,119
|
|
156
|
-
netbox_dns/templates/netbox_dns/record/related.html,sha256=
|
|
159
|
+
netbox_dns/templates/netbox_dns/record/related.html,sha256=RUQpZN-pox7oVZ3Excxi0ZbqlO2UD4FN_RmB1nNJf-E,699
|
|
157
160
|
netbox_dns/templates/netbox_dns/view/button.html,sha256=EMOB5x78XpyfN1qi-pY1CKKKLjyHo9rFUa4Uhq6rFMc,322
|
|
158
161
|
netbox_dns/templates/netbox_dns/view/prefix.html,sha256=Eaur1fd0YHeGttp2vRucz-ix7itxNu6To3NXwliGZco,1560
|
|
159
162
|
netbox_dns/templates/netbox_dns/view/related.html,sha256=C5P6IuRmQ_S2hAC44ceFyNJn8JVqRxMwIXkS0dEL500,1239
|
|
@@ -188,8 +191,8 @@ netbox_dns/views/registration_contact.py,sha256=5bJWjNBisqCkBo6d2TJyyBJlc95WM7Vc
|
|
|
188
191
|
netbox_dns/views/view.py,sha256=xLXt7sKrda3FpNXsBSJk8L8P2XhZ1sVb5OOXovCsKEU,3089
|
|
189
192
|
netbox_dns/views/zone.py,sha256=do8kB6o911D7wCdUbU72SRTaaNhDUG5pCT8WXGhGnWc,7122
|
|
190
193
|
netbox_dns/views/zone_template.py,sha256=5P9DT3XBRL-TiM5zFhBTMlMusL4bP2jTu3GHxKz5ojc,2553
|
|
191
|
-
netbox_plugin_dns-1.4.
|
|
192
|
-
netbox_plugin_dns-1.4.
|
|
193
|
-
netbox_plugin_dns-1.4.
|
|
194
|
-
netbox_plugin_dns-1.4.
|
|
195
|
-
netbox_plugin_dns-1.4.
|
|
194
|
+
netbox_plugin_dns-1.4.3.dist-info/licenses/LICENSE,sha256=I3tDu11bZfhFm3EkV4zOD5TmWgLjnUNLEFwrdjniZYs,1112
|
|
195
|
+
netbox_plugin_dns-1.4.3.dist-info/METADATA,sha256=peOOcIruP6fm-c6eURHRh44g2yGY5p8SYG8oDE50QW0,7825
|
|
196
|
+
netbox_plugin_dns-1.4.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
197
|
+
netbox_plugin_dns-1.4.3.dist-info/top_level.txt,sha256=sA1Rwl1mRKvMC6XHe2ylZ1GF-Q1NGd08XedK9Y4xZc4,11
|
|
198
|
+
netbox_plugin_dns-1.4.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|