netbox-plugin-dns 1.2b1__tar.gz → 1.2.1__tar.gz

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.

Files changed (151) hide show
  1. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/PKG-INFO +3 -3
  2. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/__init__.py +4 -2
  3. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/record.py +1 -0
  4. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/filtersets/zone.py +0 -14
  5. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/graphql/types.py +1 -0
  6. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/models/record.py +43 -1
  7. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/validators/dns_value.py +32 -17
  8. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_plugin_dns.egg-info/PKG-INFO +3 -3
  9. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/pyproject.toml +2 -2
  10. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/LICENSE +0 -0
  11. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/README.md +0 -0
  12. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/nested_serializers.py +0 -0
  13. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers.py +0 -0
  14. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/__init__.py +0 -0
  15. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/nameserver.py +0 -0
  16. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/prefix.py +0 -0
  17. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/record_template.py +0 -0
  18. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/registrar.py +0 -0
  19. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/registration_contact.py +0 -0
  20. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/view.py +0 -0
  21. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/zone.py +0 -0
  22. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/serializers_/zone_template.py +0 -0
  23. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/urls.py +0 -0
  24. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/api/views.py +0 -0
  25. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/apps.py +0 -0
  26. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/choices/__init__.py +0 -0
  27. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/choices/record.py +0 -0
  28. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/choices/zone.py +0 -0
  29. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/fields/__init__.py +0 -0
  30. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/fields/address.py +0 -0
  31. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/fields/ipam.py +0 -0
  32. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/fields/network.py +0 -0
  33. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/fields/rfc2317.py +0 -0
  34. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/filtersets/__init__.py +0 -0
  35. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/filtersets/nameserver.py +0 -0
  36. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/filtersets/record.py +0 -0
  37. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/filtersets/record_template.py +0 -0
  38. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/filtersets/registrar.py +0 -0
  39. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/filtersets/registration_contact.py +0 -0
  40. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/filtersets/view.py +0 -0
  41. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/filtersets/zone_template.py +0 -0
  42. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/forms/__init__.py +0 -0
  43. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/forms/nameserver.py +0 -0
  44. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/forms/record.py +0 -0
  45. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/forms/record_template.py +0 -0
  46. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/forms/registrar.py +0 -0
  47. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/forms/registration_contact.py +0 -0
  48. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/forms/view.py +0 -0
  49. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/forms/zone.py +0 -0
  50. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/forms/zone_template.py +0 -0
  51. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/graphql/__init__.py +0 -0
  52. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/graphql/filters.py +0 -0
  53. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/graphql/schema.py +0 -0
  54. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
  55. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
  56. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/management/commands/cleanup_database.py +0 -0
  57. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/management/commands/cleanup_rrset_ttl.py +0 -0
  58. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/management/commands/rebuild_dnssync.py +0 -0
  59. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/management/commands/setup_dnssync.py +0 -0
  60. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/management/commands/update_soa.py +0 -0
  61. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -0
  62. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +0 -0
  63. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0002_contact_description_registrar_description.py +0 -0
  64. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0003_default_view.py +0 -0
  65. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0004_create_and_assign_default_view.py +0 -0
  66. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0005_alter_zone_view_not_null.py +0 -0
  67. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0006_templating.py +0 -0
  68. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0007_alter_ordering_options.py +0 -0
  69. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0008_view_prefixes.py +0 -0
  70. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0009_rename_contact_registrationcontact.py +0 -0
  71. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0010_view_ip_address_filter.py +0 -0
  72. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0011_rename_related_fields.py +0 -0
  73. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0012_natural_ordering.py +0 -0
  74. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0020_netbox_3_4.py +0 -0
  75. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0021_record_ip_address.py +0 -0
  76. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0022_search.py +0 -0
  77. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0023_alter_record_value.py +0 -0
  78. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0024_tenancy.py +0 -0
  79. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0025_ipam_coupling_cf.py +0 -0
  80. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0026_domain_registration.py +0 -0
  81. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0027_alter_registrar_iana_id.py +0 -0
  82. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0028_rfc2317_fields.py +0 -0
  83. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/0029_record_fqdn.py +0 -0
  84. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/migrations/__init__.py +0 -0
  85. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/mixins/__init__.py +0 -0
  86. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/mixins/object_modification.py +0 -0
  87. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/models/__init__.py +0 -0
  88. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/models/nameserver.py +0 -0
  89. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/models/record_template.py +0 -0
  90. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/models/registrar.py +0 -0
  91. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/models/registration_contact.py +0 -0
  92. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/models/view.py +0 -0
  93. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/models/zone.py +0 -0
  94. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/models/zone_template.py +0 -0
  95. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/navigation.py +0 -0
  96. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/signals/__init__.py +0 -0
  97. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/signals/ipam_dnssync.py +0 -0
  98. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/__init__.py +0 -0
  99. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/ipam_dnssync.py +0 -0
  100. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/nameserver.py +0 -0
  101. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/record.py +0 -0
  102. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/record_template.py +0 -0
  103. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/registrar.py +0 -0
  104. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/registration_contact.py +0 -0
  105. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/view.py +0 -0
  106. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/zone.py +0 -0
  107. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/tables/zone_template.py +0 -0
  108. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/template_content.py +0 -0
  109. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/nameserver.html +0 -0
  110. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/record/managed.html +0 -0
  111. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/record/related.html +0 -0
  112. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/record.html +0 -0
  113. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/recordtemplate.html +0 -0
  114. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/registrar.html +0 -0
  115. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/registrationcontact.html +0 -0
  116. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/view/button.html +0 -0
  117. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/view/prefix.html +0 -0
  118. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/view/related.html +0 -0
  119. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/view.html +0 -0
  120. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zone/base.html +0 -0
  121. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zone/child.html +0 -0
  122. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zone/child_zone.html +0 -0
  123. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zone/delegation_record.html +0 -0
  124. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zone/managed_record.html +0 -0
  125. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zone/record.html +0 -0
  126. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zone/registration.html +0 -0
  127. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +0 -0
  128. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zone.html +0 -0
  129. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/templates/netbox_dns/zonetemplate.html +0 -0
  130. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/urls.py +0 -0
  131. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/utilities/__init__.py +0 -0
  132. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/utilities/conversions.py +0 -0
  133. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/utilities/dns.py +0 -0
  134. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/utilities/ipam_dnssync.py +0 -0
  135. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/validators/__init__.py +0 -0
  136. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/validators/dns_name.py +0 -0
  137. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/validators/rfc2317.py +0 -0
  138. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/views/__init__.py +0 -0
  139. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/views/nameserver.py +0 -0
  140. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/views/record.py +0 -0
  141. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/views/record_template.py +0 -0
  142. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/views/registrar.py +0 -0
  143. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/views/registration_contact.py +0 -0
  144. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/views/view.py +0 -0
  145. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/views/zone.py +0 -0
  146. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_dns/views/zone_template.py +0 -0
  147. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_plugin_dns.egg-info/SOURCES.txt +0 -0
  148. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_plugin_dns.egg-info/dependency_links.txt +0 -0
  149. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_plugin_dns.egg-info/requires.txt +0 -0
  150. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/netbox_plugin_dns.egg-info/top_level.txt +0 -0
  151. {netbox_plugin_dns-1.2b1 → netbox_plugin_dns-1.2.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: netbox-plugin-dns
3
- Version: 1.2b1
3
+ Version: 1.2.1
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
@@ -8,7 +8,7 @@ Project-URL: Documentation, https://github.com/peteeckel/netbox-plugin-dns/blob/
8
8
  Project-URL: Repository, https://github.com/peteeckel/netbox-plugin-dns
9
9
  Project-URL: Issues, https://github.com/peteeckel/netbox-plugin-dns/issues
10
10
  Keywords: netbox,netbox-plugin,dns
11
- Classifier: Development Status :: 4 - Beta
11
+ Classifier: Development Status :: 5 - Production/Stable
12
12
  Requires-Python: >=3.10
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
@@ -7,7 +7,7 @@ from ipam.choices import IPAddressStatusChoices
7
7
 
8
8
  from netbox_dns.choices import RecordTypeChoices, RecordStatusChoices, ZoneStatusChoices
9
9
 
10
- __version__ = "1.2b1"
10
+ __version__ = "1.2.1"
11
11
 
12
12
 
13
13
  def _check_list(setting):
@@ -49,9 +49,11 @@ class DNSConfig(PluginConfig):
49
49
  "dnssync_minimum_zone_labels": 2,
50
50
  "tolerate_characters_in_zone_labels": "",
51
51
  "tolerate_underscores_in_labels": False,
52
- "tolerate_underscores_in_hostnames": False, # Deprecated, will be removed in 1.2.0
53
52
  "tolerate_leading_underscore_types": [
53
+ RecordTypeChoices.CNAME,
54
+ RecordTypeChoices.DNAME,
54
55
  RecordTypeChoices.SRV,
56
+ RecordTypeChoices.SVCB,
55
57
  RecordTypeChoices.TLSA,
56
58
  RecordTypeChoices.TXT,
57
59
  ],
@@ -75,6 +75,7 @@ class RecordSerializer(NetBoxModelSerializer):
75
75
  "custom_fields",
76
76
  "tenant",
77
77
  "ipam_ip_address",
78
+ "absolute_value",
78
79
  )
79
80
  brief_fields = (
80
81
  "id",
@@ -29,20 +29,6 @@ class ZoneFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
29
29
  to_field_name="name",
30
30
  label=_("View"),
31
31
  )
32
- # DEPRECATED: Remove in 1.1
33
- name_server_id = django_filters.ModelMultipleChoiceFilter(
34
- queryset=NameServer.objects.all(),
35
- field_name="nameservers",
36
- to_field_name="id",
37
- label=_("Nameserver IDs"),
38
- )
39
- # DEPRECATED: Remove in 1.1
40
- name_server = django_filters.ModelMultipleChoiceFilter(
41
- queryset=NameServer.objects.all(),
42
- field_name="nameservers__name",
43
- to_field_name="name",
44
- label=_("Nameservers"),
45
- )
46
32
  nameserver_id = django_filters.ModelMultipleChoiceFilter(
47
33
  queryset=NameServer.objects.all(),
48
34
  field_name="nameservers",
@@ -134,6 +134,7 @@ class NetBoxDNSRecordType(NetBoxObjectType):
134
134
  zone: Annotated["NetBoxDNSZoneType", strawberry.lazy("netbox_dns.graphql.types")]
135
135
  type: str
136
136
  value: str
137
+ absolute_value: str
137
138
  status: str
138
139
  ttl: BigInt | None
139
140
  managed: bool
@@ -3,6 +3,7 @@ import netaddr
3
3
 
4
4
  import dns
5
5
  from dns import name as dns_name
6
+ from dns import rdata
6
7
 
7
8
  from django.core.exceptions import ValidationError
8
9
  from django.db import transaction, models
@@ -22,7 +23,11 @@ from netbox_dns.fields import AddressField
22
23
  from netbox_dns.utilities import arpa_to_prefix, name_to_unicode, get_query_from_filter
23
24
  from netbox_dns.validators import validate_generic_name, validate_record_value
24
25
  from netbox_dns.mixins import ObjectModificationMixin
25
- from netbox_dns.choices import RecordTypeChoices, RecordStatusChoices
26
+ from netbox_dns.choices import (
27
+ RecordTypeChoices,
28
+ RecordStatusChoices,
29
+ RecordClassChoices,
30
+ )
26
31
 
27
32
 
28
33
  __all__ = (
@@ -634,6 +639,43 @@ class Record(ObjectModificationMixin, ContactsMixin, NetBoxModel):
634
639
  }
635
640
  )
636
641
 
642
+ @property
643
+ def absolute_value(self):
644
+ zone = dns_name.from_text(self.zone.name)
645
+ rr = rdata.from_text(RecordClassChoices.IN, self.type, self.value)
646
+
647
+ match self.type:
648
+ case (
649
+ RecordTypeChoices.CNAME
650
+ | RecordTypeChoices.DNAME
651
+ | RecordTypeChoices.NS
652
+ | RecordTypeChoices.HTTPS
653
+ | RecordTypeChoices.SRV
654
+ | RecordTypeChoices.SVCB
655
+ ):
656
+ return rr.replace(target=rr.target.derelativize(zone)).to_text()
657
+
658
+ case RecordTypeChoices.MX | RecordTypeChoices.RT | RecordTypeChoices.KX:
659
+ return rr.replace(exchange=rr.exchange.derelativize(zone)).to_text()
660
+
661
+ case RecordTypeChoices.RP:
662
+ return rr.replace(
663
+ mbox=rr.mbox.derelativize(zone), txt=rr.txt.derelativize(zone)
664
+ ).to_text()
665
+
666
+ case RecordTypeChoices.NAPTR:
667
+ return rr.replace(
668
+ replacement=rr.replacement.derelativize(zone)
669
+ ).to_text()
670
+
671
+ case RecordTypeChoices.PX:
672
+ return rr.replace(
673
+ map822=rr.map822.derelativize(zone),
674
+ mapx400=rr.mapx400.derelativize(zone),
675
+ ).to_text()
676
+
677
+ return self.value
678
+
637
679
  def handle_conflicting_address_records(self):
638
680
  if self.ipam_ip_address is None or not self.is_active:
639
681
  return
@@ -7,6 +7,8 @@ from dns.exception import SyntaxError
7
7
  from django.core.exceptions import ValidationError
8
8
  from django.utils.translation import gettext as _
9
9
 
10
+ from netbox.plugins.utils import get_plugin_config
11
+
10
12
  from netbox_dns.choices import RecordClassChoices, RecordTypeChoices
11
13
  from netbox_dns.validators import (
12
14
  validate_fqdn,
@@ -76,14 +78,19 @@ def validate_record_value(record):
76
78
  ).format(value=record.value, type=record.type, error=exc)
77
79
  )
78
80
 
81
+ skip_name_validation = record.type in get_plugin_config(
82
+ "netbox_dns", "tolerate_non_rfc1035_types", default=[]
83
+ )
84
+
79
85
  match record.type:
80
86
  case RecordTypeChoices.CNAME:
81
87
  _validate_idn(rr.target)
82
- validate_domain_name(
83
- rr.target.to_text(),
84
- always_tolerant=True,
85
- allow_empty_label=True,
86
- )
88
+ if not skip_name_validation:
89
+ validate_domain_name(
90
+ rr.target.to_text(),
91
+ always_tolerant=True,
92
+ allow_empty_label=True,
93
+ )
87
94
 
88
95
  case (
89
96
  RecordTypeChoices.NS
@@ -92,38 +99,46 @@ def validate_record_value(record):
92
99
  | RecordTypeChoices.SVCB
93
100
  ):
94
101
  _validate_idn(rr.target)
95
- validate_domain_name(rr.target.to_text(), always_tolerant=True)
102
+ if not skip_name_validation:
103
+ validate_domain_name(rr.target.to_text(), always_tolerant=True)
96
104
 
97
105
  case RecordTypeChoices.DNAME:
98
106
  _validate_idn(rr.target)
99
- validate_domain_name(
100
- rr.target.to_text(), always_tolerant=True, zone_name=True
101
- )
107
+ if not skip_name_validation:
108
+ validate_domain_name(
109
+ rr.target.to_text(), always_tolerant=True, zone_name=True
110
+ )
102
111
 
103
112
  case RecordTypeChoices.PTR | RecordTypeChoices.NSAP_PTR:
104
113
  _validate_idn(rr.target)
105
- validate_fqdn(rr.target.to_text(), always_tolerant=True)
114
+ if not skip_name_validation:
115
+ validate_fqdn(rr.target.to_text(), always_tolerant=True)
106
116
 
107
117
  case RecordTypeChoices.MX | RecordTypeChoices.RT | RecordTypeChoices.KX:
108
118
  _validate_idn(rr.exchange)
109
- validate_domain_name(rr.exchange.to_text(), always_tolerant=True)
119
+ if not skip_name_validation:
120
+ validate_domain_name(rr.exchange.to_text(), always_tolerant=True)
110
121
 
111
122
  case RecordTypeChoices.NSEC:
112
123
  _validate_idn(rr.next)
113
- validate_domain_name(rr.next.to_text(), always_tolerant=True)
124
+ if not skip_name_validation:
125
+ validate_domain_name(rr.next.to_text(), always_tolerant=True)
114
126
 
115
127
  case RecordTypeChoices.RP:
116
128
  _validate_idn(rr.mbox)
117
- validate_domain_name(rr.mbox.to_text(), always_tolerant=True)
118
129
  _validate_idn(rr.txt)
119
- validate_domain_name(rr.txt.to_text(), always_tolerant=True)
130
+ if not skip_name_validation:
131
+ validate_domain_name(rr.mbox.to_text(), always_tolerant=True)
132
+ validate_domain_name(rr.txt.to_text(), always_tolerant=True)
120
133
 
121
134
  case RecordTypeChoices.NAPTR:
122
135
  _validate_idn(rr.replacement)
123
- validate_generic_name(rr.replacement.to_text(), always_tolerant=True)
136
+ if not skip_name_validation:
137
+ validate_generic_name(rr.replacement.to_text(), always_tolerant=True)
124
138
 
125
139
  case RecordTypeChoices.PX:
126
140
  _validate_idn(rr.map822)
127
- validate_domain_name(rr.map822.to_text(), always_tolerant=True)
128
141
  _validate_idn(rr.mapx400)
129
- validate_domain_name(rr.mapx400.to_text(), always_tolerant=True)
142
+ if not skip_name_validation:
143
+ validate_domain_name(rr.map822.to_text(), always_tolerant=True)
144
+ validate_domain_name(rr.mapx400.to_text(), always_tolerant=True)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: netbox-plugin-dns
3
- Version: 1.2b1
3
+ Version: 1.2.1
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
@@ -8,7 +8,7 @@ Project-URL: Documentation, https://github.com/peteeckel/netbox-plugin-dns/blob/
8
8
  Project-URL: Repository, https://github.com/peteeckel/netbox-plugin-dns
9
9
  Project-URL: Issues, https://github.com/peteeckel/netbox-plugin-dns/issues
10
10
  Keywords: netbox,netbox-plugin,dns
11
- Classifier: Development Status :: 4 - Beta
11
+ Classifier: Development Status :: 5 - Production/Stable
12
12
  Requires-Python: >=3.10
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "netbox-plugin-dns"
3
- version = "1.2b1"
3
+ version = "1.2.1"
4
4
  description = "NetBox DNS is a NetBox plugin for managing DNS data."
5
5
  authors = [
6
6
  {name="Peter Eckel", email="pete@netbox-dns.org"},
@@ -9,7 +9,7 @@ license = {file="LICENCE"}
9
9
  readme = "README.md"
10
10
  keywords = ["netbox", "netbox-plugin", "dns"]
11
11
  classifiers = [
12
- "Development Status :: 4 - Beta"
12
+ "Development Status :: 5 - Production/Stable"
13
13
  ]
14
14
  dependencies = [
15
15
  "dnspython",