netbox-plugin-dns 1.2.5__py3-none-any.whl → 1.2.7__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 +16 -8
- netbox_dns/api/field_serializers.py +25 -0
- netbox_dns/api/nested_serializers.py +19 -1
- netbox_dns/api/serializers.py +3 -0
- netbox_dns/api/serializers_/dnssec_key_template.py +59 -0
- netbox_dns/api/serializers_/dnssec_policy.py +113 -0
- netbox_dns/api/serializers_/record.py +2 -0
- netbox_dns/api/serializers_/record_template.py +2 -0
- netbox_dns/api/serializers_/zone.py +20 -1
- netbox_dns/api/serializers_/zone_template.py +13 -4
- netbox_dns/api/urls.py +4 -0
- netbox_dns/api/views.py +18 -0
- netbox_dns/choices/__init__.py +2 -0
- netbox_dns/choices/dnssec_key_template.py +63 -0
- netbox_dns/choices/dnssec_policy.py +40 -0
- netbox_dns/choices/record.py +2 -25
- netbox_dns/choices/utilities.py +26 -0
- netbox_dns/choices/zone.py +96 -1
- netbox_dns/fields/__init__.py +2 -0
- netbox_dns/fields/choice_array.py +33 -0
- netbox_dns/fields/timeperiod.py +33 -0
- netbox_dns/filtersets/__init__.py +3 -0
- netbox_dns/filtersets/dnssec_key_template.py +51 -0
- netbox_dns/filtersets/dnssec_policy.py +97 -0
- netbox_dns/filtersets/zone.py +30 -6
- netbox_dns/filtersets/zone_template.py +13 -2
- netbox_dns/forms/__init__.py +2 -0
- netbox_dns/forms/dnssec_key_template.py +189 -0
- netbox_dns/forms/dnssec_policy.py +593 -0
- netbox_dns/forms/nameserver.py +2 -0
- netbox_dns/forms/record.py +12 -6
- netbox_dns/forms/record_template.py +10 -3
- netbox_dns/forms/zone.py +142 -31
- netbox_dns/forms/zone_template.py +38 -0
- netbox_dns/graphql/__init__.py +7 -3
- netbox_dns/graphql/filters.py +16 -0
- netbox_dns/graphql/schema.py +20 -0
- netbox_dns/graphql/types.py +67 -3
- netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
- netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
- netbox_dns/migrations/0015_dnssec.py +168 -0
- netbox_dns/migrations/0016_dnssec_policy_status.py +18 -0
- netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +41 -0
- netbox_dns/migrations/0018_zone_domain_status_zone_expiration_date.py +23 -0
- netbox_dns/models/__init__.py +2 -0
- netbox_dns/models/dnssec_key_template.py +114 -0
- netbox_dns/models/dnssec_policy.py +203 -0
- netbox_dns/models/record.py +1 -1
- netbox_dns/models/zone.py +74 -19
- netbox_dns/models/zone_template.py +17 -7
- netbox_dns/navigation.py +49 -0
- netbox_dns/signals/dnssec.py +32 -0
- netbox_dns/tables/__init__.py +2 -0
- netbox_dns/tables/dnssec_key_template.py +48 -0
- netbox_dns/tables/dnssec_policy.py +131 -0
- netbox_dns/tables/zone.py +23 -2
- netbox_dns/tables/zone_template.py +4 -0
- netbox_dns/template_content.py +2 -1
- netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +70 -0
- netbox_dns/templates/netbox_dns/dnssecpolicy.html +155 -0
- netbox_dns/templates/netbox_dns/zone/registration.html +19 -0
- netbox_dns/templates/netbox_dns/zone.html +16 -0
- netbox_dns/templates/netbox_dns/zonetemplate/child.html +46 -0
- netbox_dns/templates/netbox_dns/zonetemplate.html +12 -0
- netbox_dns/urls.py +23 -0
- netbox_dns/utilities/conversions.py +13 -0
- netbox_dns/validators/__init__.py +1 -0
- netbox_dns/validators/dnssec.py +148 -0
- netbox_dns/views/__init__.py +2 -0
- netbox_dns/views/dnssec_key_template.py +87 -0
- netbox_dns/views/dnssec_policy.py +155 -0
- netbox_dns/views/zone.py +11 -1
- {netbox_plugin_dns-1.2.5.dist-info → netbox_plugin_dns-1.2.7.dist-info}/METADATA +3 -2
- {netbox_plugin_dns-1.2.5.dist-info → netbox_plugin_dns-1.2.7.dist-info}/RECORD +77 -49
- {netbox_plugin_dns-1.2.5.dist-info → netbox_plugin_dns-1.2.7.dist-info}/WHEEL +1 -1
- {netbox_plugin_dns-1.2.5.dist-info → netbox_plugin_dns-1.2.7.dist-info/licenses}/LICENSE +0 -0
- {netbox_plugin_dns-1.2.5.dist-info → netbox_plugin_dns-1.2.7.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
from django.core.exceptions import ValidationError
|
|
2
|
+
from django.utils.translation import gettext_lazy as _
|
|
3
|
+
|
|
4
|
+
from netbox_dns.choices import (
|
|
5
|
+
DNSSECKeyTemplateTypeChoices,
|
|
6
|
+
DNSSECKeyTemplateAlgorithmChoices,
|
|
7
|
+
DNSSECKeyTemplateKeySizeChoices,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
__all__ = (
|
|
11
|
+
"validate_key_template",
|
|
12
|
+
"validate_key_template_assignment",
|
|
13
|
+
"validate_key_template_lifetime",
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def validate_key_template(key_template):
|
|
18
|
+
if key_template.key_size is None:
|
|
19
|
+
return
|
|
20
|
+
|
|
21
|
+
if key_template.key_size not in DNSSECKeyTemplateKeySizeChoices.values():
|
|
22
|
+
raise ValidationError(
|
|
23
|
+
{
|
|
24
|
+
"key_size": _("{key_size} is not a supported key size.").format(
|
|
25
|
+
key_size=key_template.key_size
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
if key_template.algorithm != DNSSECKeyTemplateAlgorithmChoices.RSASHA256:
|
|
31
|
+
raise ValidationError(
|
|
32
|
+
{
|
|
33
|
+
"key_size": _(
|
|
34
|
+
"Specifying the key size is not supported for algorithm {algorithm}."
|
|
35
|
+
).format(algorithm=key_template.algorithm)
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def validate_key_template_assignment(key_templates):
|
|
41
|
+
if key_templates is None:
|
|
42
|
+
return
|
|
43
|
+
|
|
44
|
+
csk = key_templates.filter(type=DNSSECKeyTemplateTypeChoices.TYPE_CSK)
|
|
45
|
+
ksk = key_templates.filter(type=DNSSECKeyTemplateTypeChoices.TYPE_KSK)
|
|
46
|
+
zsk = key_templates.filter(type=DNSSECKeyTemplateTypeChoices.TYPE_ZSK)
|
|
47
|
+
|
|
48
|
+
if csk and (ksk or zsk):
|
|
49
|
+
raise ValidationError(
|
|
50
|
+
{
|
|
51
|
+
"key_templates": _(
|
|
52
|
+
"Specifying a CSK together with any other key template type is not allowed."
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
if any(
|
|
58
|
+
(
|
|
59
|
+
csk.count() > 1,
|
|
60
|
+
ksk.count() > 1,
|
|
61
|
+
zsk.count() > 1,
|
|
62
|
+
)
|
|
63
|
+
):
|
|
64
|
+
raise ValidationError(
|
|
65
|
+
{
|
|
66
|
+
"key_templates": _(
|
|
67
|
+
"At most one key template per type (CSK, KSK and ZSK) is allowed."
|
|
68
|
+
)
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
if (ksk and zsk) and (ksk.first().algorithm != zsk.first().algorithm):
|
|
73
|
+
raise ValidationError(
|
|
74
|
+
{"key_templates": _("KSK and ZSK must use the same algorithm.")}
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def validate_key_template_lifetime(key_template, policy, raise_exception=True):
|
|
79
|
+
key_lifetime = key_template.lifetime
|
|
80
|
+
|
|
81
|
+
if not key_lifetime:
|
|
82
|
+
return
|
|
83
|
+
|
|
84
|
+
dnskey_ttl = policy.get_effective_value("dnskey_ttl")
|
|
85
|
+
publish_safety = policy.get_effective_value("publish_safety")
|
|
86
|
+
zone_propagation_delay = policy.get_effective_value("zone_propagation_delay")
|
|
87
|
+
max_zone_ttl = policy.get_effective_value("max_zone_ttl")
|
|
88
|
+
retire_safety = policy.get_effective_value("retire_safety")
|
|
89
|
+
|
|
90
|
+
validation_errors = []
|
|
91
|
+
|
|
92
|
+
if (
|
|
93
|
+
dnskey_ttl is not None
|
|
94
|
+
and publish_safety is not None
|
|
95
|
+
and zone_propagation_delay is not None
|
|
96
|
+
and key_lifetime < (dnskey_ttl + publish_safety + zone_propagation_delay)
|
|
97
|
+
):
|
|
98
|
+
validation_errors.append(
|
|
99
|
+
_(
|
|
100
|
+
"Key Lifetime {lifetime} is less than DNSKEY TTL + Publish Safety + Zone Propagation Delay."
|
|
101
|
+
).format(lifetime=key_lifetime)
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
if (
|
|
105
|
+
max_zone_ttl is not None
|
|
106
|
+
and retire_safety is not None
|
|
107
|
+
and zone_propagation_delay is not None
|
|
108
|
+
and key_lifetime < (max_zone_ttl + retire_safety + zone_propagation_delay)
|
|
109
|
+
):
|
|
110
|
+
validation_errors.append(
|
|
111
|
+
_(
|
|
112
|
+
"Key Lifetime {lifetime} is less than Max Zone TTL + Retire Safety + Zone Propagation Delay."
|
|
113
|
+
).format(lifetime=key_lifetime)
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
if key_template.type == DNSSECKeyTemplateTypeChoices.TYPE_ZSK:
|
|
117
|
+
signatures_validity = policy.get_effective_value("signatures_validity")
|
|
118
|
+
signatures_refresh = policy.get_effective_value("signatures_refresh")
|
|
119
|
+
|
|
120
|
+
if (
|
|
121
|
+
signatures_validity is not None
|
|
122
|
+
and signatures_validity is not None
|
|
123
|
+
and key_lifetime < signatures_validity - signatures_refresh
|
|
124
|
+
):
|
|
125
|
+
validation_errors.append(
|
|
126
|
+
_(
|
|
127
|
+
"Key Lifetime {lifetime} is less than Signatures Validity - Signatures Refresh."
|
|
128
|
+
)
|
|
129
|
+
).format(lifetime=key_lifetime)
|
|
130
|
+
else:
|
|
131
|
+
parent_ds_ttl = policy.get_effective_value("parent_ds_ttl")
|
|
132
|
+
parent_propagation_delay = policy.get_effective_value(
|
|
133
|
+
"parent_propagation_delay"
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
if (
|
|
137
|
+
parent_ds_ttl is not None
|
|
138
|
+
and retire_safety is not None
|
|
139
|
+
and parent_propagation_delay is not None
|
|
140
|
+
and parent_ds_ttl < retire_safety + parent_propagation_delay
|
|
141
|
+
):
|
|
142
|
+
validation_errors.append(
|
|
143
|
+
_(
|
|
144
|
+
"Key Lifetime {lifetime} is less than Parent DS TTL + Retire Safety + Parent Propagation Delay."
|
|
145
|
+
).format(lifetime=key_lifetime)
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
return validation_errors
|
netbox_dns/views/__init__.py
CHANGED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from netbox.views import generic
|
|
2
|
+
from utilities.views import register_model_view
|
|
3
|
+
from tenancy.views import ObjectContactsView
|
|
4
|
+
|
|
5
|
+
from netbox_dns.filtersets import DNSSECKeyTemplateFilterSet
|
|
6
|
+
from netbox_dns.forms import (
|
|
7
|
+
DNSSECKeyTemplateImportForm,
|
|
8
|
+
DNSSECKeyTemplateFilterForm,
|
|
9
|
+
DNSSECKeyTemplateForm,
|
|
10
|
+
DNSSECKeyTemplateBulkEditForm,
|
|
11
|
+
)
|
|
12
|
+
from netbox_dns.models import DNSSECKeyTemplate
|
|
13
|
+
from netbox_dns.tables import DNSSECKeyTemplateTable, DNSSECPolicyDisplayTable
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
__all__ = (
|
|
17
|
+
"DNSSECKeyTemplateView",
|
|
18
|
+
"DNSSECKeyTemplateListView",
|
|
19
|
+
"DNSSECKeyTemplateEditView",
|
|
20
|
+
"DNSSECKeyTemplateDeleteView",
|
|
21
|
+
"DNSSECKeyTemplateBulkEditView",
|
|
22
|
+
"DNSSECKeyTemplateBulkImportView",
|
|
23
|
+
"DNSSECKeyTemplateBulkDeleteView",
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@register_model_view(DNSSECKeyTemplate, "list", path="", detail=False)
|
|
28
|
+
class DNSSECKeyTemplateListView(generic.ObjectListView):
|
|
29
|
+
queryset = DNSSECKeyTemplate.objects.all()
|
|
30
|
+
filterset = DNSSECKeyTemplateFilterSet
|
|
31
|
+
filterset_form = DNSSECKeyTemplateFilterForm
|
|
32
|
+
table = DNSSECKeyTemplateTable
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@register_model_view(DNSSECKeyTemplate)
|
|
36
|
+
class DNSSECKeyTemplateView(generic.ObjectView):
|
|
37
|
+
queryset = DNSSECKeyTemplate.objects.prefetch_related("policies")
|
|
38
|
+
|
|
39
|
+
def get_extra_context(self, request, instance):
|
|
40
|
+
if instance.policies.exists():
|
|
41
|
+
return {
|
|
42
|
+
"policy_table": DNSSECPolicyDisplayTable(data=instance.policies.all())
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return {}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@register_model_view(DNSSECKeyTemplate, "add", detail=False)
|
|
49
|
+
@register_model_view(DNSSECKeyTemplate, "edit")
|
|
50
|
+
class DNSSECKeyTemplateEditView(generic.ObjectEditView):
|
|
51
|
+
queryset = DNSSECKeyTemplate.objects.all()
|
|
52
|
+
form = DNSSECKeyTemplateForm
|
|
53
|
+
default_return_url = "plugins:netbox_dns:dnsseckeytemplate_list"
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@register_model_view(DNSSECKeyTemplate, "delete")
|
|
57
|
+
class DNSSECKeyTemplateDeleteView(generic.ObjectDeleteView):
|
|
58
|
+
queryset = DNSSECKeyTemplate.objects.all()
|
|
59
|
+
default_return_url = "plugins:netbox_dns:dnsseckeytemplate_list"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@register_model_view(DNSSECKeyTemplate, "bulk_import", detail=False)
|
|
63
|
+
class DNSSECKeyTemplateBulkImportView(generic.BulkImportView):
|
|
64
|
+
queryset = DNSSECKeyTemplate.objects.all()
|
|
65
|
+
model_form = DNSSECKeyTemplateImportForm
|
|
66
|
+
table = DNSSECKeyTemplateTable
|
|
67
|
+
default_return_url = "plugins:netbox_dns:dnsseckeytemplate_list"
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@register_model_view(DNSSECKeyTemplate, "bulk_edit", path="edit", detail=False)
|
|
71
|
+
class DNSSECKeyTemplateBulkEditView(generic.BulkEditView):
|
|
72
|
+
queryset = DNSSECKeyTemplate.objects.all()
|
|
73
|
+
filterset = DNSSECKeyTemplateFilterSet
|
|
74
|
+
table = DNSSECKeyTemplateTable
|
|
75
|
+
form = DNSSECKeyTemplateBulkEditForm
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@register_model_view(DNSSECKeyTemplate, "bulk_delete", path="delete", detail=False)
|
|
79
|
+
class DNSSECKeyTemplateBulkDeleteView(generic.BulkDeleteView):
|
|
80
|
+
queryset = DNSSECKeyTemplate.objects.all()
|
|
81
|
+
filterset = DNSSECKeyTemplateFilterSet
|
|
82
|
+
table = DNSSECKeyTemplateTable
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@register_model_view(DNSSECKeyTemplate, "contacts")
|
|
86
|
+
class DNSSECKeyTemplateContactsView(ObjectContactsView):
|
|
87
|
+
queryset = DNSSECKeyTemplate.objects.all()
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
from django.utils.translation import gettext_lazy as _
|
|
2
|
+
|
|
3
|
+
from netbox.views import generic
|
|
4
|
+
from utilities.views import ViewTab, register_model_view
|
|
5
|
+
from tenancy.views import ObjectContactsView
|
|
6
|
+
|
|
7
|
+
from netbox_dns.filtersets import (
|
|
8
|
+
DNSSECPolicyFilterSet,
|
|
9
|
+
ZoneFilterSet,
|
|
10
|
+
ZoneTemplateFilterSet,
|
|
11
|
+
)
|
|
12
|
+
from netbox_dns.forms import (
|
|
13
|
+
DNSSECPolicyImportForm,
|
|
14
|
+
DNSSECPolicyFilterForm,
|
|
15
|
+
DNSSECPolicyForm,
|
|
16
|
+
DNSSECPolicyBulkEditForm,
|
|
17
|
+
)
|
|
18
|
+
from netbox_dns.models import DNSSECPolicy, Zone, ZoneTemplate
|
|
19
|
+
from netbox_dns.tables import (
|
|
20
|
+
DNSSECPolicyTable,
|
|
21
|
+
ZoneDisplayTable,
|
|
22
|
+
ZoneTemplateDisplayTable,
|
|
23
|
+
)
|
|
24
|
+
from netbox_dns.validators import validate_key_template_lifetime
|
|
25
|
+
from netbox_dns.choices import DNSSECKeyTemplateTypeChoices
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
__all__ = (
|
|
29
|
+
"DNSSECPolicyView",
|
|
30
|
+
"DNSSECPolicyListView",
|
|
31
|
+
"DNSSECPolicyEditView",
|
|
32
|
+
"DNSSECPolicyDeleteView",
|
|
33
|
+
"DNSSECPolicyBulkEditView",
|
|
34
|
+
"DNSSECPolicyBulkImportView",
|
|
35
|
+
"DNSSECPolicyBulkDeleteView",
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@register_model_view(DNSSECPolicy, "list", path="", detail=False)
|
|
40
|
+
class DNSSECPolicyListView(generic.ObjectListView):
|
|
41
|
+
queryset = DNSSECPolicy.objects.all()
|
|
42
|
+
filterset = DNSSECPolicyFilterSet
|
|
43
|
+
filterset_form = DNSSECPolicyFilterForm
|
|
44
|
+
table = DNSSECPolicyTable
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@register_model_view(DNSSECPolicy)
|
|
48
|
+
class DNSSECPolicyView(generic.ObjectView):
|
|
49
|
+
queryset = DNSSECPolicy.objects.prefetch_related(
|
|
50
|
+
"key_templates", "zones", "zone_templates"
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
def get_extra_context(self, request, instance):
|
|
54
|
+
context = {}
|
|
55
|
+
|
|
56
|
+
key_errors = {
|
|
57
|
+
key_template.pk: validate_key_template_lifetime(key_template, instance)
|
|
58
|
+
for key_template in instance.key_templates.all()
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
context["key_template_errors"] = key_errors
|
|
62
|
+
|
|
63
|
+
if not instance.key_templates.filter(
|
|
64
|
+
type__in=(
|
|
65
|
+
DNSSECKeyTemplateTypeChoices.TYPE_ZSK,
|
|
66
|
+
DNSSECKeyTemplateTypeChoices.TYPE_CSK,
|
|
67
|
+
)
|
|
68
|
+
).exists():
|
|
69
|
+
context["policy_warning"] = _(
|
|
70
|
+
"No key for signing zones (CSK or ZSK) is assigned."
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
return context
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
@register_model_view(DNSSECPolicy, "add", detail=False)
|
|
77
|
+
@register_model_view(DNSSECPolicy, "edit")
|
|
78
|
+
class DNSSECPolicyEditView(generic.ObjectEditView):
|
|
79
|
+
queryset = DNSSECPolicy.objects.all()
|
|
80
|
+
form = DNSSECPolicyForm
|
|
81
|
+
default_return_url = "plugins:netbox_dns:dnssecpolicy_list"
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
@register_model_view(DNSSECPolicy, "delete")
|
|
85
|
+
class DNSSECPolicyDeleteView(generic.ObjectDeleteView):
|
|
86
|
+
queryset = DNSSECPolicy.objects.all()
|
|
87
|
+
default_return_url = "plugins:netbox_dns:dnssecpolicy_list"
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@register_model_view(DNSSECPolicy, "bulk_import", detail=False)
|
|
91
|
+
class DNSSECPolicyBulkImportView(generic.BulkImportView):
|
|
92
|
+
queryset = DNSSECPolicy.objects.all()
|
|
93
|
+
model_form = DNSSECPolicyImportForm
|
|
94
|
+
table = DNSSECPolicyTable
|
|
95
|
+
default_return_url = "plugins:netbox_dns:dnssecpolicy_list"
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@register_model_view(DNSSECPolicy, "bulk_edit", path="edit", detail=False)
|
|
99
|
+
class DNSSECPolicyBulkEditView(generic.BulkEditView):
|
|
100
|
+
queryset = DNSSECPolicy.objects.all()
|
|
101
|
+
filterset = DNSSECPolicyFilterSet
|
|
102
|
+
table = DNSSECPolicyTable
|
|
103
|
+
form = DNSSECPolicyBulkEditForm
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@register_model_view(DNSSECPolicy, "bulk_delete", path="delete", detail=False)
|
|
107
|
+
class DNSSECPolicyBulkDeleteView(generic.BulkDeleteView):
|
|
108
|
+
queryset = DNSSECPolicy.objects.all()
|
|
109
|
+
filterset = DNSSECPolicyFilterSet
|
|
110
|
+
table = DNSSECPolicyTable
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
@register_model_view(DNSSECPolicy, "contacts")
|
|
114
|
+
class DNSSECPolicyContactsView(ObjectContactsView):
|
|
115
|
+
queryset = DNSSECPolicy.objects.all()
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@register_model_view(DNSSECPolicy, "zones")
|
|
119
|
+
class DNSSECPolicyZoneListView(generic.ObjectChildrenView):
|
|
120
|
+
queryset = DNSSECPolicy.objects.all()
|
|
121
|
+
child_model = Zone
|
|
122
|
+
table = ZoneDisplayTable
|
|
123
|
+
filterset = ZoneFilterSet
|
|
124
|
+
template_name = "netbox_dns/zone/child.html"
|
|
125
|
+
hide_if_empty = True
|
|
126
|
+
|
|
127
|
+
tab = ViewTab(
|
|
128
|
+
label=_("Zones"),
|
|
129
|
+
permission="netbox_dns.view_zones",
|
|
130
|
+
badge=lambda obj: obj.zones.count(),
|
|
131
|
+
hide_if_empty=True,
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
def get_children(self, request, parent):
|
|
135
|
+
return parent.zones.restrict(request.user, "view")
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
@register_model_view(DNSSECPolicy, "zonetemplates")
|
|
139
|
+
class DNSSECPolicyZoneTemplateListView(generic.ObjectChildrenView):
|
|
140
|
+
queryset = DNSSECPolicy.objects.all()
|
|
141
|
+
child_model = ZoneTemplate
|
|
142
|
+
table = ZoneTemplateDisplayTable
|
|
143
|
+
filterset = ZoneTemplateFilterSet
|
|
144
|
+
template_name = "netbox_dns/zonetemplate/child.html"
|
|
145
|
+
hide_if_empty = True
|
|
146
|
+
|
|
147
|
+
tab = ViewTab(
|
|
148
|
+
label=_("Zone Templates"),
|
|
149
|
+
permission="netbox_dns.view_zonetemplates",
|
|
150
|
+
badge=lambda obj: obj.zone_templates.count(),
|
|
151
|
+
hide_if_empty=True,
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
def get_children(self, request, parent):
|
|
155
|
+
return parent.zone_templates.restrict(request.user, "view")
|
netbox_dns/views/zone.py
CHANGED
|
@@ -119,9 +119,19 @@ class ZoneRegistrationView(generic.ObjectView):
|
|
|
119
119
|
template_name = "netbox_dns/zone/registration.html"
|
|
120
120
|
|
|
121
121
|
tab = RegistrationViewTab(
|
|
122
|
-
label="Registration",
|
|
122
|
+
label=_("Registration"),
|
|
123
123
|
)
|
|
124
124
|
|
|
125
|
+
def get_extra_context(self, request, instance):
|
|
126
|
+
expiration_warning, expiration_error = instance.check_expiration()
|
|
127
|
+
|
|
128
|
+
context = {
|
|
129
|
+
"expiration_warning": expiration_warning,
|
|
130
|
+
"expiration_error": expiration_error,
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return context
|
|
134
|
+
|
|
125
135
|
|
|
126
136
|
@register_model_view(Zone, "records")
|
|
127
137
|
class ZoneRecordListView(generic.ObjectChildrenView):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: netbox-plugin-dns
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.7
|
|
4
4
|
Summary: NetBox DNS is a NetBox plugin for managing DNS data.
|
|
5
5
|
Author-email: Peter Eckel <pete@netbox-dns.org>
|
|
6
6
|
Project-URL: Homepage, https://github.com/peteeckel/netbox-plugin-dns
|
|
@@ -13,6 +13,7 @@ Requires-Python: >=3.10
|
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
15
|
Requires-Dist: dnspython
|
|
16
|
+
Dynamic: license-file
|
|
16
17
|
|
|
17
18
|
# NetBox DNS
|
|
18
19
|
The NetBox DNS plugin enables NetBox to manage operational DNS data such as name servers, zones, records and views, as well as registration data for domains. It can automate tasks like creating PTR records, generating zone serial numbers, NS and SOA records, as well as validate names and values values for resource records to ensure zone data is consistent, up-to-date and compliant with to the relevant RFCs.
|
|
@@ -1,54 +1,67 @@
|
|
|
1
|
-
netbox_dns/__init__.py,sha256=
|
|
1
|
+
netbox_dns/__init__.py,sha256=utlUlw7ocA8EMnwLvb2b006T2SpVWSnV77NIBdh_75Y,3570
|
|
2
2
|
netbox_dns/apps.py,sha256=JCW5eS-AQBUubDJve1DjP-IRFKTFGQh1NLGWzJpC5MI,151
|
|
3
|
-
netbox_dns/navigation.py,sha256=
|
|
4
|
-
netbox_dns/template_content.py,sha256=
|
|
5
|
-
netbox_dns/urls.py,sha256=
|
|
6
|
-
netbox_dns/api/
|
|
7
|
-
netbox_dns/api/
|
|
8
|
-
netbox_dns/api/
|
|
9
|
-
netbox_dns/api/
|
|
3
|
+
netbox_dns/navigation.py,sha256=u90MwWBySg1Z9yfZEdvUctYWEkab5z1Y3019J7U_-3g,7741
|
|
4
|
+
netbox_dns/template_content.py,sha256=irgHJe91TnmmL9K1Xnv07uGmOeJMn9zTrIKtJev88XI,4283
|
|
5
|
+
netbox_dns/urls.py,sha256=wrse8l5scD-jz_O7WY0YXRlYPzpkL-0-kyAd-wCPtbQ,2596
|
|
6
|
+
netbox_dns/api/field_serializers.py,sha256=nVZ6d69DWagONDwbYCP2j3cmL-x9lryitF1wThEJxyI,725
|
|
7
|
+
netbox_dns/api/nested_serializers.py,sha256=zg6FaSeWQdVL2fTUIsKPv4gC60gyJuLEiqbrAC0wRQc,3690
|
|
8
|
+
netbox_dns/api/serializers.py,sha256=OHrpfJkBn6D1y6b3nIxBEFyE50U5p-Aqv4lBojMEFgk,474
|
|
9
|
+
netbox_dns/api/urls.py,sha256=-kQaei47yZeGbDpQ9RaFaFlFb682ThuPA5h321_2cgM,1000
|
|
10
|
+
netbox_dns/api/views.py,sha256=w71SRyZue5zPD1C64TIr496nYFA_ARjHTlpSVFTZ76o,4522
|
|
10
11
|
netbox_dns/api/serializers_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
netbox_dns/api/serializers_/dnssec_key_template.py,sha256=QQUvbDwvYP05d_XB7Tcqi9XSR2Zq_ddq0wTBllo3LE0,1585
|
|
13
|
+
netbox_dns/api/serializers_/dnssec_policy.py,sha256=FCsmeJrBGaS3GC7_io3uJLZ2RYuoLvdfRkzSSy6gO6U,3917
|
|
11
14
|
netbox_dns/api/serializers_/nameserver.py,sha256=DMkUaLNDt3UtpAD6JDHfo1NMngHWRqHh2-xQeOPlfFM,1171
|
|
12
15
|
netbox_dns/api/serializers_/prefix.py,sha256=kZ1DjDly6VFZamXSxGa57YC6MfZZcI5S7jmGBkVB2_I,551
|
|
13
|
-
netbox_dns/api/serializers_/record.py,sha256=
|
|
14
|
-
netbox_dns/api/serializers_/record_template.py,sha256=
|
|
16
|
+
netbox_dns/api/serializers_/record.py,sha256=U3N92qHITIUAN6vXn1cSusstGKlwsWJiqOU1uaSUU9I,2515
|
|
17
|
+
netbox_dns/api/serializers_/record_template.py,sha256=tvfSlG31X4qn-FjgJespyfkGnb4874EjUjbCFl_z6Ng,1626
|
|
15
18
|
netbox_dns/api/serializers_/registrar.py,sha256=xLIaeBJ5ckV1Jf-uyCTFcvsLlsRMlpDtIg6q79vXZic,842
|
|
16
19
|
netbox_dns/api/serializers_/registration_contact.py,sha256=3IGWW5xB9XEBGApCGZCZIxpCmy1Y5jQUbA4GzmtaCik,1024
|
|
17
20
|
netbox_dns/api/serializers_/view.py,sha256=nnWeQugoqMdn-NGGC7ykbVPwmBrcBma_ZKwdDxUgJ24,1809
|
|
18
|
-
netbox_dns/api/serializers_/zone.py,sha256=
|
|
19
|
-
netbox_dns/api/serializers_/zone_template.py,sha256=
|
|
20
|
-
netbox_dns/choices/__init__.py,sha256=
|
|
21
|
-
netbox_dns/choices/
|
|
22
|
-
netbox_dns/choices/
|
|
23
|
-
netbox_dns/
|
|
21
|
+
netbox_dns/api/serializers_/zone.py,sha256=MJrCIhv8j24YnVx43EBe3TkaZoij7C9MitbDuwjOaJY,6205
|
|
22
|
+
netbox_dns/api/serializers_/zone_template.py,sha256=gYlP6wBSVoTZ-DVxJHzGz2fyLdcyibTYR1O9czEKl_k,4374
|
|
23
|
+
netbox_dns/choices/__init__.py,sha256=K3JfawICeoUny8O_Dqexr7DOxwyg3QqijZ4DO6j5yP8,106
|
|
24
|
+
netbox_dns/choices/dnssec_key_template.py,sha256=YwJYGbxq2EVPUVwMs-sy1k1MJuEwbdWFVZh84qyU-QI,1429
|
|
25
|
+
netbox_dns/choices/dnssec_policy.py,sha256=s6kz8gTiAuyTzn4piGbl2K9mVG-zga8n1rqZD26l72A,843
|
|
26
|
+
netbox_dns/choices/record.py,sha256=PRS9crKoEZdFXTo6RRqXoFztfx9u3TZPsxq0T4Qdwj0,1423
|
|
27
|
+
netbox_dns/choices/utilities.py,sha256=CV-77-iHKbgSOCDwrTTzsrIpZOq4cBnIf3rhvI0_5qs,711
|
|
28
|
+
netbox_dns/choices/zone.py,sha256=KvyNL_TR_2FXCoH6usrXTRJYRzZ9W1PiDvunutAUYhY,4294
|
|
29
|
+
netbox_dns/fields/__init__.py,sha256=yUVrNQ7BvoeVRGoiRFmrZxXsp1LIwHLRLl0_5mBIyzk,143
|
|
24
30
|
netbox_dns/fields/address.py,sha256=qNLHmpwwJ3TevljG1QsUr_f2h6NrPsK6wr-R-Ti8eZI,1262
|
|
31
|
+
netbox_dns/fields/choice_array.py,sha256=qECgwzJ9PVGIbpqC_JVzuSUsV7C3FG03ibv1EUrvZr4,850
|
|
25
32
|
netbox_dns/fields/ipam.py,sha256=wla-kBm77BpD0LNQhgRZS1RYbVois7WDqPpyQkUT02k,481
|
|
26
33
|
netbox_dns/fields/network.py,sha256=a5nTzjscRufxgMjVsf5juszSYuTujU50pQ9P7q4qMVs,3740
|
|
27
34
|
netbox_dns/fields/rfc2317.py,sha256=y72PZKlXZ8_6P4eeWZ8IF3gqOMjPxW48gk3AB81XboE,2642
|
|
28
|
-
netbox_dns/
|
|
35
|
+
netbox_dns/fields/timeperiod.py,sha256=InK3FVc8gHNQjx101a7HsGfrHxvoG1y6drYwuRjRSIE,941
|
|
36
|
+
netbox_dns/filtersets/__init__.py,sha256=bKppz_w3X2xNNHOcxZZiIO7zSkDaNTrZJ__k1U7rKik,275
|
|
37
|
+
netbox_dns/filtersets/dnssec_key_template.py,sha256=qu1c2MzBKEflcU-QkWrGGf6aU8iYDgfeKPCcxxfdRkY,1565
|
|
38
|
+
netbox_dns/filtersets/dnssec_policy.py,sha256=WwNX_D0xbufDfjOLV4od-yzJppl7A9GVKF_unqXTLVg,3069
|
|
29
39
|
netbox_dns/filtersets/nameserver.py,sha256=7hk9Wh4v4-IHP44rQC4nhdvpYbDYNYYf-XZp6Yo72xE,1203
|
|
30
40
|
netbox_dns/filtersets/record.py,sha256=Ao2666F6z435TXD_hV2dgItI0sWXlS-jyQ1TQZEL8Yc,3913
|
|
31
41
|
netbox_dns/filtersets/record_template.py,sha256=wir5s2QWfDnw0M1wWnzJs9im5ok4l5cTbWPMBSM8aEg,1604
|
|
32
42
|
netbox_dns/filtersets/registrar.py,sha256=Wh_l-IXRHnJhW7Pyokp3czQZISDKzXnWeSQKp512Drc,977
|
|
33
43
|
netbox_dns/filtersets/registration_contact.py,sha256=903sOcHPRCI0dVzqn1i0pn5VPr_4YpHPh5QE2-akR-Y,1139
|
|
34
44
|
netbox_dns/filtersets/view.py,sha256=IlQz3k2J_N6eSbT9op0KOu3sKLrn-HTsJCcrIqoYgyY,1047
|
|
35
|
-
netbox_dns/filtersets/zone.py,sha256=
|
|
36
|
-
netbox_dns/filtersets/zone_template.py,sha256=
|
|
37
|
-
netbox_dns/forms/__init__.py,sha256=
|
|
38
|
-
netbox_dns/forms/
|
|
39
|
-
netbox_dns/forms/
|
|
40
|
-
netbox_dns/forms/
|
|
45
|
+
netbox_dns/filtersets/zone.py,sha256=ih1Jy1ocGyToP91QDZo6eaxl-2o-Qkgc5GDBHDtrxLA,7049
|
|
46
|
+
netbox_dns/filtersets/zone_template.py,sha256=7pmS7gd1JdsUgu7ICrq5d5gTuIsxMFSejEKZ2VLwwn8,4737
|
|
47
|
+
netbox_dns/forms/__init__.py,sha256=tObkTOHw_6kVtEcwdyshN0Ql-8VGhwsgQw7owL_s2lI,273
|
|
48
|
+
netbox_dns/forms/dnssec_key_template.py,sha256=BChWsbShkm72tnZGh5ClStN6SG-XPMAeMeu7mQzoCDk,5249
|
|
49
|
+
netbox_dns/forms/dnssec_policy.py,sha256=KvuC85OfQjvsHLi-W8brjjgH6_Mv2fy1Q_yzv1kepsY,17041
|
|
50
|
+
netbox_dns/forms/nameserver.py,sha256=v0nvG4MmpbYypde5KG5TkoXYkwibMhmqi4I8ugNbDXc,3459
|
|
51
|
+
netbox_dns/forms/record.py,sha256=wkl3YpbKfq0bH6U8atNYrYwrV-kNPRqG1PRQG3X1eHA,8389
|
|
52
|
+
netbox_dns/forms/record_template.py,sha256=2wNS0LvxX6Zv9uELWmJyL-hIzaVTItNFHv4xDI3qwAk,6505
|
|
41
53
|
netbox_dns/forms/registrar.py,sha256=GaRH3w5zlhrpwy_U0pxlrl1DrAEaMB78MUlnGxBRwZI,3949
|
|
42
54
|
netbox_dns/forms/registration_contact.py,sha256=IhNAqElY7hOdpDG0jwWMdy3y2mB43xmjUhj3lsgJ3SE,5906
|
|
43
55
|
netbox_dns/forms/view.py,sha256=GacwKHXSDvxQEs-d3ys7rietqA_MzpSd0XjWaSsIbU0,10339
|
|
44
|
-
netbox_dns/forms/zone.py,sha256=
|
|
45
|
-
netbox_dns/forms/zone_template.py,sha256=
|
|
46
|
-
netbox_dns/graphql/__init__.py,sha256=
|
|
47
|
-
netbox_dns/graphql/filters.py,sha256=
|
|
48
|
-
netbox_dns/graphql/schema.py,sha256=
|
|
49
|
-
netbox_dns/graphql/types.py,sha256=
|
|
50
|
-
netbox_dns/locale/de/LC_MESSAGES/django.mo,sha256=
|
|
56
|
+
netbox_dns/forms/zone.py,sha256=0Lr3pWU21Tn70t32CXsEfJn6h5S2ulQugDTkEqva2Zw,29398
|
|
57
|
+
netbox_dns/forms/zone_template.py,sha256=0VXGG59EH9IJJ-Nq5Bn-eiNJNqT_ZiLADSDyuYWXSLE,11280
|
|
58
|
+
netbox_dns/graphql/__init__.py,sha256=0xg_5d1PPFTadBOZo752t5sfZeLFrqs2jM51Rbf8ti4,652
|
|
59
|
+
netbox_dns/graphql/filters.py,sha256=Cyi8_Jz_5cMZfwsiZaAqsdWQM7Hsp-TmoZkvXOa_-S8,2237
|
|
60
|
+
netbox_dns/graphql/schema.py,sha256=KlbJmlfQEqZhvb6-cYmq94mrMFcQoCh3MldaUD5eVV4,2904
|
|
61
|
+
netbox_dns/graphql/types.py,sha256=LIXmzn2QbWU9PzS8Fa2X2hy7GqMiGz50HeNfAOfWzUA,10161
|
|
62
|
+
netbox_dns/locale/de/LC_MESSAGES/django.mo,sha256=ERg4czwv3Yz6luunGaa6Xw9S_dFS8oeWuBT6ZS17X0Y,29854
|
|
51
63
|
netbox_dns/locale/en/LC_MESSAGES/django.mo,sha256=GDnSZkfHs3yjtTsll7dksEEej4B50F8pc9RGytZNubM,393
|
|
64
|
+
netbox_dns/locale/fr/LC_MESSAGES/django.mo,sha256=XjWCnhwjI4Iwht_2JpPLB2btIg6f4ED8F3LqYPwNffA,30023
|
|
52
65
|
netbox_dns/management/commands/cleanup_database.py,sha256=1-tAl0Sht80qaNZyfFyUW19Eh9gBUuc7GdbHN4aemGU,5935
|
|
53
66
|
netbox_dns/management/commands/cleanup_rrset_ttl.py,sha256=UFRURLBcFeGHUS2lrYFv7UWIebjI72aG1EUQJt0XsXw,2046
|
|
54
67
|
netbox_dns/management/commands/rebuild_dnssync.py,sha256=Tcl385u6kJTX47SvSyRzKm1RIx4nYRYCMcKr3uVnV60,1246
|
|
@@ -69,6 +82,10 @@ netbox_dns/migrations/0011_rename_related_fields.py,sha256=j9lI-QBmTSzOrAxDl02Sd
|
|
|
69
82
|
netbox_dns/migrations/0012_natural_ordering.py,sha256=h5XVSmRwisUqz5OJzkBW41dwHIBlu08zqG2-1mxiiw4,2725
|
|
70
83
|
netbox_dns/migrations/0013_zonetemplate_soa_mname_zonetemplate_soa_rname.py,sha256=Y6TdD_dUZ-Pb1kuRR3l3kSwObn_Cpcmp3tm75qSkc5g,795
|
|
71
84
|
netbox_dns/migrations/0014_alter_unique_constraints_lowercase.py,sha256=Ueesv7uoB2ZQ1-7kG_qsMlPv0mn3mdDeI8OoAKIschM,1409
|
|
85
|
+
netbox_dns/migrations/0015_dnssec.py,sha256=PRS8wjN3_h-M17gOHagM-5pkZuuS5nlaJjlIqzKr5f8,6716
|
|
86
|
+
netbox_dns/migrations/0016_dnssec_policy_status.py,sha256=MAGTAz95WYkp2PR1Q1EQehEvAYgL1V-ksMa3wlKHgGE,384
|
|
87
|
+
netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py,sha256=m36a08UMLzs2l-IpKY1nXdspcbGouCQWMG15m19s8kE,1162
|
|
88
|
+
netbox_dns/migrations/0018_zone_domain_status_zone_expiration_date.py,sha256=P_JaNl3NhTPgX7pgA-ZyBJpujrg4HzPcpW6X3FbghMk,595
|
|
72
89
|
netbox_dns/migrations/0020_netbox_3_4.py,sha256=UMcHdn8ZAuQjUaM_3rEGpktYrM0TuvhccD7Jt7WQnPs,1271
|
|
73
90
|
netbox_dns/migrations/0021_record_ip_address.py,sha256=EqdhWXmq7aiK4X79xTRUZng3zFncCl-8JoO65HqlJKw,3244
|
|
74
91
|
netbox_dns/migrations/0022_search.py,sha256=KW1ffEZ4-0dppGQ_KD1EN7iw8eQJOnDco-xfJFRZqKQ,172
|
|
@@ -82,18 +99,23 @@ netbox_dns/migrations/0029_record_fqdn.py,sha256=UAAU38ekKQyiYDOJlcrz6Qbk4bqZfSH
|
|
|
82
99
|
netbox_dns/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
100
|
netbox_dns/mixins/__init__.py,sha256=LxTEfpod_RHCyMtnzDljv0_dwqp2z3Q6tqbXW8LTGD8,35
|
|
84
101
|
netbox_dns/mixins/object_modification.py,sha256=AR64fU5f7g-scNAj9b54eSoS9dpjyOpqrxXVXPcOhY8,1807
|
|
85
|
-
netbox_dns/models/__init__.py,sha256=
|
|
102
|
+
netbox_dns/models/__init__.py,sha256=CuwFENIVUv0FNMDlY18Am-mvN5kBGkPOGavCP0cle7c,273
|
|
103
|
+
netbox_dns/models/dnssec_key_template.py,sha256=h6YniKfLx1ILAbvko6Mps-bhsI743uHIOiLgtfStZTI,2790
|
|
104
|
+
netbox_dns/models/dnssec_policy.py,sha256=eD13F_zTUgpP8fNGg0FssMNBUtpBRvkJiM6ZSYh1Pws,5466
|
|
86
105
|
netbox_dns/models/nameserver.py,sha256=ivZpIVfgQLdDhrtqYPi-zRbygVgl3aff2FMsq1M3qA8,4044
|
|
87
|
-
netbox_dns/models/record.py,sha256=
|
|
106
|
+
netbox_dns/models/record.py,sha256=QtQ6jRKw2PkAkDtavZF80YaNMYMh99iG8CnU8T8nDbg,29719
|
|
88
107
|
netbox_dns/models/record_template.py,sha256=kt-_sMFSMKmuKU8voVqz1-Lh7Wi7lPcA2ExPFQYLoxM,5345
|
|
89
108
|
netbox_dns/models/registrar.py,sha256=L5tbO8rtOa0VCs_y90nHYLKSRKBnnUhh_6sxZ3Mm2kk,1942
|
|
90
109
|
netbox_dns/models/registration_contact.py,sha256=O7T1clUjuilZnDjvhJKaHZdmNEF4aLg2h8K5p4llWOs,3825
|
|
91
110
|
netbox_dns/models/view.py,sha256=gQvKNr_FmhG2EMz2T8kWbdK4b8CyqI-Qc67-Dgrx2SI,4808
|
|
92
|
-
netbox_dns/models/zone.py,sha256=
|
|
93
|
-
netbox_dns/models/zone_template.py,sha256=
|
|
111
|
+
netbox_dns/models/zone.py,sha256=6TiKp2kP43Aixab6XwICz66NVpdUD9q7MmV45ZfrKLk,35107
|
|
112
|
+
netbox_dns/models/zone_template.py,sha256=TpM4LNBStwoyHXkvMGa8zUdBp28ZnauolkbFntt9hPk,5249
|
|
94
113
|
netbox_dns/signals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
|
+
netbox_dns/signals/dnssec.py,sha256=o4MOEg6ftxoDWFAhDtajkXzb7Nb6KuUHjtx1zNu7C1w,1040
|
|
95
115
|
netbox_dns/signals/ipam_dnssync.py,sha256=1zhlf4cMcJLlFosX7YzyqVYdFFHV4MFwTz5KCdL8xQc,7730
|
|
96
|
-
netbox_dns/tables/__init__.py,sha256=
|
|
116
|
+
netbox_dns/tables/__init__.py,sha256=tObkTOHw_6kVtEcwdyshN0Ql-8VGhwsgQw7owL_s2lI,273
|
|
117
|
+
netbox_dns/tables/dnssec_key_template.py,sha256=PplAhtgQa5MqVJtfRyHA7M1QppWKP_XN5NZGld5szEc,1100
|
|
118
|
+
netbox_dns/tables/dnssec_policy.py,sha256=l18S9eMwZH5YFcZIRnW4piJ6pmXCI1KzJIkgepuhxs0,3329
|
|
97
119
|
netbox_dns/tables/ipam_dnssync.py,sha256=7IK95XlA2ter6gsHqXjXPd6WubpOxrV-O5-UT6R1CKU,330
|
|
98
120
|
netbox_dns/tables/nameserver.py,sha256=Ue1ZTygkgifWbQxvnpIG4PIC2qIWfVZaX_g8OIrRd6Q,739
|
|
99
121
|
netbox_dns/tables/record.py,sha256=domOGxacF_2LT84k1qBdTgNKQl4kXVsIR8IM8JwZMns,4299
|
|
@@ -101,16 +123,18 @@ netbox_dns/tables/record_template.py,sha256=HJEOK3VYVCKWhExs775Nb4KAvHPE7IqQEzne
|
|
|
101
123
|
netbox_dns/tables/registrar.py,sha256=XQtJj0c4O4gpCdUp903GSD0tIuARmJw13Nwosw9pTFU,727
|
|
102
124
|
netbox_dns/tables/registration_contact.py,sha256=n_FKE90j6KNgPKRVq1WXg4vnOzFE238oXsi_NYVAU9M,931
|
|
103
125
|
netbox_dns/tables/view.py,sha256=gsuWQWAk3RstNIKzBDOHNHR2D3ykX6WigYLMj0VhQFs,1148
|
|
104
|
-
netbox_dns/tables/zone.py,sha256=
|
|
105
|
-
netbox_dns/tables/zone_template.py,sha256=
|
|
126
|
+
netbox_dns/tables/zone.py,sha256=TEQcSiuCuWpVtDnPa9oh-IDfrap-Plfi4qK40bGeDzA,2432
|
|
127
|
+
netbox_dns/tables/zone_template.py,sha256=TU45sNYPHxs1xJTKj57e1s-jxLENCOAgE6S6lconWMc,1751
|
|
128
|
+
netbox_dns/templates/netbox_dns/dnsseckeytemplate.html,sha256=dSEyHgUp0k_5JSdR4s4m_7Rom67TqvRIQN0zbQKYfjE,2839
|
|
129
|
+
netbox_dns/templates/netbox_dns/dnssecpolicy.html,sha256=dXHAt8ISsSWv-vK_kaJMcAzUBh4TZ2hAmeaYa47u0PU,7694
|
|
106
130
|
netbox_dns/templates/netbox_dns/nameserver.html,sha256=MawPiuAmjFrbv0zRi-7xkm8vr-dT1tlEno8EcoQ9peU,1714
|
|
107
131
|
netbox_dns/templates/netbox_dns/record.html,sha256=1KBT4xDooTX9kt1cUoPD2-6QnMizPmbItA0JAAgRzfw,6550
|
|
108
132
|
netbox_dns/templates/netbox_dns/recordtemplate.html,sha256=a29PAUl-KI_I1lxWpVdPp2loJtzgis9DG9erOWrOZM0,3708
|
|
109
133
|
netbox_dns/templates/netbox_dns/registrar.html,sha256=4kJuj3biiDxQrIMQEQUEmF4iGRE4psr6Fh0CBP1evz8,2308
|
|
110
134
|
netbox_dns/templates/netbox_dns/registrationcontact.html,sha256=sljVp_MrPSJRc2vJCPFXq9MiWOw4wjbr1kI_YStBntw,3094
|
|
111
135
|
netbox_dns/templates/netbox_dns/view.html,sha256=1MuzOYNQezRrryNjlklgxErjGTFoVnwqcxf4qceuglw,3320
|
|
112
|
-
netbox_dns/templates/netbox_dns/zone.html,sha256=
|
|
113
|
-
netbox_dns/templates/netbox_dns/zonetemplate.html,sha256=
|
|
136
|
+
netbox_dns/templates/netbox_dns/zone.html,sha256=5PaCQgZ_6dtD-XzzJsqkcI21vjWn_mB22gKHBpBvgS8,7540
|
|
137
|
+
netbox_dns/templates/netbox_dns/zonetemplate.html,sha256=a3QD0O_8CW2MUBnU_nXGweGhCwo5pYDVlwJHzovC1RU,4344
|
|
114
138
|
netbox_dns/templates/netbox_dns/record/managed.html,sha256=uwpxQTxyfAXkWqThLT-T2ZssKNUhXTDDMnLWJSVuDNU,119
|
|
115
139
|
netbox_dns/templates/netbox_dns/record/related.html,sha256=R59aPhE4CyIZtTH0ncwDyS6_wAe_Y-oZjuN_j4qk8iA,1158
|
|
116
140
|
netbox_dns/templates/netbox_dns/view/button.html,sha256=EMOB5x78XpyfN1qi-pY1CKKKLjyHo9rFUa4Uhq6rFMc,322
|
|
@@ -122,29 +146,33 @@ netbox_dns/templates/netbox_dns/zone/child_zone.html,sha256=b9CSGWEfWT7hLQ80gApM
|
|
|
122
146
|
netbox_dns/templates/netbox_dns/zone/delegation_record.html,sha256=bpJoyEYb5CVCoeH2260KMwwL6pUJxKA-Dt0qUruBEdk,517
|
|
123
147
|
netbox_dns/templates/netbox_dns/zone/managed_record.html,sha256=LOchMAJyfMZIICE6q0pX1eorRbtgUtOQ1u0VvJKCDZ8,514
|
|
124
148
|
netbox_dns/templates/netbox_dns/zone/record.html,sha256=Y_gg9EUIqjSYxmIZKufAK8jyg9A54J-BoewNxUBoO1Y,2238
|
|
125
|
-
netbox_dns/templates/netbox_dns/zone/registration.html,sha256=
|
|
149
|
+
netbox_dns/templates/netbox_dns/zone/registration.html,sha256=jbgKoMVG8YNNXTBDEclUCxfj4KbV05C250jt6x6n9cc,2069
|
|
126
150
|
netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html,sha256=rWlmb3zRQbLYQ_1dsa0twwu6y1dRj2tfFVEERH07p-s,517
|
|
151
|
+
netbox_dns/templates/netbox_dns/zonetemplate/child.html,sha256=S8BMNOZkfs8SM_4yfKR8_RnQXG47FHCe7rf2quDTc_Y,2247
|
|
127
152
|
netbox_dns/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
128
153
|
netbox_dns/templatetags/netbox_dns.py,sha256=DND1DMPzv636Rak3M6Hor_Vw6pjqUfSTquofIw4dIsA,223
|
|
129
154
|
netbox_dns/utilities/__init__.py,sha256=cSGf-nGaRWx9b-Xrh3dLMJYoWNsZ6FF-qdmV4F1uOgg,74
|
|
130
|
-
netbox_dns/utilities/conversions.py,sha256=
|
|
155
|
+
netbox_dns/utilities/conversions.py,sha256=qYnzecmR28l8Je_H0vFvzJ2sikTiEiyxr6drl_aRocg,3016
|
|
131
156
|
netbox_dns/utilities/dns.py,sha256=UBiyQe8thiOTnKOmU9e2iRHHnGF9toVLe4efU623kX4,322
|
|
132
157
|
netbox_dns/utilities/ipam_dnssync.py,sha256=_yuHoah_QN-opsZB51yGCkwjkij7nrmTgKHUZ-bQrBI,9625
|
|
133
|
-
netbox_dns/validators/__init__.py,sha256=
|
|
158
|
+
netbox_dns/validators/__init__.py,sha256=X0hPZlC3VZcXMcvXKZ2_5LSoEJdXPNSBr4QtEIFSBJ0,94
|
|
134
159
|
netbox_dns/validators/dns_name.py,sha256=Sil68Av49jfZPzgFMV_1qEcLnuuAWXmbxfAJPDXUsGg,3766
|
|
135
160
|
netbox_dns/validators/dns_value.py,sha256=-mc62mth-hlbPUPe_RlCR7vo1KSD6_gQDXiE8rjB-Cc,5206
|
|
161
|
+
netbox_dns/validators/dnssec.py,sha256=FzWLXX3qwS9ZMaLWHaBJStwJ_D96wp7GI4LYoKjoegc,4909
|
|
136
162
|
netbox_dns/validators/rfc2317.py,sha256=uKkwxpakiFFKdYA0qy8WSlEnbFwJD4MDw6gGV4F6skg,706
|
|
137
|
-
netbox_dns/views/__init__.py,sha256=
|
|
163
|
+
netbox_dns/views/__init__.py,sha256=tObkTOHw_6kVtEcwdyshN0Ql-8VGhwsgQw7owL_s2lI,273
|
|
164
|
+
netbox_dns/views/dnssec_key_template.py,sha256=TfBtODl7EzGvmC2NVDLd-P1zMalLCjClb9pKgPzIsBk,3050
|
|
165
|
+
netbox_dns/views/dnssec_policy.py,sha256=7bQRr9X-7U4RM3I_9k-SEfX2_WoZnHlbGpgXTG_HH7M,4807
|
|
138
166
|
netbox_dns/views/nameserver.py,sha256=6lHg8fqBjc_SoITzFj1FiRARpPF7nSn9knAZxe9x5Rg,3932
|
|
139
167
|
netbox_dns/views/record.py,sha256=6tOTC7BbQ5XOC7wr94LjFMR3epOi47HP5qIETNvj5sE,6715
|
|
140
168
|
netbox_dns/views/record_template.py,sha256=CbSyckBvyEvcZCeZgK3q0fJsa1_5HbwUflh_iM7JjH0,3134
|
|
141
169
|
netbox_dns/views/registrar.py,sha256=Um_2wnzmP2bqbdMUhBPhny2My0R8fMXScQ9GLiTCrvg,2808
|
|
142
170
|
netbox_dns/views/registration_contact.py,sha256=c9KrNkfFNsb55pL74A5rN1CNx32M82V6mdwBYduNxas,3596
|
|
143
171
|
netbox_dns/views/view.py,sha256=VfrKaLC9D_KNZNmRyFVohRlmMlMbtblAuPgNg0LNyf8,3421
|
|
144
|
-
netbox_dns/views/zone.py,sha256=
|
|
172
|
+
netbox_dns/views/zone.py,sha256=DU_esPOMHGMRQIgy5vS8miZe-FNozBcIyMLZPwZK4_c,7453
|
|
145
173
|
netbox_dns/views/zone_template.py,sha256=IIW1lr6RQmhShtqJu6A6LnHdxdBrkkZQHxIDSTqQeyc,2705
|
|
146
|
-
netbox_plugin_dns-1.2.
|
|
147
|
-
netbox_plugin_dns-1.2.
|
|
148
|
-
netbox_plugin_dns-1.2.
|
|
149
|
-
netbox_plugin_dns-1.2.
|
|
150
|
-
netbox_plugin_dns-1.2.
|
|
174
|
+
netbox_plugin_dns-1.2.7.dist-info/licenses/LICENSE,sha256=I3tDu11bZfhFm3EkV4zOD5TmWgLjnUNLEFwrdjniZYs,1112
|
|
175
|
+
netbox_plugin_dns-1.2.7.dist-info/METADATA,sha256=4O-jOmeTRrhbeg2y_qoB5LX4nqkAIv1dBOqLB1VKWcc,7658
|
|
176
|
+
netbox_plugin_dns-1.2.7.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
177
|
+
netbox_plugin_dns-1.2.7.dist-info/top_level.txt,sha256=sA1Rwl1mRKvMC6XHe2ylZ1GF-Q1NGd08XedK9Y4xZc4,11
|
|
178
|
+
netbox_plugin_dns-1.2.7.dist-info/RECORD,,
|
|
File without changes
|