netbox-plugin-dns 1.0.6__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of netbox-plugin-dns might be problematic. Click here for more details.
- netbox_dns/__init__.py +23 -4
- netbox_dns/api/nested_serializers.py +17 -16
- netbox_dns/api/serializers.py +2 -1
- netbox_dns/api/serializers_/prefix.py +18 -0
- netbox_dns/api/serializers_/record.py +1 -0
- netbox_dns/api/serializers_/{contact.py → registration_contact.py} +5 -5
- netbox_dns/api/serializers_/view.py +34 -2
- netbox_dns/api/serializers_/zone.py +5 -5
- netbox_dns/api/serializers_/zone_template.py +5 -5
- netbox_dns/api/urls.py +5 -2
- netbox_dns/api/views.py +17 -35
- netbox_dns/fields/__init__.py +1 -0
- netbox_dns/fields/ipam.py +15 -0
- netbox_dns/filtersets/__init__.py +1 -1
- netbox_dns/filtersets/record.py +1 -1
- netbox_dns/filtersets/{contact.py → registration_contact.py} +4 -4
- netbox_dns/filtersets/view.py +16 -0
- netbox_dns/filtersets/zone.py +15 -15
- netbox_dns/filtersets/zone_template.py +15 -15
- netbox_dns/forms/__init__.py +1 -1
- netbox_dns/forms/{contact.py → registration_contact.py} +16 -16
- netbox_dns/forms/view.py +204 -4
- netbox_dns/forms/zone.py +15 -18
- netbox_dns/forms/zone_template.py +13 -13
- netbox_dns/graphql/__init__.py +2 -2
- netbox_dns/graphql/filters.py +5 -5
- netbox_dns/graphql/schema.py +24 -44
- netbox_dns/graphql/types.py +41 -12
- netbox_dns/management/commands/rebuild_dnssync.py +18 -0
- netbox_dns/management/commands/setup_dnssync.py +140 -0
- netbox_dns/migrations/0007_alter_ordering_options.py +25 -0
- netbox_dns/migrations/0008_view_prefixes.py +18 -0
- netbox_dns/migrations/0009_rename_contact_registrationcontact.py +27 -0
- netbox_dns/models/__init__.py +1 -3
- netbox_dns/models/nameserver.py +8 -3
- netbox_dns/models/record.py +154 -24
- netbox_dns/models/record_template.py +4 -1
- netbox_dns/models/registrar.py +7 -1
- netbox_dns/models/{contact.py → registration_contact.py} +15 -9
- netbox_dns/models/view.py +14 -2
- netbox_dns/models/zone.py +76 -35
- netbox_dns/models/zone_template.py +12 -9
- netbox_dns/navigation.py +7 -7
- netbox_dns/signals/ipam_dnssync.py +224 -0
- netbox_dns/tables/__init__.py +1 -1
- netbox_dns/tables/ipam_dnssync.py +11 -0
- netbox_dns/tables/nameserver.py +1 -7
- netbox_dns/tables/record.py +43 -30
- netbox_dns/tables/record_template.py +0 -17
- netbox_dns/tables/registrar.py +0 -2
- netbox_dns/tables/{contact.py → registration_contact.py} +5 -6
- netbox_dns/tables/view.py +19 -4
- netbox_dns/tables/zone.py +0 -15
- netbox_dns/tables/zone_template.py +2 -16
- netbox_dns/template_content.py +41 -40
- netbox_dns/templates/netbox_dns/record.html +6 -6
- netbox_dns/templates/netbox_dns/{contact.html → registrationcontact.html} +1 -1
- netbox_dns/templates/netbox_dns/view/button.html +9 -0
- netbox_dns/templates/netbox_dns/view/prefix.html +41 -0
- netbox_dns/templates/netbox_dns/view/related.html +17 -0
- netbox_dns/templates/netbox_dns/view.html +25 -0
- netbox_dns/urls/__init__.py +2 -2
- netbox_dns/urls/nameserver.py +14 -38
- netbox_dns/urls/record.py +7 -19
- netbox_dns/urls/record_template.py +18 -27
- netbox_dns/urls/registrar.py +11 -35
- netbox_dns/urls/registration_contact.py +60 -0
- netbox_dns/urls/view.py +12 -20
- netbox_dns/urls/zone.py +8 -46
- netbox_dns/urls/zone_template.py +16 -26
- netbox_dns/utilities/__init__.py +2 -74
- netbox_dns/utilities/conversions.py +83 -0
- netbox_dns/utilities/ipam_dnssync.py +295 -0
- netbox_dns/validators/dns_name.py +9 -0
- netbox_dns/views/__init__.py +1 -1
- netbox_dns/views/nameserver.py +7 -3
- netbox_dns/views/record.py +12 -7
- netbox_dns/views/record_template.py +1 -1
- netbox_dns/views/registrar.py +0 -1
- netbox_dns/views/registration_contact.py +94 -0
- netbox_dns/views/view.py +32 -2
- netbox_dns/views/zone.py +7 -6
- netbox_dns/views/zone_template.py +2 -2
- {netbox_plugin_dns-1.0.6.dist-info → netbox_plugin_dns-1.1.0.dist-info}/METADATA +2 -1
- netbox_plugin_dns-1.1.0.dist-info/RECORD +146 -0
- netbox_dns/management/commands/setup_coupling.py +0 -109
- netbox_dns/signals/ipam_coupling.py +0 -168
- netbox_dns/templates/netbox_dns/related_dns_objects.html +0 -21
- netbox_dns/urls/contact.py +0 -51
- netbox_dns/utilities/ipam_coupling.py +0 -112
- netbox_dns/views/contact.py +0 -95
- netbox_plugin_dns-1.0.6.dist-info/RECORD +0 -136
- {netbox_plugin_dns-1.0.6.dist-info → netbox_plugin_dns-1.1.0.dist-info}/LICENSE +0 -0
- {netbox_plugin_dns-1.0.6.dist-info → netbox_plugin_dns-1.1.0.dist-info}/WHEEL +0 -0
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
from django.dispatch import receiver
|
|
2
|
-
from django.db.models.signals import pre_save, post_save, pre_delete
|
|
3
|
-
from django.core.exceptions import ValidationError, PermissionDenied
|
|
4
|
-
from rest_framework.exceptions import PermissionDenied as APIPermissionDenied
|
|
5
|
-
|
|
6
|
-
from netbox.signals import post_clean
|
|
7
|
-
from netbox.context import current_request
|
|
8
|
-
from netbox.plugins.utils import get_plugin_config
|
|
9
|
-
from ipam.models import IPAddress
|
|
10
|
-
|
|
11
|
-
from netbox_dns.models import Zone
|
|
12
|
-
from netbox_dns.utilities.ipam_coupling import (
|
|
13
|
-
ipaddress_cf_data,
|
|
14
|
-
get_address_record,
|
|
15
|
-
new_address_record,
|
|
16
|
-
update_address_record,
|
|
17
|
-
check_permission,
|
|
18
|
-
dns_changed,
|
|
19
|
-
DNSPermissionDenied,
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
@receiver(post_clean, sender=IPAddress)
|
|
24
|
-
def ip_address_check_permissions_save(instance, **kwargs):
|
|
25
|
-
if not instance.address:
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
if not get_plugin_config("netbox_dns", "feature_ipam_coupling"):
|
|
29
|
-
return
|
|
30
|
-
|
|
31
|
-
request = current_request.get()
|
|
32
|
-
if request is None:
|
|
33
|
-
return
|
|
34
|
-
|
|
35
|
-
try:
|
|
36
|
-
if instance.pk is None:
|
|
37
|
-
record = new_address_record(instance)
|
|
38
|
-
if record is not None:
|
|
39
|
-
record.full_clean()
|
|
40
|
-
check_permission(request, "netbox_dns.add_record", record)
|
|
41
|
-
|
|
42
|
-
else:
|
|
43
|
-
if not dns_changed(IPAddress.objects.get(pk=instance.pk), instance):
|
|
44
|
-
return
|
|
45
|
-
|
|
46
|
-
record = get_address_record(instance)
|
|
47
|
-
if record is not None:
|
|
48
|
-
name, ttl, disable_ptr, zone_id = ipaddress_cf_data(instance)
|
|
49
|
-
if zone_id is not None:
|
|
50
|
-
update_address_record(record, instance)
|
|
51
|
-
record.full_clean()
|
|
52
|
-
check_permission(request, "netbox_dns.change_record", record)
|
|
53
|
-
else:
|
|
54
|
-
check_permission(request, "netbox_dns.delete_record", record)
|
|
55
|
-
|
|
56
|
-
else:
|
|
57
|
-
record = new_address_record(instance)
|
|
58
|
-
if record is not None:
|
|
59
|
-
record.full_clean()
|
|
60
|
-
check_permission(request, "netbox_dns.add_record", record)
|
|
61
|
-
|
|
62
|
-
except ValidationError as exc:
|
|
63
|
-
if hasattr(exc, "error_dict"):
|
|
64
|
-
value = exc.error_dict.pop("name", None)
|
|
65
|
-
if value is not None:
|
|
66
|
-
exc.error_dict["cf_ipaddress_dns_record_name"] = value
|
|
67
|
-
|
|
68
|
-
value = exc.error_dict.pop("ttl", None)
|
|
69
|
-
if value is not None:
|
|
70
|
-
exc.error_dict["cf_ipaddress_dns_record_ttl"] = value
|
|
71
|
-
|
|
72
|
-
value = exc.error_dict.pop("value", None)
|
|
73
|
-
if value is not None:
|
|
74
|
-
exc.error_dict["cf_ipaddress_dns_record_name"] = value
|
|
75
|
-
|
|
76
|
-
value = exc.error_dict.pop("type", None)
|
|
77
|
-
if value is not None:
|
|
78
|
-
exc.error_dict["cf_ipaddress_dns_record_name"] = value
|
|
79
|
-
|
|
80
|
-
raise ValidationError(exc)
|
|
81
|
-
|
|
82
|
-
except DNSPermissionDenied as exc:
|
|
83
|
-
raise ValidationError(exc)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
@receiver(pre_delete, sender=IPAddress)
|
|
87
|
-
def ip_address_delete_address_record(instance, **kwargs):
|
|
88
|
-
if not get_plugin_config("netbox_dns", "feature_ipam_coupling"):
|
|
89
|
-
return
|
|
90
|
-
|
|
91
|
-
request = current_request.get()
|
|
92
|
-
if request is not None:
|
|
93
|
-
try:
|
|
94
|
-
for record in instance.netbox_dns_records.all():
|
|
95
|
-
check_permission(request, "netbox_dns.delete_record", record)
|
|
96
|
-
|
|
97
|
-
except DNSPermissionDenied as exc:
|
|
98
|
-
if request.path_info.startswith("/api/"):
|
|
99
|
-
raise APIPermissionDenied(exc) from None
|
|
100
|
-
|
|
101
|
-
raise PermissionDenied(exc) from None
|
|
102
|
-
|
|
103
|
-
for record in instance.netbox_dns_records.all():
|
|
104
|
-
record.delete()
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
#
|
|
108
|
-
# Update DNS related fields according to the contents of the IPAM-DNS
|
|
109
|
-
# coupling custom fields.
|
|
110
|
-
#
|
|
111
|
-
@receiver(pre_save, sender=IPAddress)
|
|
112
|
-
def ip_address_update_dns_information(instance, **kwargs):
|
|
113
|
-
if not get_plugin_config("netbox_dns", "feature_ipam_coupling"):
|
|
114
|
-
return
|
|
115
|
-
|
|
116
|
-
name, ttl, disable_ptr, zone_id = ipaddress_cf_data(instance)
|
|
117
|
-
|
|
118
|
-
previous_zone_id = None
|
|
119
|
-
if instance.pk is not None:
|
|
120
|
-
try:
|
|
121
|
-
old_instance = IPAddress.objects.get(pk=instance.pk)
|
|
122
|
-
previous_zone_id = old_instance.custom_field_data.get(
|
|
123
|
-
"ipaddress_dns_zone_id"
|
|
124
|
-
)
|
|
125
|
-
except IPAddress.DoesNotExist:
|
|
126
|
-
pass
|
|
127
|
-
|
|
128
|
-
if zone_id is not None:
|
|
129
|
-
instance.dns_name = f"{name}.{Zone.objects.get(pk=zone_id).name}"
|
|
130
|
-
else:
|
|
131
|
-
instance.custom_field_data["ipaddress_dns_record_name"] = None
|
|
132
|
-
instance.custom_field_data["ipaddress_dns_record_ttl"] = None
|
|
133
|
-
instance.custom_field_data["ipaddress_dns_record_disable_ptr"] = False
|
|
134
|
-
instance.custom_field_data["ipaddress_dns_zone_id"] = None
|
|
135
|
-
|
|
136
|
-
if previous_zone_id is not None:
|
|
137
|
-
instance.dns_name = ""
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
#
|
|
141
|
-
# Handle DNS record operation after IPAddress has been created or modified
|
|
142
|
-
#
|
|
143
|
-
@receiver(post_save, sender=IPAddress)
|
|
144
|
-
def ip_address_update_address_record(instance, **kwargs):
|
|
145
|
-
if not get_plugin_config("netbox_dns", "feature_ipam_coupling"):
|
|
146
|
-
return
|
|
147
|
-
|
|
148
|
-
name, ttl, disable_ptr, zone_id = ipaddress_cf_data(instance)
|
|
149
|
-
|
|
150
|
-
if zone_id is None:
|
|
151
|
-
#
|
|
152
|
-
# Name/Zone CF data has been removed: Remove the DNS address record
|
|
153
|
-
#
|
|
154
|
-
for record in instance.netbox_dns_records.all():
|
|
155
|
-
record.delete()
|
|
156
|
-
|
|
157
|
-
else:
|
|
158
|
-
#
|
|
159
|
-
# Name/Zone CF data is present: Check for a DNS address record and add
|
|
160
|
-
# or modify it as necessary
|
|
161
|
-
#
|
|
162
|
-
record = get_address_record(instance)
|
|
163
|
-
if record is None:
|
|
164
|
-
record = new_address_record(instance)
|
|
165
|
-
else:
|
|
166
|
-
update_address_record(record, instance)
|
|
167
|
-
|
|
168
|
-
record.save()
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{% load helpers %}
|
|
2
|
-
|
|
3
|
-
<div class="card">
|
|
4
|
-
<h5 class="card-header">Related NetBox DNS Objects</h5>
|
|
5
|
-
<ul class="list-group list-group-flush">
|
|
6
|
-
{% for qs, filter_param in related_dns_models %}
|
|
7
|
-
{% with viewname=qs.model|viewname:"list" %}
|
|
8
|
-
<a href="{% url viewname %}?{{ filter_param }}={{ object.pk }}" class="list-group-item list-group-item-action d-flex justify-content-between">
|
|
9
|
-
{{ qs.model|meta:"verbose_name_plural"|bettertitle }}
|
|
10
|
-
{% with count=qs.count %}
|
|
11
|
-
{% if count %}
|
|
12
|
-
<span class="badge bg-primary rounded-pill">{{ count }}</span>
|
|
13
|
-
{% else %}
|
|
14
|
-
<span class="badge bg-light rounded-pill">—</span>
|
|
15
|
-
{% endif %}
|
|
16
|
-
{% endwith %}
|
|
17
|
-
</a>
|
|
18
|
-
{% endwith %}
|
|
19
|
-
{% endfor %}
|
|
20
|
-
</ul>
|
|
21
|
-
</div>
|
netbox_dns/urls/contact.py
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
from django.urls import path
|
|
2
|
-
|
|
3
|
-
from netbox.views.generic import ObjectChangeLogView, ObjectJournalView
|
|
4
|
-
|
|
5
|
-
from netbox_dns.models import Contact
|
|
6
|
-
from netbox_dns.views import (
|
|
7
|
-
ContactListView,
|
|
8
|
-
ContactView,
|
|
9
|
-
ContactDeleteView,
|
|
10
|
-
ContactEditView,
|
|
11
|
-
ContactBulkImportView,
|
|
12
|
-
ContactBulkEditView,
|
|
13
|
-
ContactBulkDeleteView,
|
|
14
|
-
ContactZoneListView,
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
contact_urlpatterns = [
|
|
18
|
-
path("contacts/", ContactListView.as_view(), name="contact_list"),
|
|
19
|
-
path("contacts/add/", ContactEditView.as_view(), name="contact_add"),
|
|
20
|
-
path("contacts/import/", ContactBulkImportView.as_view(), name="contact_import"),
|
|
21
|
-
path("contacts/edit/", ContactBulkEditView.as_view(), name="contact_bulk_edit"),
|
|
22
|
-
path(
|
|
23
|
-
"contacts/delete/",
|
|
24
|
-
ContactBulkDeleteView.as_view(),
|
|
25
|
-
name="contact_bulk_delete",
|
|
26
|
-
),
|
|
27
|
-
path("contacts/<int:pk>/", ContactView.as_view(), name="contact"),
|
|
28
|
-
path("contacts/<int:pk>/edit/", ContactEditView.as_view(), name="contact_edit"),
|
|
29
|
-
path(
|
|
30
|
-
"contacts/<int:pk>/delete/",
|
|
31
|
-
ContactDeleteView.as_view(),
|
|
32
|
-
name="contact_delete",
|
|
33
|
-
),
|
|
34
|
-
path(
|
|
35
|
-
"contacts/<int:pk>/zones/",
|
|
36
|
-
ContactZoneListView.as_view(),
|
|
37
|
-
name="contact_zones",
|
|
38
|
-
),
|
|
39
|
-
path(
|
|
40
|
-
"contacts/<int:pk>/journal/",
|
|
41
|
-
ObjectJournalView.as_view(),
|
|
42
|
-
name="contact_journal",
|
|
43
|
-
kwargs={"model": Contact},
|
|
44
|
-
),
|
|
45
|
-
path(
|
|
46
|
-
"contacts/<int:pk>/changelog/",
|
|
47
|
-
ObjectChangeLogView.as_view(),
|
|
48
|
-
name="contact_changelog",
|
|
49
|
-
kwargs={"model": Contact},
|
|
50
|
-
),
|
|
51
|
-
]
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
from ipam.choices import IPAddressStatusChoices
|
|
2
|
-
from utilities.permissions import resolve_permission
|
|
3
|
-
|
|
4
|
-
from netbox_dns.models import Record
|
|
5
|
-
from netbox_dns.choices import RecordTypeChoices, RecordStatusChoices
|
|
6
|
-
|
|
7
|
-
from netbox.plugins.utils import get_plugin_config
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class DNSPermissionDenied(Exception):
|
|
11
|
-
pass
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def ipaddress_cf_data(ip_address):
|
|
15
|
-
name = ip_address.custom_field_data.get("ipaddress_dns_record_name")
|
|
16
|
-
ttl = ip_address.custom_field_data.get("ipaddress_dns_record_ttl")
|
|
17
|
-
disable_ptr = ip_address.custom_field_data.get("ipaddress_dns_record_disable_ptr")
|
|
18
|
-
if disable_ptr is None:
|
|
19
|
-
disable_ptr = False
|
|
20
|
-
zone_id = ip_address.custom_field_data.get("ipaddress_dns_zone_id")
|
|
21
|
-
|
|
22
|
-
if name is None or zone_id is None:
|
|
23
|
-
return None, None, False, None
|
|
24
|
-
|
|
25
|
-
return name, ttl, disable_ptr, zone_id
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def address_record_type(ip_address):
|
|
29
|
-
return RecordTypeChoices.AAAA if ip_address.family == 6 else RecordTypeChoices.A
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def address_record_status(ip_address):
|
|
33
|
-
ip_active_status_list = get_plugin_config(
|
|
34
|
-
"netbox_dns",
|
|
35
|
-
"ipam_coupling_ip_active_status_list",
|
|
36
|
-
(
|
|
37
|
-
IPAddressStatusChoices.STATUS_ACTIVE,
|
|
38
|
-
IPAddressStatusChoices.STATUS_DHCP,
|
|
39
|
-
IPAddressStatusChoices.STATUS_SLAAC,
|
|
40
|
-
),
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
return (
|
|
44
|
-
RecordStatusChoices.STATUS_ACTIVE
|
|
45
|
-
if ip_address.status in ip_active_status_list
|
|
46
|
-
else RecordStatusChoices.STATUS_INACTIVE
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
def get_address_record(ip_address):
|
|
51
|
-
return ip_address.netbox_dns_records.first()
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def new_address_record(instance):
|
|
55
|
-
name, ttl, disable_ptr, zone_id = ipaddress_cf_data(instance)
|
|
56
|
-
|
|
57
|
-
if zone_id is None:
|
|
58
|
-
return None
|
|
59
|
-
|
|
60
|
-
return Record(
|
|
61
|
-
name=name,
|
|
62
|
-
zone_id=zone_id,
|
|
63
|
-
ttl=ttl,
|
|
64
|
-
disable_ptr=disable_ptr,
|
|
65
|
-
status=address_record_status(instance),
|
|
66
|
-
type=address_record_type(instance),
|
|
67
|
-
value=str(instance.address.ip),
|
|
68
|
-
ipam_ip_address_id=instance.pk,
|
|
69
|
-
managed=True,
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def update_address_record(record, ip_address):
|
|
74
|
-
name, ttl, disable_ptr, zone_id = ipaddress_cf_data(ip_address)
|
|
75
|
-
|
|
76
|
-
record.name = name
|
|
77
|
-
record.ttl = ttl
|
|
78
|
-
record.disable_ptr = disable_ptr
|
|
79
|
-
record.zone_id = zone_id
|
|
80
|
-
record.status = address_record_status(ip_address)
|
|
81
|
-
record.value = str(ip_address.address.ip)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def check_permission(request, permission, record=None):
|
|
85
|
-
if record is not None and record.pk is None:
|
|
86
|
-
check_record = None
|
|
87
|
-
else:
|
|
88
|
-
check_record = record
|
|
89
|
-
|
|
90
|
-
user = request.user
|
|
91
|
-
|
|
92
|
-
if not user.has_perm(permission, check_record):
|
|
93
|
-
action = resolve_permission(permission)[1]
|
|
94
|
-
item = "records" if check_record is None else f"record {check_record}"
|
|
95
|
-
|
|
96
|
-
raise DNSPermissionDenied(f"User {user} is not allowed to {action} DNS {item}")
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
def dns_changed(old, new):
|
|
100
|
-
return any(
|
|
101
|
-
(
|
|
102
|
-
old.address.ip != new.address.ip,
|
|
103
|
-
old.custom_field_data.get("ipaddress_dns_record_name")
|
|
104
|
-
!= new.custom_field_data.get("ipaddress_dns_record_name"),
|
|
105
|
-
old.custom_field_data.get("ipaddress_dns_record_ttl")
|
|
106
|
-
!= new.custom_field_data.get("ipaddress_dns_record_ttl"),
|
|
107
|
-
old.custom_field_data.get("ipaddress_dns_record_disable_ptr")
|
|
108
|
-
!= new.custom_field_data.get("ipaddress_dns_record_disable_ptr"),
|
|
109
|
-
old.custom_field_data.get("ipaddress_dns_zone_id")
|
|
110
|
-
!= new.custom_field_data.get("ipaddress_dns_zone_id"),
|
|
111
|
-
)
|
|
112
|
-
)
|
netbox_dns/views/contact.py
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
from django.db.models import Q
|
|
2
|
-
|
|
3
|
-
from netbox.views import generic
|
|
4
|
-
|
|
5
|
-
from utilities.views import ViewTab, register_model_view
|
|
6
|
-
|
|
7
|
-
from netbox_dns.models import Contact, Zone
|
|
8
|
-
from netbox_dns.filtersets import ContactFilterSet, ZoneFilterSet
|
|
9
|
-
from netbox_dns.forms import (
|
|
10
|
-
ContactForm,
|
|
11
|
-
ContactFilterForm,
|
|
12
|
-
ContactImportForm,
|
|
13
|
-
ContactBulkEditForm,
|
|
14
|
-
)
|
|
15
|
-
from netbox_dns.tables import ContactTable, ZoneTable
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
__all__ = (
|
|
19
|
-
"ContactView",
|
|
20
|
-
"ContactEditView",
|
|
21
|
-
"ContactListView",
|
|
22
|
-
"ContactDeleteView",
|
|
23
|
-
"ContactBulkImportView",
|
|
24
|
-
"ContactBulkEditView",
|
|
25
|
-
"ContactBulkDeleteView",
|
|
26
|
-
"ContactZoneListView",
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class ContactView(generic.ObjectView):
|
|
31
|
-
queryset = Contact.objects.all()
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class ContactListView(generic.ObjectListView):
|
|
35
|
-
queryset = Contact.objects.all()
|
|
36
|
-
table = ContactTable
|
|
37
|
-
filterset = ContactFilterSet
|
|
38
|
-
filterset_form = ContactFilterForm
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class ContactEditView(generic.ObjectEditView):
|
|
42
|
-
queryset = Contact.objects.all()
|
|
43
|
-
form = ContactForm
|
|
44
|
-
default_return_url = "plugins:netbox_dns:contact_list"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
class ContactDeleteView(generic.ObjectDeleteView):
|
|
48
|
-
queryset = Contact.objects.all()
|
|
49
|
-
default_return_url = "plugins:netbox_dns:contact_list"
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
class ContactBulkImportView(generic.BulkImportView):
|
|
53
|
-
queryset = Contact.objects.all()
|
|
54
|
-
model_form = ContactImportForm
|
|
55
|
-
table = ContactTable
|
|
56
|
-
default_return_url = "plugins:netbox_dns:contact_list"
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
class ContactBulkEditView(generic.BulkEditView):
|
|
60
|
-
queryset = Contact.objects.all()
|
|
61
|
-
filterset = ContactFilterSet
|
|
62
|
-
table = ContactTable
|
|
63
|
-
form = ContactBulkEditForm
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
class ContactBulkDeleteView(generic.BulkDeleteView):
|
|
67
|
-
queryset = Contact.objects.all()
|
|
68
|
-
table = ContactTable
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
@register_model_view(Contact, "zones")
|
|
72
|
-
class ContactZoneListView(generic.ObjectChildrenView):
|
|
73
|
-
queryset = Contact.objects.all().prefetch_related(
|
|
74
|
-
"zone_set", "admin_c_zones", "tech_c_zones", "billing_c_zones"
|
|
75
|
-
)
|
|
76
|
-
child_model = Zone
|
|
77
|
-
table = ZoneTable
|
|
78
|
-
filterset = ZoneFilterSet
|
|
79
|
-
template_name = "netbox_dns/zone/child.html"
|
|
80
|
-
hide_if_empty = True
|
|
81
|
-
|
|
82
|
-
tab = ViewTab(
|
|
83
|
-
label="Zones",
|
|
84
|
-
permission="netbox_dns.view_zone",
|
|
85
|
-
badge=lambda obj: len(obj.zones),
|
|
86
|
-
hide_if_empty=True,
|
|
87
|
-
)
|
|
88
|
-
|
|
89
|
-
def get_children(self, request, parent):
|
|
90
|
-
return Zone.objects.filter(
|
|
91
|
-
Q(registrant=parent)
|
|
92
|
-
| Q(admin_c=parent)
|
|
93
|
-
| Q(tech_c=parent)
|
|
94
|
-
| Q(billing_c=parent)
|
|
95
|
-
)
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
netbox_dns/__init__.py,sha256=R7EsMEVSGjdhYRLMjQwatM9b_7KzSMAu5M9nHN7-FTA,1244
|
|
2
|
-
netbox_dns/api/nested_serializers.py,sha256=-ZhAiyf-8UHlkcBomBp1J7ci1dSwrxWRbbfskD-D_yQ,3172
|
|
3
|
-
netbox_dns/api/serializers.py,sha256=WNs7_Inr4veHXUHXmORBjHilrVIzSUi5zPiOCtzQZSU,335
|
|
4
|
-
netbox_dns/api/serializers_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
netbox_dns/api/serializers_/contact.py,sha256=5fAdHfjBGIh4686tvgPejhW5Di46LNzIYVvAGeFDq0c,964
|
|
6
|
-
netbox_dns/api/serializers_/nameserver.py,sha256=PlpVsai24O73B-ZQ4wSaSC0_m_LCtQETDRSUYDb1xGw,1118
|
|
7
|
-
netbox_dns/api/serializers_/record.py,sha256=QAUzU5GXDadOgfug9ApYQ4fw-pztAZSG02LH1UoBNgY,2293
|
|
8
|
-
netbox_dns/api/serializers_/record_template.py,sha256=qh-g-_f6M-eU4GzN-l0nPxiNBpZyYBgib26HwfOMtUc,1466
|
|
9
|
-
netbox_dns/api/serializers_/registrar.py,sha256=xLIaeBJ5ckV1Jf-uyCTFcvsLlsRMlpDtIg6q79vXZic,842
|
|
10
|
-
netbox_dns/api/serializers_/view.py,sha256=tkv7KD6FJH1_AwPljx2vVJThO0Xb4OcCmlc9E8E4bhQ,950
|
|
11
|
-
netbox_dns/api/serializers_/zone.py,sha256=ZOCNHNufPK8T9UKKjT4NcIyfb1zwG7gD6TpPTlMHi0k,4862
|
|
12
|
-
netbox_dns/api/serializers_/zone_template.py,sha256=usx0vRsqRqHP6sqB92fQy3VTjIfjYflULTtQhQksSpk,3709
|
|
13
|
-
netbox_dns/api/urls.py,sha256=hrqu6VnN6313DjYIOuZih-afSnedIPsSaqjcva45DiI,739
|
|
14
|
-
netbox_dns/api/views.py,sha256=esRLAeMJ-y0oNRNC8NJ2SgGzj3qdoAAY6zYm_Z0t5TM,4632
|
|
15
|
-
netbox_dns/apps.py,sha256=JCW5eS-AQBUubDJve1DjP-IRFKTFGQh1NLGWzJpC5MI,151
|
|
16
|
-
netbox_dns/choices/__init__.py,sha256=jOVs2VGV5SVADRlqVnrFeAy26i8BIeEAbGpiX7K8bL8,42
|
|
17
|
-
netbox_dns/choices/record.py,sha256=IYW_g1ZvuNX2ZlRLOkurcrdfWgcXNpi2gQzRfX5C0lY,1113
|
|
18
|
-
netbox_dns/choices/zone.py,sha256=u0zt03gTkeo_und0VxaTTCh3GIFv6UxtUIhoe3VJ00A,472
|
|
19
|
-
netbox_dns/fields/__init__.py,sha256=egA6gLQ4SPYacECcYU4Vl_P7TbzLOMRfaX6rw3k26YA,69
|
|
20
|
-
netbox_dns/fields/address.py,sha256=DJwc-z5Lg6US85gNIB_Chx7ahs1GYNswdhaXkLiK3jA,1554
|
|
21
|
-
netbox_dns/fields/network.py,sha256=FgKEm5DAe_4D7Fubtj8B4SwfU3-Z9KV7kDIzRNpBBnQ,3682
|
|
22
|
-
netbox_dns/fields/rfc2317.py,sha256=24qNNLbI-SGlsKqGaLNaVk8EHFrju65YTET3O-8XgTc,2571
|
|
23
|
-
netbox_dns/filtersets/__init__.py,sha256=zvHYWy23FFmK4vxLpoMo-OD5OQBtcTUV_HG-5LCtvQE,197
|
|
24
|
-
netbox_dns/filtersets/contact.py,sha256=VnlNX6dyUlEbj7tz9cgRKSWQOdg7OqP32cD2IyD5hu8,1091
|
|
25
|
-
netbox_dns/filtersets/nameserver.py,sha256=I7RoIUcgXyIoMrhuS0dJr8uPi0AdNj6D3G6t2oSiQ7s,1147
|
|
26
|
-
netbox_dns/filtersets/record.py,sha256=nr-oLCnaceiQua5tL-_teYj54X-VMXQeYihbCjykaJY,3750
|
|
27
|
-
netbox_dns/filtersets/record_template.py,sha256=jGSjGFEnNSoxtUd7diV8wEhw8qZclz2dKLSqyVC7Djo,1548
|
|
28
|
-
netbox_dns/filtersets/registrar.py,sha256=Wh_l-IXRHnJhW7Pyokp3czQZISDKzXnWeSQKp512Drc,977
|
|
29
|
-
netbox_dns/filtersets/view.py,sha256=IbQ6ceeUHoXKTczDhLTiwwUMNrFBNhgDzEr9zHRZT7k,552
|
|
30
|
-
netbox_dns/filtersets/zone.py,sha256=lKEHNkg7v_y7gb07swwaUTSfx7MPKvpEl4VcxEVazYY,6594
|
|
31
|
-
netbox_dns/filtersets/zone_template.py,sha256=P1G3NG3NFzw5lSaJErZltSSKNcC_WztTNXpU7PtS4SI,3670
|
|
32
|
-
netbox_dns/forms/__init__.py,sha256=s41w4o77tIwmhnLjsOsg08R9m3wrlomkkfCLTVQuPzc,196
|
|
33
|
-
netbox_dns/forms/contact.py,sha256=7BdDDqusswGolzrKpOdWvlvy_UPmm-_EN_F46fNnt9E,5332
|
|
34
|
-
netbox_dns/forms/nameserver.py,sha256=LHomCHmFcASobaD3Z7yhAyA24h-LrYImVMz-EUXbwK4,2836
|
|
35
|
-
netbox_dns/forms/record.py,sha256=svBVAFy-egDEPLcRWkxNi_1bkabKmWgJ87pmdNt6dh4,7155
|
|
36
|
-
netbox_dns/forms/record_template.py,sha256=Q77p9sExJ8Xbl-Co2Px2R0At5O3naQJwx4pnino6i2o,5573
|
|
37
|
-
netbox_dns/forms/registrar.py,sha256=FMnvrcq62R3wNp_2ZUEk3v_PIav0KrWPATaJ7_9KFAo,3758
|
|
38
|
-
netbox_dns/forms/view.py,sha256=4Uuh514WPb-9M8XOCsdqSm0ayzD2ZymnLSqFn8obSLw,2273
|
|
39
|
-
netbox_dns/forms/zone.py,sha256=17Ii2csnYquuz7HGgaK36ZgOzWnFXFeh1IQYvWnBKC0,23537
|
|
40
|
-
netbox_dns/forms/zone_template.py,sha256=UNykid5pRB_ydy40j2DzRlBXp3_QAOqdqxdUojKYTd4,8161
|
|
41
|
-
netbox_dns/graphql/__init__.py,sha256=ZZSsx-VM108tB_FrcVy3uGGhtmePpkXnY5U1ytnoTvE,490
|
|
42
|
-
netbox_dns/graphql/filters.py,sha256=6Ot_d1e7h5lVXVVBB3hyWUql94K3zsK9Tjb3RVJqluw,1706
|
|
43
|
-
netbox_dns/graphql/schema.py,sha256=P-oQ8ei3sC6XLhgCa_riRbRTrMkPCVTJXkGv0U2rPYw,2682
|
|
44
|
-
netbox_dns/graphql/types.py,sha256=q0gtXhhM_MzBb1zBzXA5gopnuL4szuzXRTTAvOhPz-Y,6025
|
|
45
|
-
netbox_dns/management/commands/cleanup_database.py,sha256=kfnyybudwKGigjJmrOwafPWSUasZr9jQsxN4eWAgMvY,5969
|
|
46
|
-
netbox_dns/management/commands/cleanup_rrset_ttl.py,sha256=UFRURLBcFeGHUS2lrYFv7UWIebjI72aG1EUQJt0XsXw,2046
|
|
47
|
-
netbox_dns/management/commands/setup_coupling.py,sha256=1cUxDvHoX1UebgyCsbrLqIccuXhE8tkvyhW8dofIyr4,4556
|
|
48
|
-
netbox_dns/management/commands/update_soa.py,sha256=Rj_Xk-qpwkAVRubVnM5OqSTwgzi93E0PqjwGb3rYjf0,660
|
|
49
|
-
netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py,sha256=3U0810NWSHPu2dTSHpfzlleDgwMS04FhJ_CkO76SDaw,10283
|
|
50
|
-
netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py,sha256=ML6Hp17lrXiaG0eUlBjKMm6HUNhw0AHPnKrb9AN-F6E,20279
|
|
51
|
-
netbox_dns/migrations/0002_contact_description_registrar_description.py,sha256=ZrI-L3jJ5GzdVx21pomgM4waE-njixHQjl_grjsGr0I,583
|
|
52
|
-
netbox_dns/migrations/0003_default_view.py,sha256=NByVlAyiiK6WCfJ014BiFPkoNcHeqr1IpkgNdHiwbWw,367
|
|
53
|
-
netbox_dns/migrations/0004_create_and_assign_default_view.py,sha256=npBFxWuJCZeMhbZLEH9C_sZcQZRaa3IOlyn4p_GULyk,627
|
|
54
|
-
netbox_dns/migrations/0005_alter_zone_view_not_null.py,sha256=vUfCFD-qeh5M1WCqtE1eYHXZwQVCcf841Z2-0CdcMRI,463
|
|
55
|
-
netbox_dns/migrations/0006_templating.py,sha256=7MOZ2bLwkjK1BQCBPBaFWJ-mS_JNrok1XUSh4rriq9Y,6271
|
|
56
|
-
netbox_dns/migrations/0020_netbox_3_4.py,sha256=UMcHdn8ZAuQjUaM_3rEGpktYrM0TuvhccD7Jt7WQnPs,1271
|
|
57
|
-
netbox_dns/migrations/0021_record_ip_address.py,sha256=EqdhWXmq7aiK4X79xTRUZng3zFncCl-8JoO65HqlJKw,3244
|
|
58
|
-
netbox_dns/migrations/0022_search.py,sha256=KW1ffEZ4-0dppGQ_KD1EN7iw8eQJOnDco-xfJFRZqKQ,172
|
|
59
|
-
netbox_dns/migrations/0023_alter_record_value.py,sha256=4_4v8YZzU8_jadJqIUUjH6SIhNTeALWhclozTqYDmv0,378
|
|
60
|
-
netbox_dns/migrations/0024_tenancy.py,sha256=3kc5l5_AyfhOI6g6mbCfReUAbSgb2DAv0MDMZqJ-3YQ,1745
|
|
61
|
-
netbox_dns/migrations/0025_ipam_coupling_cf.py,sha256=7uHujclWrsYw5QMLWft0Po78Ow5Q8MjPuU7moKyQ2qs,620
|
|
62
|
-
netbox_dns/migrations/0026_domain_registration.py,sha256=qUJ1oUGHIGGNWD7QRLnxElbM5eNp7dYNNn_OYIw8Xvo,5796
|
|
63
|
-
netbox_dns/migrations/0027_alter_registrar_iana_id.py,sha256=QUtRIrqqfkraFmzzeJFZWAEv4PfrOouoHtrV6FRn8Kc,404
|
|
64
|
-
netbox_dns/migrations/0028_rfc2317_fields.py,sha256=D8r43xxBjYXiL6ycmX8RY5_WG7tRYEDjutOeYM1H56I,1364
|
|
65
|
-
netbox_dns/migrations/0029_record_fqdn.py,sha256=UAAU38ekKQyiYDOJlcrz6Qbk4bqZfSHZyAHUZFFQrOw,808
|
|
66
|
-
netbox_dns/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
-
netbox_dns/mixins/__init__.py,sha256=LxTEfpod_RHCyMtnzDljv0_dwqp2z3Q6tqbXW8LTGD8,35
|
|
68
|
-
netbox_dns/mixins/object_modification.py,sha256=JbGi8a52wkZ3fFBlfat590CfqRJcEWxBsxSeTIx3Qtg,833
|
|
69
|
-
netbox_dns/models/__init__.py,sha256=0JSjJ_F0KR66DDV8emCPlHMQwgghi9tWo_0PuvyWpQQ,346
|
|
70
|
-
netbox_dns/models/contact.py,sha256=oNLyD_6TOTNQQTcCvv6TAC7OkzPTMIRy2NP5nwNKaNg,3009
|
|
71
|
-
netbox_dns/models/nameserver.py,sha256=yKo4Fwqnv5VtTndU2px7tRS3voF3Cal7OWQ6AImLwl0,3208
|
|
72
|
-
netbox_dns/models/record.py,sha256=MWQLys8wNGnQq5L74R_YhKfQeYWhxjVMB7T1V8qYKrE,22763
|
|
73
|
-
netbox_dns/models/record_template.py,sha256=3t9VceviX3kNIo5o0VPVFupLFDqPxpHIVLp5U3pBKB4,4661
|
|
74
|
-
netbox_dns/models/registrar.py,sha256=T_oMUlTWTDixOVlIbEZGvOBdvUrKxRkkS41xgM2Oee8,1557
|
|
75
|
-
netbox_dns/models/view.py,sha256=XKa6FE0AMIR-LhN6HcHWJaY_xohObfTEXCQXH68S2B4,2741
|
|
76
|
-
netbox_dns/models/zone.py,sha256=6LjjmQM_7OND1Ii-Mu9Chc03fkWChuQEac_Bc_CLFZc,28255
|
|
77
|
-
netbox_dns/models/zone_template.py,sha256=lkiSIfx8KM0Cs3Mb3dLBxKbSpcssVUzQiSmD5W46was,3753
|
|
78
|
-
netbox_dns/navigation.py,sha256=EITDZkbpu4KCC9u4Noj7OORWnkL3EYT2RIRvYlTw34Q,5961
|
|
79
|
-
netbox_dns/signals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
-
netbox_dns/signals/ipam_coupling.py,sha256=kJUKHUgq5XgWMhxB-312SPaZAYTLIYGgKO0lz2-z_rg,5594
|
|
81
|
-
netbox_dns/tables/__init__.py,sha256=s41w4o77tIwmhnLjsOsg08R9m3wrlomkkfCLTVQuPzc,196
|
|
82
|
-
netbox_dns/tables/contact.py,sha256=sPs7d1ZhVC5dOS37dPYFqebNd7WGvsV_eYzX_TMcbzY,804
|
|
83
|
-
netbox_dns/tables/nameserver.py,sha256=fFiE-yH-_GyRDaV4SVw094r6uH58Kx56NSWDGaMR58g,764
|
|
84
|
-
netbox_dns/tables/record.py,sha256=0Yg0qwZ8Vjz6pkZnmof4ZK1Hsvk9DNEzmJwoIwJZJFQ,3189
|
|
85
|
-
netbox_dns/tables/record_template.py,sha256=16Lu-WDjs2m9Uxx6WkURL39NlyJ8lWzj5Kl6C6lz3E8,2159
|
|
86
|
-
netbox_dns/tables/registrar.py,sha256=M-ckyQUs6dqjTCPf7bAr6UuLEA-q9f9CxKW7yp3rGoM,680
|
|
87
|
-
netbox_dns/tables/view.py,sha256=TK5PM0jkKqgifJ17EYCazAbsTvXsZzTNUp0AX3RhUok,726
|
|
88
|
-
netbox_dns/tables/zone.py,sha256=IeCiflrQBn1INV_PxoTySWQrDalykY4mDSG76VXC5WM,1877
|
|
89
|
-
netbox_dns/tables/zone_template.py,sha256=70hvS-xpeaLkcM6y0R9xsUMQVKgTgZJaWWNd99BfmzI,1479
|
|
90
|
-
netbox_dns/template_content.py,sha256=jPOnKC8rbDEm169PoIys5NKCN36uUPH4_6NwR0oZ7N8,3654
|
|
91
|
-
netbox_dns/templates/netbox_dns/contact.html,sha256=fMHAQyLXIxohKoCTxFEnKetl9UVXeQgjasfpv_JONaw,2855
|
|
92
|
-
netbox_dns/templates/netbox_dns/nameserver.html,sha256=DpTdetQVV_jKThDbi62LvbhiCay-1QxR-yiJEiPFm4w,1554
|
|
93
|
-
netbox_dns/templates/netbox_dns/record/managed.html,sha256=G6LPG1koUGuzUiwYdv1okdVa4sKaofiQegDBnsFL0kA,89
|
|
94
|
-
netbox_dns/templates/netbox_dns/record/related.html,sha256=Aqor8uGcuHQTHjlX-Xmni2Yp4N7lOBrMOqQiszrQOC0,742
|
|
95
|
-
netbox_dns/templates/netbox_dns/record.html,sha256=WtEkWy_CstGWE9UDFsATxz0bNpP_Gx9joZusAYGHDFQ,5235
|
|
96
|
-
netbox_dns/templates/netbox_dns/recordtemplate.html,sha256=9tkXtKqa5p3LdOU9REm99WSFwGJaH8OczpIqXZuXMcg,3099
|
|
97
|
-
netbox_dns/templates/netbox_dns/registrar.html,sha256=O5veGmW59Pf5yN25ihPLvRIkA2P7xmSGv0G3NrRG8vI,2152
|
|
98
|
-
netbox_dns/templates/netbox_dns/related_dns_objects.html,sha256=KSzlnw1cStrJa3poKkwrt_ycIH0oH0STWIHRNy3ks4g,806
|
|
99
|
-
netbox_dns/templates/netbox_dns/view.html,sha256=XCa7Sg8fjSkhVqjLvw652FINQdWURLWdQqw8is82iaI,1499
|
|
100
|
-
netbox_dns/templates/netbox_dns/zone/base.html,sha256=n_E4aVYdGeZZl-ARE8sb4DgAAgPs92X1UEFepX3xIlM,495
|
|
101
|
-
netbox_dns/templates/netbox_dns/zone/child.html,sha256=kH56PJFBGCjiRdIh7zCtClnZdfOChqN_sYslsyoz5gU,2147
|
|
102
|
-
netbox_dns/templates/netbox_dns/zone/child_zone.html,sha256=b9CSGWEfWT7hLQ80gApMnu7mXM8w2LT-3UaOYe6HIRQ,510
|
|
103
|
-
netbox_dns/templates/netbox_dns/zone/managed_record.html,sha256=LOchMAJyfMZIICE6q0pX1eorRbtgUtOQ1u0VvJKCDZ8,514
|
|
104
|
-
netbox_dns/templates/netbox_dns/zone/record.html,sha256=tu5RFm2eYJ3fjeUxZYDJqJ9qK8tGslXl1iGs60DlRyM,2194
|
|
105
|
-
netbox_dns/templates/netbox_dns/zone/registration.html,sha256=de2Kph-G8Gv5LD_Wf294SLfO0UKPS9NmHeQYRfJf-Ck,1151
|
|
106
|
-
netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html,sha256=rWlmb3zRQbLYQ_1dsa0twwu6y1dRj2tfFVEERH07p-s,517
|
|
107
|
-
netbox_dns/templates/netbox_dns/zone.html,sha256=zPi1sLFnya-ytx8-Pcf_ujc1sKllCRuz48x2E-S1HSo,6285
|
|
108
|
-
netbox_dns/templates/netbox_dns/zonetemplate.html,sha256=qjUWqrg4uDaIFt9-g0OBxTi86i_ctf2Ps4qHh11djQE,3081
|
|
109
|
-
netbox_dns/urls/__init__.py,sha256=FDauSMt7a01YJR8_RWkk0-kSmIL2lr1bHF0OU5ROuQ8,610
|
|
110
|
-
netbox_dns/urls/contact.py,sha256=OSQO-AkAhTaBruAdzVgcC7ip_OuiacvFI_ozgkWlNFU,1549
|
|
111
|
-
netbox_dns/urls/nameserver.py,sha256=BBbY-wqPqCquvLLv1_JhqToj7oDHhPNGCWHt0IfjBNM,1941
|
|
112
|
-
netbox_dns/urls/record.py,sha256=bDprohTso1N0GtPXH4X3TNHnkxopiOSQFXWItifEZ_k,1432
|
|
113
|
-
netbox_dns/urls/record_template.py,sha256=Z-7aA-rPIxRBCmXNUiQcHIgjYfai28Tf_sLtkl2ihDk,1827
|
|
114
|
-
netbox_dns/urls/registrar.py,sha256=u6B0zGGYNUJIKTo9uGiUeZLPD0QMGaQOAPShGEy4NaA,1728
|
|
115
|
-
netbox_dns/urls/view.py,sha256=8AeBnOHWusXXQs4JXpNfMSHqszXAY1GDXGWmNsMulQ8,1327
|
|
116
|
-
netbox_dns/urls/zone.py,sha256=rmB1BkzmWNG06ILUf-39Aj6-SBFkwQouyixMQiamqPc,2005
|
|
117
|
-
netbox_dns/urls/zone_template.py,sha256=w3Gu8qfLCWyHofeLkGZd1HpYSlcslomVlBQJZyqh8kk,1690
|
|
118
|
-
netbox_dns/utilities/__init__.py,sha256=-6-qmb1yTAt9QEtGtokNFBQV_TSheobkLjbWFKEYpfw,1849
|
|
119
|
-
netbox_dns/utilities/ipam_coupling.py,sha256=0XA5kmh2CzbhuhZmQuquNh4vPXBh20TVCA2RlM4pQdQ,3471
|
|
120
|
-
netbox_dns/validators/__init__.py,sha256=Mr8TvmcJTa8Pubj8TzbFBKfbHhEmGcr5JdQvczEJ39A,72
|
|
121
|
-
netbox_dns/validators/dns_name.py,sha256=B4A0BOW5pKDjjukvksriRtnLzkYTx_pFjh7eqKo6PBE,3069
|
|
122
|
-
netbox_dns/validators/dns_value.py,sha256=y2Zga4hmywqDrTBXcMC-sWaFbw4eoY8pySq7cWnMP8Y,2822
|
|
123
|
-
netbox_dns/validators/rfc2317.py,sha256=ivylEiNKlmX2x41rwqDrFkD5CFf9FtpNEfsKHX_prbE,585
|
|
124
|
-
netbox_dns/views/__init__.py,sha256=s41w4o77tIwmhnLjsOsg08R9m3wrlomkkfCLTVQuPzc,196
|
|
125
|
-
netbox_dns/views/contact.py,sha256=qM9F6MQBvO8ERR7quGLdQ5kW4roNLJ61As8m0qQTapg,2471
|
|
126
|
-
netbox_dns/views/nameserver.py,sha256=DFr0eybMshc1FW06g4cy9Nk4VRMxRqakI5KtHFiAVRc,3286
|
|
127
|
-
netbox_dns/views/record.py,sha256=fHMafCC14C7d6oXbXc2vN-T70OAOaTY77_m3Dct-oiQ,4590
|
|
128
|
-
netbox_dns/views/record_template.py,sha256=BkemTBEramLhYqB6HrA80sNgtduW1ZOJwbYs3i7srik,2510
|
|
129
|
-
netbox_dns/views/registrar.py,sha256=yRQgFm3vgBD21ZQex9asjs0QWegvSHlcyHXLnjvc5xs,2324
|
|
130
|
-
netbox_dns/views/view.py,sha256=I_hVZYFJF8GTnlUKPrTgBk_x9UDCbZXM8R7U5Bhizjs,2107
|
|
131
|
-
netbox_dns/views/zone.py,sha256=SKhf_WHcFVpKqFTuUMf-Dmxu1AwFHBeo_DtD8UGFrJ8,5483
|
|
132
|
-
netbox_dns/views/zone_template.py,sha256=qvXl-bpc1fMc1WFngynj4-Q3-JJDgKdT-r54s4M1D0s,2118
|
|
133
|
-
netbox_plugin_dns-1.0.6.dist-info/LICENSE,sha256=I3tDu11bZfhFm3EkV4zOD5TmWgLjnUNLEFwrdjniZYs,1112
|
|
134
|
-
netbox_plugin_dns-1.0.6.dist-info/METADATA,sha256=JCexnIPddX5RP4vsP6UDlRnFlCCrxqxbFXa48oTiGaU,6404
|
|
135
|
-
netbox_plugin_dns-1.0.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
136
|
-
netbox_plugin_dns-1.0.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|