netbox-plugin-dns 0.21.4__py3-none-any.whl → 1.4.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.
Files changed (232) hide show
  1. netbox_dns/__init__.py +106 -41
  2. netbox_dns/api/field_serializers.py +25 -0
  3. netbox_dns/api/nested_serializers.py +95 -52
  4. netbox_dns/api/serializers.py +14 -296
  5. netbox_dns/api/serializers_/__init__.py +0 -0
  6. netbox_dns/api/serializers_/dnssec_key_template.py +69 -0
  7. netbox_dns/api/serializers_/dnssec_policy.py +165 -0
  8. netbox_dns/api/serializers_/nameserver.py +56 -0
  9. netbox_dns/api/serializers_/prefix.py +18 -0
  10. netbox_dns/api/serializers_/record.py +105 -0
  11. netbox_dns/api/serializers_/record_template.py +71 -0
  12. netbox_dns/api/serializers_/registrar.py +45 -0
  13. netbox_dns/api/serializers_/registration_contact.py +50 -0
  14. netbox_dns/api/serializers_/view.py +81 -0
  15. netbox_dns/api/serializers_/zone.py +247 -0
  16. netbox_dns/api/serializers_/zone_template.py +157 -0
  17. netbox_dns/api/urls.py +13 -2
  18. netbox_dns/api/views.py +96 -58
  19. netbox_dns/choices/__init__.py +4 -0
  20. netbox_dns/choices/dnssec_key_template.py +67 -0
  21. netbox_dns/choices/dnssec_policy.py +40 -0
  22. netbox_dns/choices/record.py +104 -0
  23. netbox_dns/choices/utilities.py +4 -0
  24. netbox_dns/choices/zone.py +119 -0
  25. netbox_dns/fields/__init__.py +4 -0
  26. netbox_dns/fields/address.py +22 -16
  27. netbox_dns/fields/choice_array.py +33 -0
  28. netbox_dns/fields/ipam.py +15 -0
  29. netbox_dns/fields/network.py +42 -18
  30. netbox_dns/fields/rfc2317.py +97 -0
  31. netbox_dns/fields/timeperiod.py +33 -0
  32. netbox_dns/filters.py +7 -0
  33. netbox_dns/filtersets/__init__.py +12 -0
  34. netbox_dns/filtersets/dnssec_key_template.py +57 -0
  35. netbox_dns/filtersets/dnssec_policy.py +101 -0
  36. netbox_dns/filtersets/nameserver.py +46 -0
  37. netbox_dns/filtersets/record.py +135 -0
  38. netbox_dns/filtersets/record_template.py +59 -0
  39. netbox_dns/{filters → filtersets}/registrar.py +8 -1
  40. netbox_dns/{filters/contact.py → filtersets/registration_contact.py} +9 -3
  41. netbox_dns/filtersets/view.py +45 -0
  42. netbox_dns/filtersets/zone.py +254 -0
  43. netbox_dns/filtersets/zone_template.py +165 -0
  44. netbox_dns/forms/__init__.py +5 -1
  45. netbox_dns/forms/dnssec_key_template.py +250 -0
  46. netbox_dns/forms/dnssec_policy.py +654 -0
  47. netbox_dns/forms/nameserver.py +121 -27
  48. netbox_dns/forms/record.py +215 -104
  49. netbox_dns/forms/record_template.py +285 -0
  50. netbox_dns/forms/registrar.py +108 -31
  51. netbox_dns/forms/registration_contact.py +282 -0
  52. netbox_dns/forms/view.py +331 -20
  53. netbox_dns/forms/zone.py +769 -373
  54. netbox_dns/forms/zone_template.py +463 -0
  55. netbox_dns/graphql/__init__.py +25 -22
  56. netbox_dns/graphql/enums.py +41 -0
  57. netbox_dns/graphql/filter_lookups.py +13 -0
  58. netbox_dns/graphql/filters/__init__.py +12 -0
  59. netbox_dns/graphql/filters/dnssec_key_template.py +63 -0
  60. netbox_dns/graphql/filters/dnssec_policy.py +124 -0
  61. netbox_dns/graphql/filters/nameserver.py +32 -0
  62. netbox_dns/graphql/filters/record.py +89 -0
  63. netbox_dns/graphql/filters/record_template.py +55 -0
  64. netbox_dns/graphql/filters/registrar.py +30 -0
  65. netbox_dns/graphql/filters/registration_contact.py +27 -0
  66. netbox_dns/graphql/filters/view.py +28 -0
  67. netbox_dns/graphql/filters/zone.py +147 -0
  68. netbox_dns/graphql/filters/zone_template.py +97 -0
  69. netbox_dns/graphql/schema.py +89 -7
  70. netbox_dns/graphql/types.py +355 -0
  71. netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  72. netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  73. netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
  74. netbox_dns/management/commands/cleanup_database.py +175 -156
  75. netbox_dns/management/commands/cleanup_rrset_ttl.py +64 -0
  76. netbox_dns/management/commands/rebuild_dnssync.py +23 -0
  77. netbox_dns/management/commands/setup_dnssync.py +140 -0
  78. netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -27
  79. netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +557 -0
  80. netbox_dns/migrations/{0013_add_nameserver_zone_record_description.py → 0002_contact_description_registrar_description.py} +4 -9
  81. netbox_dns/migrations/0003_default_view.py +15 -0
  82. netbox_dns/migrations/0004_create_and_assign_default_view.py +26 -0
  83. netbox_dns/migrations/0005_alter_zone_view_not_null.py +18 -0
  84. netbox_dns/migrations/0006_templating.py +172 -0
  85. netbox_dns/migrations/0007_alter_ordering_options.py +25 -0
  86. netbox_dns/migrations/0008_view_prefixes.py +18 -0
  87. netbox_dns/migrations/0009_rename_contact_registrationcontact.py +36 -0
  88. netbox_dns/migrations/0010_view_ip_address_filter.py +18 -0
  89. netbox_dns/migrations/0011_rename_related_fields.py +63 -0
  90. netbox_dns/migrations/0012_natural_ordering.py +88 -0
  91. netbox_dns/migrations/0013_zonetemplate_soa_mname_zonetemplate_soa_rname.py +30 -0
  92. netbox_dns/migrations/0014_alter_unique_constraints_lowercase.py +42 -0
  93. netbox_dns/migrations/0015_dnssec.py +168 -0
  94. netbox_dns/migrations/{0015_add_record_status.py → 0016_dnssec_policy_status.py} +5 -4
  95. netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +41 -0
  96. netbox_dns/migrations/0018_zone_domain_status_zone_expiration_date.py +23 -0
  97. netbox_dns/migrations/0019_dnssecpolicy_parental_agents.py +25 -0
  98. netbox_dns/migrations/0020_netbox_3_4.py +1 -1
  99. netbox_dns/migrations/0020_remove_dnssecpolicy_parental_agents_and_more.py +29 -0
  100. netbox_dns/migrations/0021_alter_record_ptr_record.py +25 -0
  101. netbox_dns/migrations/0021_record_ip_address.py +1 -1
  102. netbox_dns/migrations/0022_alter_record_ipam_ip_address.py +26 -0
  103. netbox_dns/migrations/0023_disable_ptr_false.py +27 -0
  104. netbox_dns/migrations/0024_zonetemplate_parental_agents.py +25 -0
  105. netbox_dns/migrations/0025_remove_zone_inline_signing_and_more.py +22 -0
  106. netbox_dns/migrations/0026_alter_dnssecpolicy_nsec3_opt_out.py +18 -0
  107. netbox_dns/migrations/0026_domain_registration.py +1 -1
  108. netbox_dns/migrations/0027_zone_comments.py +18 -0
  109. netbox_dns/migrations/0028_alter_zone_default_ttl_alter_zone_soa_minimum_and_more.py +54 -0
  110. netbox_dns/migrations/0028_rfc2317_fields.py +44 -0
  111. netbox_dns/migrations/0029_alter_registrationcontact_street.py +18 -0
  112. netbox_dns/migrations/0029_record_fqdn.py +30 -0
  113. netbox_dns/mixins/__init__.py +1 -0
  114. netbox_dns/mixins/object_modification.py +57 -0
  115. netbox_dns/models/__init__.py +5 -1
  116. netbox_dns/models/dnssec_key_template.py +114 -0
  117. netbox_dns/models/dnssec_policy.py +203 -0
  118. netbox_dns/models/nameserver.py +61 -30
  119. netbox_dns/models/record.py +781 -234
  120. netbox_dns/models/record_template.py +198 -0
  121. netbox_dns/models/registrar.py +34 -15
  122. netbox_dns/models/{contact.py → registration_contact.py} +72 -43
  123. netbox_dns/models/view.py +129 -9
  124. netbox_dns/models/zone.py +806 -242
  125. netbox_dns/models/zone_template.py +209 -0
  126. netbox_dns/navigation.py +176 -76
  127. netbox_dns/signals/__init__.py +0 -0
  128. netbox_dns/signals/dnssec.py +32 -0
  129. netbox_dns/signals/ipam_dnssync.py +216 -0
  130. netbox_dns/tables/__init__.py +5 -1
  131. netbox_dns/tables/dnssec_key_template.py +49 -0
  132. netbox_dns/tables/dnssec_policy.py +140 -0
  133. netbox_dns/tables/ipam_dnssync.py +12 -0
  134. netbox_dns/tables/nameserver.py +14 -17
  135. netbox_dns/tables/record.py +117 -59
  136. netbox_dns/tables/record_template.py +91 -0
  137. netbox_dns/tables/registrar.py +20 -10
  138. netbox_dns/tables/{contact.py → registration_contact.py} +22 -11
  139. netbox_dns/tables/view.py +47 -3
  140. netbox_dns/tables/zone.py +62 -31
  141. netbox_dns/tables/zone_template.py +78 -0
  142. netbox_dns/template_content.py +124 -38
  143. netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +70 -0
  144. netbox_dns/templates/netbox_dns/dnssecpolicy.html +163 -0
  145. netbox_dns/templates/netbox_dns/nameserver.html +31 -28
  146. netbox_dns/templates/netbox_dns/record/managed.html +2 -1
  147. netbox_dns/templates/netbox_dns/record/related.html +17 -6
  148. netbox_dns/templates/netbox_dns/record.html +140 -93
  149. netbox_dns/templates/netbox_dns/recordtemplate.html +96 -0
  150. netbox_dns/templates/netbox_dns/registrar.html +41 -34
  151. netbox_dns/templates/netbox_dns/registrationcontact.html +76 -0
  152. netbox_dns/templates/netbox_dns/view/button.html +10 -0
  153. netbox_dns/templates/netbox_dns/view/prefix.html +44 -0
  154. netbox_dns/templates/netbox_dns/view/related.html +33 -0
  155. netbox_dns/templates/netbox_dns/view.html +62 -18
  156. netbox_dns/templates/netbox_dns/zone/base.html +6 -3
  157. netbox_dns/templates/netbox_dns/zone/child.html +6 -5
  158. netbox_dns/templates/netbox_dns/zone/child_zone.html +18 -0
  159. netbox_dns/templates/netbox_dns/zone/delegation_record.html +18 -0
  160. netbox_dns/templates/netbox_dns/zone/managed_record.html +1 -1
  161. netbox_dns/templates/netbox_dns/zone/record.html +6 -5
  162. netbox_dns/templates/netbox_dns/zone/registration.html +43 -24
  163. netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +18 -0
  164. netbox_dns/templates/netbox_dns/zone.html +178 -119
  165. netbox_dns/templates/netbox_dns/zonetemplate/child.html +46 -0
  166. netbox_dns/templates/netbox_dns/zonetemplate.html +124 -0
  167. netbox_dns/templatetags/netbox_dns.py +10 -0
  168. netbox_dns/urls.py +50 -210
  169. netbox_dns/utilities/__init__.py +3 -0
  170. netbox_dns/{utilities.py → utilities/conversions.py} +55 -7
  171. netbox_dns/utilities/dns.py +11 -0
  172. netbox_dns/utilities/ipam_dnssync.py +370 -0
  173. netbox_dns/validators/__init__.py +4 -0
  174. netbox_dns/validators/dns_name.py +116 -0
  175. netbox_dns/validators/dns_value.py +147 -0
  176. netbox_dns/validators/dnssec.py +148 -0
  177. netbox_dns/validators/rfc2317.py +28 -0
  178. netbox_dns/views/__init__.py +5 -1
  179. netbox_dns/views/dnssec_key_template.py +78 -0
  180. netbox_dns/views/dnssec_policy.py +146 -0
  181. netbox_dns/views/nameserver.py +34 -15
  182. netbox_dns/views/record.py +156 -15
  183. netbox_dns/views/record_template.py +93 -0
  184. netbox_dns/views/registrar.py +32 -13
  185. netbox_dns/views/registration_contact.py +101 -0
  186. netbox_dns/views/view.py +58 -14
  187. netbox_dns/views/zone.py +130 -33
  188. netbox_dns/views/zone_template.py +82 -0
  189. netbox_plugin_dns-1.4.7.dist-info/METADATA +132 -0
  190. netbox_plugin_dns-1.4.7.dist-info/RECORD +201 -0
  191. {netbox_plugin_dns-0.21.4.dist-info → netbox_plugin_dns-1.4.7.dist-info}/WHEEL +2 -1
  192. {netbox_plugin_dns-0.21.4.dist-info → netbox_plugin_dns-1.4.7.dist-info/licenses}/LICENSE +2 -1
  193. netbox_plugin_dns-1.4.7.dist-info/top_level.txt +1 -0
  194. netbox_dns/filters/__init__.py +0 -6
  195. netbox_dns/filters/nameserver.py +0 -18
  196. netbox_dns/filters/record.py +0 -53
  197. netbox_dns/filters/view.py +0 -18
  198. netbox_dns/filters/zone.py +0 -112
  199. netbox_dns/forms/contact.py +0 -211
  200. netbox_dns/graphql/contact.py +0 -19
  201. netbox_dns/graphql/nameserver.py +0 -19
  202. netbox_dns/graphql/record.py +0 -19
  203. netbox_dns/graphql/registrar.py +0 -19
  204. netbox_dns/graphql/view.py +0 -19
  205. netbox_dns/graphql/zone.py +0 -19
  206. netbox_dns/management/commands/setup_coupling.py +0 -75
  207. netbox_dns/management/commands/update_soa.py +0 -22
  208. netbox_dns/middleware.py +0 -226
  209. netbox_dns/migrations/0001_initial.py +0 -115
  210. netbox_dns/migrations/0002_zone_default_ttl.py +0 -18
  211. netbox_dns/migrations/0003_soa_managed_records.py +0 -112
  212. netbox_dns/migrations/0004_create_ptr_for_a_aaaa_records.py +0 -80
  213. netbox_dns/migrations/0005_update_ns_records.py +0 -41
  214. netbox_dns/migrations/0006_zone_soa_serial_auto.py +0 -29
  215. netbox_dns/migrations/0007_alter_zone_soa_serial_auto.py +0 -17
  216. netbox_dns/migrations/0008_zone_status_names.py +0 -21
  217. netbox_dns/migrations/0009_netbox32.py +0 -71
  218. netbox_dns/migrations/0010_update_soa_records.py +0 -58
  219. netbox_dns/migrations/0011_add_view_model.py +0 -70
  220. netbox_dns/migrations/0012_adjust_zone_and_record.py +0 -17
  221. netbox_dns/migrations/0014_add_view_description.py +0 -16
  222. netbox_dns/migrations/0016_cleanup_ptr_records.py +0 -38
  223. netbox_dns/migrations/0017_alter_record_ttl.py +0 -17
  224. netbox_dns/migrations/0018_zone_arpa_network.py +0 -51
  225. netbox_dns/migrations/0019_update_ns_ttl.py +0 -19
  226. netbox_dns/templates/netbox_dns/contact.html +0 -71
  227. netbox_dns/templates/netbox_dns/related_dns_objects.html +0 -21
  228. netbox_dns/templatetags/view_helpers.py +0 -15
  229. netbox_dns/validators.py +0 -57
  230. netbox_dns/views/contact.py +0 -83
  231. netbox_plugin_dns-0.21.4.dist-info/METADATA +0 -101
  232. netbox_plugin_dns-0.21.4.dist-info/RECORD +0 -110
netbox_dns/validators.py DELETED
@@ -1,57 +0,0 @@
1
- import re
2
-
3
- from django.core.exceptions import ValidationError
4
-
5
- try:
6
- # NetBox 3.5.0 - 3.5.7, 3.5.9+
7
- from extras.plugins import get_plugin_config
8
- except ImportError:
9
- # NetBox 3.5.8
10
- from extras.plugins.utils import get_plugin_config
11
-
12
- LABEL = r"[a-z0-9][a-z0-9-]*(?<!-)"
13
- TOLERANT_LABEL = r"[a-z0-9][a-z0-9-_]*(?<![-_])"
14
- LEADING_UNDERSCORE_LABEL = r"[a-z0-9_][a-z0-9-]*(?<!-)"
15
- TOLERANT_LEADING_UNDERSCORE_LABEL = r"[a-z0-9_][a-z0-9-_]*(?<![-_])"
16
-
17
-
18
- def has_invalid_double_dash(name):
19
- return bool(re.findall(r"\b(?!xn)..--", name, re.IGNORECASE))
20
-
21
-
22
- def validate_fqdn(name):
23
- if get_plugin_config("netbox_dns", "tolerate_underscores_in_hostnames"):
24
- regex = rf"^(\*|{TOLERANT_LABEL})(\.{TOLERANT_LABEL})+\.?$"
25
- else:
26
- regex = rf"^(\*|{LABEL})(\.{LABEL})+\.?$"
27
-
28
- if not re.match(regex, name, flags=re.IGNORECASE) or has_invalid_double_dash(name):
29
- raise ValidationError(f"Not a valid fully qualified DNS host name")
30
-
31
-
32
- def validate_extended_hostname(name, tolerate_leading_underscores=False):
33
- if tolerate_leading_underscores:
34
- if get_plugin_config("netbox_dns", "tolerate_underscores_in_hostnames"):
35
- regex = rf"^([*@]|(\*\.)?{TOLERANT_LEADING_UNDERSCORE_LABEL}(\.{TOLERANT_LEADING_UNDERSCORE_LABEL})*\.?)$"
36
- else:
37
- regex = rf"^([*@]|(\*\.)?{LEADING_UNDERSCORE_LABEL}(\.{LEADING_UNDERSCORE_LABEL})*\.?)$"
38
- elif get_plugin_config("netbox_dns", "tolerate_underscores_in_hostnames"):
39
- regex = rf"^([*@]|(\*\.)?{TOLERANT_LABEL}(\.{TOLERANT_LABEL})*\.?)$"
40
- else:
41
- regex = rf"^([*@]|(\*\.)?{LABEL}(\.{LABEL})*\.?)$"
42
-
43
- if not re.match(regex, name, flags=re.IGNORECASE) or has_invalid_double_dash(name):
44
- raise ValidationError(f"Not a valid DNS host name")
45
-
46
-
47
- def validate_domain_name(name):
48
- if name == "." and get_plugin_config("netbox_dns", "enable_root_zones"):
49
- return
50
-
51
- if get_plugin_config("netbox_dns", "tolerate_underscores_in_hostnames"):
52
- regex = rf"^{TOLERANT_LABEL}(\.{TOLERANT_LABEL})*\.?$"
53
- else:
54
- regex = rf"^{LABEL}(\.{LABEL})*\.?$"
55
-
56
- if not re.match(regex, name, flags=re.IGNORECASE) or has_invalid_double_dash(name):
57
- raise ValidationError(f"Not a valid DNS domain name")
@@ -1,83 +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.filters import ContactFilter, ZoneFilter
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
- class ContactView(generic.ObjectView):
19
- queryset = Contact.objects.all()
20
-
21
-
22
- class ContactListView(generic.ObjectListView):
23
- queryset = Contact.objects.all()
24
- table = ContactTable
25
- filterset = ContactFilter
26
- filterset_form = ContactFilterForm
27
-
28
-
29
- class ContactEditView(generic.ObjectEditView):
30
- queryset = Contact.objects.all()
31
- form = ContactForm
32
- default_return_url = "plugins:netbox_dns:contact_list"
33
-
34
-
35
- class ContactDeleteView(generic.ObjectDeleteView):
36
- queryset = Contact.objects.all()
37
- default_return_url = "plugins:netbox_dns:contact_list"
38
-
39
-
40
- class ContactBulkImportView(generic.BulkImportView):
41
- queryset = Contact.objects.all()
42
- model_form = ContactImportForm
43
- table = ContactTable
44
- default_return_url = "plugins:netbox_dns:contact_list"
45
-
46
-
47
- class ContactBulkEditView(generic.BulkEditView):
48
- queryset = Contact.objects.all()
49
- filterset = ContactFilter
50
- table = ContactTable
51
- form = ContactBulkEditForm
52
-
53
-
54
- class ContactBulkDeleteView(generic.BulkDeleteView):
55
- queryset = Contact.objects.all()
56
- table = ContactTable
57
-
58
-
59
- @register_model_view(Contact, "zones")
60
- class ContactZoneListView(generic.ObjectChildrenView):
61
- queryset = Contact.objects.all().prefetch_related(
62
- "zone_set", "admin_c_zones", "tech_c_zones", "billing_c_zones"
63
- )
64
- child_model = Zone
65
- table = ZoneTable
66
- filterset = ZoneFilter
67
- template_name = "netbox_dns/zone/child.html"
68
- hide_if_empty = True
69
-
70
- tab = ViewTab(
71
- label="Zones",
72
- permission="netbox_dns.view_zone",
73
- badge=lambda obj: len(obj.zones),
74
- hide_if_empty=True,
75
- )
76
-
77
- def get_children(self, request, parent):
78
- return Zone.objects.filter(
79
- Q(registrant=parent)
80
- | Q(admin_c=parent)
81
- | Q(tech_c=parent)
82
- | Q(billing_c=parent)
83
- )
@@ -1,101 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: netbox-plugin-dns
3
- Version: 0.21.4
4
- Summary: NetBox DNS is a NetBox plugin for managing DNS data.
5
- Home-page: https://github.com/peteeckel/netbox-plugin-dns
6
- License: MIT
7
- Keywords: netbox,netbox-plugin,dns
8
- Author: Peter Eckel
9
- Author-email: pe-netbox-dns@hindenburgring.com
10
- Requires-Python: >=3.8,<4.0
11
- Classifier: License :: OSI Approved :: MIT License
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.8
14
- Classifier: Programming Language :: Python :: 3.9
15
- Classifier: Programming Language :: Python :: 3.10
16
- Classifier: Programming Language :: Python :: 3.11
17
- Classifier: Programming Language :: Python :: 3.12
18
- Requires-Dist: dnspython (>=2.2.1,<3.0.0)
19
- Project-URL: Repository, https://github.com/peteeckel/netbox-plugin-dns
20
- Description-Content-Type: text/markdown
21
-
22
- <h1 align="center">NetBox DNS</h1>
23
-
24
- <p align="center"><i>NetBox DNS is a NetBox plugin for managing DNS views, zones, name servers and records.</i></p>
25
-
26
- <div align="center">
27
- <a href="https://pypi.org/project/netbox-plugin-dns/"><img src="https://img.shields.io/pypi/v/netbox-plugin-dns" alt="PyPi"/></a>
28
- <a href="https://github.com/peteeckel/netbox-plugin-dns/stargazers"><img src="https://img.shields.io/github/stars/peteeckel/netbox-plugin-dns" alt="Stars Badge"/></a>
29
- <a href="https://github.com/peteeckel/netbox-plugin-dns/network/members"><img src="https://img.shields.io/github/forks/peteeckel/netbox-plugin-dns" alt="Forks Badge"/></a>
30
- <a href="https://github.com/peteeckel/netbox-plugin-dns/pulls"><img src="https://img.shields.io/github/issues-pr/peteeckel/netbox-plugin-dns" alt="Pull Requests Badge"/></a>
31
- <a href="https://github.com/peteeckel/netbox-plugin-dns/issues"><img src="https://img.shields.io/github/issues/peteeckel/netbox-plugin-dns" alt="Issues Badge"/></a>
32
- <a href="https://github.com/peteeckel/netbox-plugin-dns/graphs/contributors"><img alt="GitHub contributors" src="https://img.shields.io/github/contributors/peteeckel/netbox-plugin-dns?color=2b9348"></a>
33
- <a href="https://github.com/peteeckel/netbox-plugin-dns/blob/master/LICENSE"><img src="https://img.shields.io/github/license/peteeckel/netbox-plugin-dns?color=2b9348" alt="License Badge"/></a>
34
- </div>
35
-
36
- ## Features
37
-
38
- * Manage DNS name servers
39
- * Manage DNS zone information, automatically generating SOA and NS records
40
- * Manage DNS records
41
- * Automatically create and update PTR records for A and AAAA records
42
- * Optionally organize DNS zones in views to cater for split horizon DNS and multi-site deployments
43
-
44
- NetBox DNS is using the standardized NetBox plugin interface, so it also takes advantage of the NetBox tagging and change log features.
45
-
46
- ## Requirements
47
-
48
- * NetBox 3.5.0 or higher
49
- * Python 3.8 or higher
50
-
51
- ## Installation & Configuration
52
-
53
- ### Installation
54
-
55
- ```
56
- $ source /opt/netbox/venv/bin/activate
57
- (venv) $ pip install netbox-plugin-dns
58
- ```
59
-
60
- ### Configuration
61
-
62
- Add the plugin to the NetBox config. `~/netbox/configuration.py`
63
-
64
- ```python
65
- PLUGINS = [
66
- "netbox_dns",
67
- ]
68
- ```
69
-
70
- To permanently mount the plugin when updating NetBox:
71
-
72
- ```
73
- echo netbox-plugin-dns >> ~/netbox/local_requirements.txt
74
- ```
75
-
76
- To add the required netbox_dns tables to your database run the following command from your NetBox directory:
77
-
78
- ```
79
- ./manage.py migrate
80
- ```
81
-
82
- Full reference: [Using Plugins - NetBox Documentation](https://netbox.readthedocs.io/en/stable/plugins/)
83
-
84
- ## Screenshots
85
-
86
- ![Zones](https://raw.githubusercontent.com/peteeckel/netbox-plugin-dns/main/docs/images/ZoneList.png)
87
-
88
- ![Zone Detail](https://raw.githubusercontent.com/peteeckel/netbox-plugin-dns/main/docs/images/ZoneDetail.png)
89
-
90
- ![Records](https://raw.githubusercontent.com/peteeckel/netbox-plugin-dns/main/docs/images/RecordList.png)
91
-
92
- ![Record Detail](https://raw.githubusercontent.com/peteeckel/netbox-plugin-dns/main/docs/images/RecordDetail.png)
93
-
94
- ## Contribute
95
-
96
- Contributions are always welcome! Please see: [contributing guide](CONTRIBUTING.md)
97
-
98
- ## License
99
-
100
- MIT
101
-
@@ -1,110 +0,0 @@
1
- netbox_dns/__init__.py,sha256=dgBrcfNXZvdNommqv3m17mSyrwClvIilTqKQkBMymKg,2320
2
- netbox_dns/api/nested_serializers.py,sha256=Do1wWwWrZ5a4OUuW0Sj8AU3AVlaCu675PAG78RT3dv4,2616
3
- netbox_dns/api/serializers.py,sha256=RXSETFLwRZQrUus8uzMt7q7wuB-QVoiHBQumQQxyX3s,7673
4
- netbox_dns/api/urls.py,sha256=R9VmmWtdrjvr35i5d_SfZK2lGn6JzmPuWEKTQlZ8MJo,575
5
- netbox_dns/api/views.py,sha256=DjovvTfS4F2Fq2Ahea6f4LBJiWr01ajk-wSZHNTya5I,3527
6
- netbox_dns/apps.py,sha256=JCW5eS-AQBUubDJve1DjP-IRFKTFGQh1NLGWzJpC5MI,151
7
- netbox_dns/fields/__init__.py,sha256=KQxDL1BPIAUk5nBPtRyuZgRVHNDb8UrpG9KPIVq99VU,46
8
- netbox_dns/fields/address.py,sha256=qklRDbZJVK20t2OIxGBoo9VVeuVTWvWkf2gHaZMnoAI,1494
9
- netbox_dns/fields/network.py,sha256=Pcd0kmtZI68-sVtMScpxtfUUbBuD2187JVHBQZV5TZE,3023
10
- netbox_dns/filters/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
11
- netbox_dns/filters/contact.py,sha256=_onZ6G2KKgfvm9Emg_kng2RPETRMfbTyIR8Tvs9d2YM,1027
12
- netbox_dns/filters/nameserver.py,sha256=yH8YomCgJ8u_RsmMzJM4efFkH-osjxKQTHIIBNU5X-U,515
13
- netbox_dns/filters/record.py,sha256=DH1x4bNkBAN_gVNklAjorcgHoJmH_AXEf1sBNvJS6Kc,1691
14
- netbox_dns/filters/registrar.py,sha256=kAvE2qNah0t5KtW-QniSw1HyhUgNnlvNSyVpHdUbSng,888
15
- netbox_dns/filters/view.py,sha256=Sji4DKy0VKk8BLEdk8xCe8su3rUBtXeJUsUAee0IsOs,497
16
- netbox_dns/filters/zone.py,sha256=gNKTLll0nvdkzjEVl5c4O1hncU13IFVKn61iXThLYJA,3556
17
- netbox_dns/forms/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
18
- netbox_dns/forms/contact.py,sha256=Z8llYOpcGns8ZerOLsldpY836pfjO7427rmAZ4T8Kyg,4492
19
- netbox_dns/forms/nameserver.py,sha256=fgvME0-pHWPlnqx2BMkPckNhT0RXR52YLMQPuArpiyE,2007
20
- netbox_dns/forms/record.py,sha256=07Yrz-0JEbFistM0hcOVvK8TBM1EocdE7fCMmdRRJvk,6143
21
- netbox_dns/forms/registrar.py,sha256=9yGh1BSUbgdSGxM1QTOUeff8ExThX6QnDh_GpVTHjX4,2437
22
- netbox_dns/forms/view.py,sha256=Hr5yRx2lJAVcCdw0miYYE2kVop5ldjpbmWB69FgHvpc,1619
23
- netbox_dns/forms/zone.py,sha256=AGdugEDLlVBXmH-ODLYwzmAspztlCdC7YYv4hphIsUw,19028
24
- netbox_dns/graphql/__init__.py,sha256=eBGy2jQHU03EDyO2Mhj7DXlJRCo9IGloWUyCoZL609g,604
25
- netbox_dns/graphql/contact.py,sha256=2iyuvCxG09CLDUMhan5vR3uFZxCVzKNZBrotr_zoUVY,497
26
- netbox_dns/graphql/nameserver.py,sha256=mlQw1Po_Ax_fjyyXVBetyxlFLrCqmptYDgOspZvYtP4,527
27
- netbox_dns/graphql/record.py,sha256=r_dtqRAid7wN_XgWTCR6XuKSAnSTz0z7hKUXcFt4AjU,487
28
- netbox_dns/graphql/registrar.py,sha256=TEQSNT8CeIqquzySMRluGk3I2t9rYgQCgDbLJ0gnLRQ,517
29
- netbox_dns/graphql/schema.py,sha256=D_dDusogaI55tmGx_dr1owsgzXS5fd2S-kPZ7xcXxs8,221
30
- netbox_dns/graphql/view.py,sha256=S_61hYlQCtPQen1lI1UQs38UBWKQTaWfUxzlbpO07zA,467
31
- netbox_dns/graphql/zone.py,sha256=QDBxocezhLSHBGDV4RJnmarBfOsiUTeE9KzBGJ3gJi8,467
32
- netbox_dns/management/commands/cleanup_database.py,sha256=fGkzOPXDsZWTlwetnerzkMmdpluV4vo34XXB_z8-yHU,6035
33
- netbox_dns/management/commands/setup_coupling.py,sha256=K842DptVDbDdY3m6ILs90ClJdnBVkLnI623bhVASeDo,2872
34
- netbox_dns/management/commands/update_soa.py,sha256=qvlApMngTVpauj0CU0yeOy9r3lxxDciKorMxFsyvQhs,661
35
- netbox_dns/middleware.py,sha256=DenV6W2_oKCZdSBkUAxOaO3IIohiq5uys9UsGRlvgiE,7221
36
- netbox_dns/migrations/0001_initial.py,sha256=R9FbIQ7nO1ROb12NL8YQDkFQuP1r6-TtMcPwg4rwjus,4153
37
- netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py,sha256=nxktsb-1oyiw1bHiBpnp8Vq4ugT0p0UMdJcYiq-UHoo,11466
38
- netbox_dns/migrations/0002_zone_default_ttl.py,sha256=7I-GXqvlR0EgBhMWw59W5L-r0sS0UEIXnlTer_WpKkk,437
39
- netbox_dns/migrations/0003_soa_managed_records.py,sha256=W3Ukto3MNqFdEgLnMHt3k5tz3tbT6BiT1Pc872fg614,3716
40
- netbox_dns/migrations/0004_create_ptr_for_a_aaaa_records.py,sha256=TsxGLSTXQgQm2yaBGOTNwrdfKdgY6jbZS1q96MNkbnw,2287
41
- netbox_dns/migrations/0005_update_ns_records.py,sha256=PRM4BbDOFhxzelMjU0q4gTvDFutcM7sNXwuJeDYY-8M,1156
42
- netbox_dns/migrations/0006_zone_soa_serial_auto.py,sha256=vzNWOAcrxwPZRiI40qSOAL_-2szOPe_oTSJHxuBbqng,861
43
- netbox_dns/migrations/0007_alter_zone_soa_serial_auto.py,sha256=q6UhZWyqv542RMlpfUfdtRUMKTTC0gQhVs6ujwvjMnM,399
44
- netbox_dns/migrations/0008_zone_status_names.py,sha256=UYCxIzHcawHwigxBHZD6h6HsUdpCrkcS2SiJxQe8cxI,527
45
- netbox_dns/migrations/0009_netbox32.py,sha256=OKCSMHZwLcPpNAUwgxY5fO1L3WlLaybhFxwjUzy8rQI,2176
46
- netbox_dns/migrations/0010_update_soa_records.py,sha256=3iiNEiDJAkauAiwBbc8e1vQk7NiRNlSRftj6VnGsy44,1543
47
- netbox_dns/migrations/0011_add_view_model.py,sha256=ypTmFYEWvZyT8Q81ap2feo34rhNplE1oxwPXP7GkOJI,2201
48
- netbox_dns/migrations/0012_adjust_zone_and_record.py,sha256=tEGHQesYo-A3yekSoVvkSs2Gcj4MTpvjdsRbr7qjw3c,402
49
- netbox_dns/migrations/0013_add_nameserver_zone_record_description.py,sha256=0KkfhQzBl9D_1MLy1UvZNIzyFI91Hz1m2LQrWpYLIyc,733
50
- netbox_dns/migrations/0014_add_view_description.py,sha256=Bzo9-pIxziuaS9NxyWviYAaoOIRLeabHH8yDIAbTI0U,428
51
- netbox_dns/migrations/0015_add_record_status.py,sha256=9YoMjfyUdaaLksTGs6vGWJ2IA8fdJSVcOGAfVqj-iPA,393
52
- netbox_dns/migrations/0016_cleanup_ptr_records.py,sha256=2NRAPHLAZ4gBK-2QR11CrDyvBTiJW9CgBXKL-VeGWmk,1053
53
- netbox_dns/migrations/0017_alter_record_ttl.py,sha256=jQtHLdl5tRGjGT93liwUOlUefC_PThiPU5ygPO4N7X4,405
54
- netbox_dns/migrations/0018_zone_arpa_network.py,sha256=n0-6LUw0f1vKzYGMqV2c5yvn1oQdN5p-_i9xUsf2g58,1553
55
- netbox_dns/migrations/0019_update_ns_ttl.py,sha256=0WLvJu2ig32waQd9yPbKJRNh_Sov46nqY7B8p5Cy8gw,433
56
- netbox_dns/migrations/0020_netbox_3_4.py,sha256=GwnmlYdnWgLwt2-H7hOr0Zm4-s28aDpe-S1X3lco5PI,1260
57
- netbox_dns/migrations/0021_record_ip_address.py,sha256=k72KACwnaCkgXLMgrex_lZCB1xd614llxRBeBBuJTYU,3243
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=iBgyZZfsy3MOBl1UoDNWHOq0VZH35-_EuK-ShieaImA,5818
63
- netbox_dns/migrations/0027_alter_registrar_iana_id.py,sha256=QUtRIrqqfkraFmzzeJFZWAEv4PfrOouoHtrV6FRn8Kc,404
64
- netbox_dns/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- netbox_dns/models/__init__.py,sha256=uqpVU1z4DiQWq_PimqAbtKX89bvgEsKa0vMOafMlSSY,136
66
- netbox_dns/models/contact.py,sha256=Mzj4SR3fczOE96etWjObJElk0RVQetNuXZVtm8sS1h8,2849
67
- netbox_dns/models/nameserver.py,sha256=SjKUbMRNE3TSDzmxbKFR9b4AfYPS0UPj0QeO7XpwNRk,2941
68
- netbox_dns/models/record.py,sha256=k-A0HeYgNiQAkyTFV7Sm26PtQJRIbwuvUEjXtHsa9tY,14048
69
- netbox_dns/models/registrar.py,sha256=ByKHeqH5KfswqOLjya8DZExJ1omSKFHMfCjIIYfnwTo,1416
70
- netbox_dns/models/view.py,sha256=ljs3Q2xQR63ZOSyja5H7DEdFbm7MX2ZjlR6uNVrAsVo,920
71
- netbox_dns/models/zone.py,sha256=wfOgvGnu8aT0A6xwthI0KDFSU3XY-R-Ut75mJ5-GkfQ,18076
72
- netbox_dns/navigation.py,sha256=IutEr_TcPgDGzqTT1ZzV4IUABLSOFU9v364BfpCqbro,4587
73
- netbox_dns/tables/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
74
- netbox_dns/tables/contact.py,sha256=HpblHKrlQqQAPC59gvw8wUV3tc6UBAphHPE6CfN2uVM,747
75
- netbox_dns/tables/nameserver.py,sha256=7Ap0px5gAHtgk5XFMpZCHccy9N-v8UKy19GP7fdWuPc,819
76
- netbox_dns/tables/record.py,sha256=t5m7SAg1syq9zkG38E-dV8SHAJGtvxiPy7YPig7FFKk,3162
77
- netbox_dns/tables/registrar.py,sha256=fnClFyukZ5Un-jUigrjDRYK5_2YE2BAtbm6lqctbeJ4,621
78
- netbox_dns/tables/view.py,sha256=gv6owrzcQ6G_Ue_xyWeO_k-oo9A81FeVQX-jlT84KFM,420
79
- netbox_dns/tables/zone.py,sha256=ifT_tnC1uS2k1I8jCR88qSCWaYW2McPAefjmhMzEU3k,1652
80
- netbox_dns/template_content.py,sha256=yQikGgZseGxVRvW2-mvhRvfdeIy2W2hXyXEwyCGJxI0,2523
81
- netbox_dns/templates/netbox_dns/contact.html,sha256=3qHGChgLYfqUgO3_z9jQ-lFIGS0ZehJdxJy04r3T0Tc,2858
82
- netbox_dns/templates/netbox_dns/nameserver.html,sha256=3AJVbsuhKg4Jy74rlvwrGSHd_IoDRdLT_XuK4EH3Djg,1623
83
- netbox_dns/templates/netbox_dns/record/managed.html,sha256=G6LPG1koUGuzUiwYdv1okdVa4sKaofiQegDBnsFL0kA,89
84
- netbox_dns/templates/netbox_dns/record/related.html,sha256=qUPsbNNzPJhEHHUQHkje4dx6pqw8l0dqDFTeO4-Ty_U,376
85
- netbox_dns/templates/netbox_dns/record.html,sha256=iXEQe8mkGVqzxj4n06ffYPn5Qaz0PjLdGxDKlQxiw5c,5328
86
- netbox_dns/templates/netbox_dns/registrar.html,sha256=Ijy8w0P3UPiyVFkIjk92d4n3GCqsm-0kQjk-QJ-2BCw,1956
87
- netbox_dns/templates/netbox_dns/related_dns_objects.html,sha256=KSzlnw1cStrJa3poKkwrt_ycIH0oH0STWIHRNy3ks4g,806
88
- netbox_dns/templates/netbox_dns/view.html,sha256=_lDjd2xY3upfGpNpemXXMzgsaKZlX3-PzPPAdYkIjvs,1350
89
- netbox_dns/templates/netbox_dns/zone/base.html,sha256=pucf_b7iGg4hCXqwIbR0_WtEQdeH2LQtTCRTSoeBhFc,460
90
- netbox_dns/templates/netbox_dns/zone/child.html,sha256=Y9dOUA8MPxuPqbbYV0KEZvLw1JIvfvOxbAVSv1c1l-k,2171
91
- netbox_dns/templates/netbox_dns/zone/managed_record.html,sha256=5P85eJuQOB7omih2vUXexRGjt4UF6McOM8f4D7QQbEw,524
92
- netbox_dns/templates/netbox_dns/zone/record.html,sha256=1oIRGXOZAjwmTMkTgArfKyVrmL54Sh_IN7IAF3qYEKM,2218
93
- netbox_dns/templates/netbox_dns/zone/registration.html,sha256=3R5uqLXZxIJkp9_LVnTTgTV61mITfDPDDNofV7s4d1k,1283
94
- netbox_dns/templates/netbox_dns/zone.html,sha256=A2lfDEDroGzJt6QzqQdIq9a-WKgW998zxM74xvNf-68,5876
95
- netbox_dns/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- netbox_dns/templatetags/view_helpers.py,sha256=M7ND-gQhPTey_4wlhalthucqKJf8UjjP4LGuHMw3j-c,271
97
- netbox_dns/urls.py,sha256=RMEDiyEmtHQzbjKy65ud6LofQYoEziIH7BvRaVs7kn0,8020
98
- netbox_dns/utilities.py,sha256=UjYHNp3RxToJgjOLs6iPn5ekETCpES2yWUfuqJXkDyU,1915
99
- netbox_dns/validators.py,sha256=mauW5-7a-sjTxyP4qWiRi-kfffGEj9Ma7N2o-BJjx38,2232
100
- netbox_dns/views/__init__.py,sha256=Aw8HrCTjaJfu5JSwJsQRHfOUz4zKwAmZNByT9q6BrFU,136
101
- netbox_dns/views/contact.py,sha256=6-oCfK98-submcUTmi0ejw7QBscNn3S9bnS0oUTXOaY,2235
102
- netbox_dns/views/nameserver.py,sha256=Wa8CQ19P5uPNLMIYkj_U82wmwdp5gZoBWZnOR4ZExa0,2990
103
- netbox_dns/views/record.py,sha256=eT-M-rqhCrcmhpEyKOnQ8SWnxAVUgams5e86nVL9uc0,2554
104
- netbox_dns/views/registrar.py,sha256=aznSKt1L5tILMLGgcZiBR7u7B8rNl-jM1B2-N0fTeK8,2072
105
- netbox_dns/views/view.py,sha256=uUvtlNEh5MYoEALvWWaCOqj_Zj8dpGOL2PUyg-UPfEA,1895
106
- netbox_dns/views/zone.py,sha256=j1wxqEQKYxkQv2DqOHo0gP6e_hZrD2RTyZhkx5CCXFE,3988
107
- netbox_plugin_dns-0.21.4.dist-info/LICENSE,sha256=tziMJKpkMbySr09L6bIwsu7Ca9ICoqpMO3yAXgEMQA4,1076
108
- netbox_plugin_dns-0.21.4.dist-info/METADATA,sha256=lk59DRiIpPahWXSNUAjohLx2Bl9s6CEpNOOTofzDBOk,3931
109
- netbox_plugin_dns-0.21.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
110
- netbox_plugin_dns-0.21.4.dist-info/RECORD,,