netbox-plugin-dns 1.3.5__tar.gz → 1.4.0__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.
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/PKG-INFO +1 -1
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/__init__.py +2 -2
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/zone_template.py +1 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/zone_template.py +21 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/dnssec_key_template.py +13 -1
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/zone.py +19 -4
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/zone_template.py +15 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/types.py +1 -0
- netbox_plugin_dns-1.4.0/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
- netbox_plugin_dns-1.4.0/netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/cleanup_database.py +2 -2
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/rebuild_dnssync.py +1 -11
- netbox_plugin_dns-1.4.0/netbox_dns/migrations/0023_disable_ptr_false.py +27 -0
- netbox_plugin_dns-1.4.0/netbox_dns/migrations/0024_zonetemplate_parental_agents.py +25 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/dnssec_key_template.py +3 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/zone.py +12 -1
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/zone_template.py +11 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zonetemplate.html +10 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/ipam_dnssync.py +8 -9
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/record.py +5 -1
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/PKG-INFO +1 -1
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/SOURCES.txt +2 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/pyproject.toml +1 -1
- netbox_plugin_dns-1.3.5/netbox_dns/locale/de/LC_MESSAGES/django.mo +0 -0
- netbox_plugin_dns-1.3.5/netbox_dns/locale/fr/LC_MESSAGES/django.mo +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/LICENSE +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/README.md +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/field_serializers.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/nested_serializers.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/dnssec_key_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/dnssec_policy.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/nameserver.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/prefix.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/record.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/record_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/registrar.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/registration_contact.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/view.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/zone.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/urls.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/views.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/apps.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/dnssec_key_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/dnssec_policy.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/record.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/utilities.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/zone.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/address.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/choice_array.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/ipam.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/network.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/rfc2317.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/fields/timeperiod.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/dnssec_key_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/dnssec_policy.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/nameserver.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/record.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/record_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/registrar.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/registration_contact.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/view.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/zone.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/dnssec_policy.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/nameserver.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/record.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/record_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/registrar.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/registration_contact.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/forms/view.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/enums.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filter_lookups.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/dnssec_key_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/dnssec_policy.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/nameserver.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/record.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/record_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/registrar.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/registration_contact.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/view.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/zone.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/filters/zone_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/graphql/schema.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/locale/en/LC_MESSAGES/django.mo +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/cleanup_rrset_ttl.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/management/commands/setup_dnssync.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0001_squashed_netbox_dns_0_15.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0001_squashed_netbox_dns_0_22.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0002_contact_description_registrar_description.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0003_default_view.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0004_create_and_assign_default_view.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0005_alter_zone_view_not_null.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0006_templating.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0007_alter_ordering_options.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0008_view_prefixes.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0009_rename_contact_registrationcontact.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0010_view_ip_address_filter.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0011_rename_related_fields.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0012_natural_ordering.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0013_zonetemplate_soa_mname_zonetemplate_soa_rname.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0014_alter_unique_constraints_lowercase.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0015_dnssec.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0016_dnssec_policy_status.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0017_dnssec_policy_zone_zone_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0018_zone_domain_status_zone_expiration_date.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0019_dnssecpolicy_parental_agents.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0020_netbox_3_4.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0020_remove_dnssecpolicy_parental_agents_and_more.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0021_alter_record_ptr_record.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0021_record_ip_address.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0022_alter_record_ipam_ip_address.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0022_search.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0023_alter_record_value.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0024_tenancy.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0025_ipam_coupling_cf.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0026_domain_registration.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0027_alter_registrar_iana_id.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0028_rfc2317_fields.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/0029_record_fqdn.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/migrations/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/mixins/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/mixins/object_modification.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/dnssec_policy.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/nameserver.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/record.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/record_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/registrar.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/registration_contact.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/view.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/navigation.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/signals/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/signals/dnssec.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/signals/ipam_dnssync.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/dnssec_key_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/dnssec_policy.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/ipam_dnssync.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/nameserver.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/record.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/record_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/registrar.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/registration_contact.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/view.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/zone.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/tables/zone_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/template_content.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/dnsseckeytemplate.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/dnssecpolicy.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/nameserver.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/record/managed.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/record/related.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/record.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/recordtemplate.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/registrar.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/registrationcontact.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view/button.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view/prefix.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view/related.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/view.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/base.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/child.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/child_zone.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/delegation_record.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/managed_record.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/record.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/registration.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone/rfc2317_child_zone.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zone.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templates/netbox_dns/zonetemplate/child.html +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templatetags/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/templatetags/netbox_dns.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/urls.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/conversions.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/utilities/dns.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/dns_name.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/dns_value.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/dnssec.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/validators/rfc2317.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/__init__.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/dnssec_key_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/dnssec_policy.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/nameserver.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/record_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/registrar.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/registration_contact.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/view.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/zone.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/views/zone_template.py +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/dependency_links.txt +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/requires.txt +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_plugin_dns.egg-info/top_level.txt +0 -0
- {netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/setup.cfg +0 -0
|
@@ -4,7 +4,7 @@ from django.core.exceptions import ImproperlyConfigured
|
|
|
4
4
|
from netbox.plugins import PluginConfig
|
|
5
5
|
from netbox.plugins.utils import get_plugin_config
|
|
6
6
|
|
|
7
|
-
__version__ = "1.
|
|
7
|
+
__version__ = "1.4.0"
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def _check_list(setting):
|
|
@@ -16,7 +16,7 @@ class DNSConfig(PluginConfig):
|
|
|
16
16
|
name = "netbox_dns"
|
|
17
17
|
verbose_name = _("NetBox DNS")
|
|
18
18
|
description = _("NetBox plugin for DNS data")
|
|
19
|
-
min_version = "4.3.
|
|
19
|
+
min_version = "4.3.2"
|
|
20
20
|
version = __version__
|
|
21
21
|
author = "Peter Eckel"
|
|
22
22
|
author_email = "pete@netbox-dns.org"
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import netaddr
|
|
2
|
+
from netaddr.core import AddrFormatError
|
|
3
|
+
|
|
1
4
|
import django_filters
|
|
2
5
|
|
|
3
6
|
from django.db.models import Q
|
|
@@ -5,6 +8,7 @@ from django.utils.translation import gettext as _
|
|
|
5
8
|
|
|
6
9
|
from netbox.filtersets import NetBoxModelFilterSet
|
|
7
10
|
from tenancy.filtersets import TenancyFilterSet
|
|
11
|
+
from utilities.filters import MultiValueCharFilter
|
|
8
12
|
|
|
9
13
|
from netbox_dns.models import (
|
|
10
14
|
ZoneTemplate,
|
|
@@ -76,6 +80,10 @@ class ZoneTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
76
80
|
to_field_name="name",
|
|
77
81
|
label=_("DNSSEC Policy"),
|
|
78
82
|
)
|
|
83
|
+
parental_agents = MultiValueCharFilter(
|
|
84
|
+
method="filter_parental_agents",
|
|
85
|
+
label=_("Parental Agents"),
|
|
86
|
+
)
|
|
79
87
|
registrar_id = django_filters.ModelMultipleChoiceFilter(
|
|
80
88
|
queryset=Registrar.objects.all(),
|
|
81
89
|
label=_("Registrar ID"),
|
|
@@ -127,6 +135,19 @@ class ZoneTemplateFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|
|
127
135
|
label=_("Billing Contact"),
|
|
128
136
|
)
|
|
129
137
|
|
|
138
|
+
def filter_parental_agents(self, queryset, name, value):
|
|
139
|
+
if not value:
|
|
140
|
+
return queryset
|
|
141
|
+
|
|
142
|
+
query_values = []
|
|
143
|
+
for v in value:
|
|
144
|
+
try:
|
|
145
|
+
query_values.append(str(netaddr.IPAddress(v)))
|
|
146
|
+
except (AddrFormatError, ValueError):
|
|
147
|
+
pass
|
|
148
|
+
|
|
149
|
+
return queryset.filter(parental_agents__overlap=query_values)
|
|
150
|
+
|
|
130
151
|
def search(self, queryset, name, value):
|
|
131
152
|
if not value.strip():
|
|
132
153
|
return queryset
|
|
@@ -15,7 +15,8 @@ from utilities.forms.fields import (
|
|
|
15
15
|
DynamicModelMultipleChoiceField,
|
|
16
16
|
)
|
|
17
17
|
from utilities.forms.rendering import FieldSet
|
|
18
|
-
from utilities.forms import
|
|
18
|
+
from utilities.forms.widgets import HTMXSelect
|
|
19
|
+
from utilities.forms import add_blank_choice, get_field_value
|
|
19
20
|
from tenancy.models import Tenant, TenantGroup
|
|
20
21
|
from tenancy.forms import TenancyForm, TenancyFilterForm
|
|
21
22
|
|
|
@@ -52,6 +53,10 @@ class DNSSECKeyTemplateForm(TenancyForm, NetBoxModelForm):
|
|
|
52
53
|
"tags",
|
|
53
54
|
)
|
|
54
55
|
|
|
56
|
+
widgets = {
|
|
57
|
+
"algorithm": HTMXSelect(),
|
|
58
|
+
}
|
|
59
|
+
|
|
55
60
|
fieldsets = (
|
|
56
61
|
FieldSet(
|
|
57
62
|
"name",
|
|
@@ -76,6 +81,13 @@ class DNSSECKeyTemplateForm(TenancyForm, NetBoxModelForm):
|
|
|
76
81
|
),
|
|
77
82
|
)
|
|
78
83
|
|
|
84
|
+
def __init__(self, *args, **kwargs):
|
|
85
|
+
super().__init__(*args, **kwargs)
|
|
86
|
+
|
|
87
|
+
algorithm = get_field_value(self, "algorithm")
|
|
88
|
+
if algorithm != DNSSECKeyTemplateAlgorithmChoices.RSASHA256:
|
|
89
|
+
del self.fields["key_size"]
|
|
90
|
+
|
|
79
91
|
lifetime = TimePeriodField(
|
|
80
92
|
required=False,
|
|
81
93
|
)
|
|
@@ -21,9 +21,13 @@ from utilities.forms.fields import (
|
|
|
21
21
|
CSVModelMultipleChoiceField,
|
|
22
22
|
DynamicModelChoiceField,
|
|
23
23
|
)
|
|
24
|
-
from utilities.forms.widgets import BulkEditNullBooleanSelect, DatePicker
|
|
24
|
+
from utilities.forms.widgets import BulkEditNullBooleanSelect, DatePicker, HTMXSelect
|
|
25
25
|
from utilities.forms.rendering import FieldSet
|
|
26
|
-
from utilities.forms import
|
|
26
|
+
from utilities.forms import (
|
|
27
|
+
BOOLEAN_WITH_BLANK_CHOICES,
|
|
28
|
+
add_blank_choice,
|
|
29
|
+
get_field_value,
|
|
30
|
+
)
|
|
27
31
|
from tenancy.models import Tenant, TenantGroup
|
|
28
32
|
from tenancy.forms import TenancyForm, TenancyFilterForm
|
|
29
33
|
|
|
@@ -79,9 +83,9 @@ class ZoneTemplateUpdateMixin:
|
|
|
79
83
|
self.cleaned_data["tags"] = template.tags.all()
|
|
80
84
|
|
|
81
85
|
for field in template.template_fields:
|
|
82
|
-
if self.cleaned_data.get(field) in (None, "") and getattr(
|
|
86
|
+
if self.cleaned_data.get(field) in (None, "", []) and getattr(
|
|
83
87
|
template, field
|
|
84
|
-
) not in (None, ""):
|
|
88
|
+
) not in (None, "", []):
|
|
85
89
|
self.cleaned_data[field] = getattr(template, field)
|
|
86
90
|
|
|
87
91
|
self._check_soa_mname()
|
|
@@ -207,6 +211,8 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
207
211
|
}
|
|
208
212
|
|
|
209
213
|
widgets = {
|
|
214
|
+
"dnssec_policy": HTMXSelect(),
|
|
215
|
+
"registrar": HTMXSelect(),
|
|
210
216
|
"expiration_date": DatePicker,
|
|
211
217
|
}
|
|
212
218
|
|
|
@@ -310,6 +316,15 @@ class ZoneForm(ZoneTemplateUpdateMixin, TenancyForm, NetBoxModelForm):
|
|
|
310
316
|
name__in=default_nameservers
|
|
311
317
|
)
|
|
312
318
|
|
|
319
|
+
if not get_field_value(self, "dnssec_policy"):
|
|
320
|
+
del self.fields["inline_signing"]
|
|
321
|
+
del self.fields["parental_agents"]
|
|
322
|
+
|
|
323
|
+
if not get_field_value(self, "registrar"):
|
|
324
|
+
del self.fields["registry_domain_id"]
|
|
325
|
+
del self.fields["expiration_date"]
|
|
326
|
+
del self.fields["domain_status"]
|
|
327
|
+
|
|
313
328
|
view = DynamicModelChoiceField(
|
|
314
329
|
queryset=View.objects.all(),
|
|
315
330
|
required=True,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from django import forms
|
|
2
2
|
from django.utils.translation import gettext_lazy as _
|
|
3
|
+
from django.contrib.postgres.forms import SimpleArrayField
|
|
3
4
|
|
|
4
5
|
from netbox.forms import (
|
|
5
6
|
NetBoxModelBulkEditForm,
|
|
@@ -46,6 +47,7 @@ class ZoneTemplateForm(TenancyForm, NetBoxModelForm):
|
|
|
46
47
|
"soa_mname",
|
|
47
48
|
"soa_rname",
|
|
48
49
|
"dnssec_policy",
|
|
50
|
+
"parental_agents",
|
|
49
51
|
"record_templates",
|
|
50
52
|
"description",
|
|
51
53
|
"registrar",
|
|
@@ -80,6 +82,7 @@ class ZoneTemplateForm(TenancyForm, NetBoxModelForm):
|
|
|
80
82
|
),
|
|
81
83
|
FieldSet(
|
|
82
84
|
"dnssec_policy",
|
|
85
|
+
"parental_agents",
|
|
83
86
|
name=_("DNSSEC"),
|
|
84
87
|
),
|
|
85
88
|
FieldSet(
|
|
@@ -145,6 +148,7 @@ class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
145
148
|
),
|
|
146
149
|
FieldSet(
|
|
147
150
|
"dnssec_policy",
|
|
151
|
+
"parental_agents",
|
|
148
152
|
name=_("DNSSEC"),
|
|
149
153
|
),
|
|
150
154
|
FieldSet(
|
|
@@ -197,6 +201,10 @@ class ZoneTemplateFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|
|
197
201
|
null_option=_("None"),
|
|
198
202
|
label=_("DNSSEC Policy ID"),
|
|
199
203
|
)
|
|
204
|
+
parental_agents = forms.GenericIPAddressField(
|
|
205
|
+
required=False,
|
|
206
|
+
label=_("Parental Agents"),
|
|
207
|
+
)
|
|
200
208
|
registrar_id = DynamicModelMultipleChoiceField(
|
|
201
209
|
queryset=Registrar.objects.all(),
|
|
202
210
|
required=False,
|
|
@@ -241,6 +249,7 @@ class ZoneTemplateImportForm(NetBoxModelImportForm):
|
|
|
241
249
|
"soa_rname",
|
|
242
250
|
"record_templates",
|
|
243
251
|
"dnssec_policy",
|
|
252
|
+
"parental_agents",
|
|
244
253
|
"description",
|
|
245
254
|
"registrar",
|
|
246
255
|
"registrant",
|
|
@@ -351,6 +360,7 @@ class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
351
360
|
),
|
|
352
361
|
FieldSet(
|
|
353
362
|
"dnssec_policy",
|
|
363
|
+
"parental_agents",
|
|
354
364
|
name=_("DNSSEC"),
|
|
355
365
|
),
|
|
356
366
|
FieldSet(
|
|
@@ -411,6 +421,11 @@ class ZoneTemplateBulkEditForm(NetBoxModelBulkEditForm):
|
|
|
411
421
|
required=False,
|
|
412
422
|
label=_("DNSSEC Policy"),
|
|
413
423
|
)
|
|
424
|
+
parental_agents = SimpleArrayField(
|
|
425
|
+
required=False,
|
|
426
|
+
base_field=forms.GenericIPAddressField(),
|
|
427
|
+
label=_("Parental Agents"),
|
|
428
|
+
)
|
|
414
429
|
registrar = DynamicModelChoiceField(
|
|
415
430
|
queryset=Registrar.objects.all(),
|
|
416
431
|
required=False,
|
|
Binary file
|
|
Binary file
|
|
@@ -186,7 +186,7 @@ class Command(BaseCommand):
|
|
|
186
186
|
|
|
187
187
|
for record in orphaned_ptr_records:
|
|
188
188
|
if options.get("verbosity") > 1:
|
|
189
|
-
self.stdout.write("Removing orphaned PTR record '{record}'")
|
|
189
|
+
self.stdout.write(f"Removing orphaned PTR record '{record}'")
|
|
190
190
|
record.delete()
|
|
191
191
|
|
|
192
192
|
def _record_remove_orphaned_address_records(self, **options):
|
|
@@ -201,5 +201,5 @@ class Command(BaseCommand):
|
|
|
201
201
|
|
|
202
202
|
for record in orphaned_address_records:
|
|
203
203
|
if options.get("verbosity") > 1:
|
|
204
|
-
self.stdout.write("Removing orphaned address record '{record}'")
|
|
204
|
+
self.stdout.write(f"Removing orphaned address record '{record}'")
|
|
205
205
|
record.delete()
|
|
@@ -8,13 +8,6 @@ from netbox_dns.utilities import update_dns_records, get_zones
|
|
|
8
8
|
class Command(BaseCommand):
|
|
9
9
|
help = "Rebuild DNSsync relationships between IP addresses and records"
|
|
10
10
|
|
|
11
|
-
def add_arguments(self, parser):
|
|
12
|
-
parser.add_argument(
|
|
13
|
-
"--force",
|
|
14
|
-
action="store_true",
|
|
15
|
-
help="Update records even if DNS name was not changed (required for rebuilding filtered views)",
|
|
16
|
-
)
|
|
17
|
-
|
|
18
11
|
def handle(self, *model_names, **options):
|
|
19
12
|
ip_addresses = IPAddress.objects.all()
|
|
20
13
|
for ip_address in ip_addresses:
|
|
@@ -24,10 +17,7 @@ class Command(BaseCommand):
|
|
|
24
17
|
)
|
|
25
18
|
if options.get("verbosity") >= 3:
|
|
26
19
|
self.stdout.write(f" Zones: {get_zones(ip_address)}")
|
|
27
|
-
if (
|
|
28
|
-
update_dns_records(ip_address, force=options.get("force"))
|
|
29
|
-
and options.get("verbosity") >= 1
|
|
30
|
-
):
|
|
20
|
+
if update_dns_records(ip_address) and options.get("verbosity") >= 1:
|
|
31
21
|
self.stdout.write(
|
|
32
22
|
f"Updated DNS records for IP Address {ip_address}, VRF {ip_address.vrf}"
|
|
33
23
|
)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Generated by Django 5.2.3 on 2025-07-30 18:54
|
|
2
|
+
|
|
3
|
+
from django.db import migrations
|
|
4
|
+
|
|
5
|
+
from netbox_dns.choices import RecordTypeChoices
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def set_disable_ptr_false(apps, schema_editor):
|
|
9
|
+
Record = apps.get_model("netbox_dns", "Record")
|
|
10
|
+
|
|
11
|
+
for record in Record.objects.exclude(
|
|
12
|
+
type__in=(RecordTypeChoices.A, RecordTypeChoices.AAAA)
|
|
13
|
+
):
|
|
14
|
+
if record.disable_ptr:
|
|
15
|
+
record.disable_ptr = False
|
|
16
|
+
record.save()
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Migration(migrations.Migration):
|
|
20
|
+
|
|
21
|
+
dependencies = [
|
|
22
|
+
("netbox_dns", "0022_alter_record_ipam_ip_address"),
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
operations = [
|
|
26
|
+
migrations.RunPython(set_disable_ptr_false),
|
|
27
|
+
]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated by Django 5.2.5 on 2025-09-02 15:40
|
|
2
|
+
|
|
3
|
+
import django.contrib.postgres.fields
|
|
4
|
+
from django.db import migrations, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
("netbox_dns", "0023_disable_ptr_false"),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AddField(
|
|
15
|
+
model_name="zonetemplate",
|
|
16
|
+
name="parental_agents",
|
|
17
|
+
field=django.contrib.postgres.fields.ArrayField(
|
|
18
|
+
base_field=models.GenericIPAddressField(),
|
|
19
|
+
blank=True,
|
|
20
|
+
default=list,
|
|
21
|
+
null=True,
|
|
22
|
+
size=None,
|
|
23
|
+
),
|
|
24
|
+
),
|
|
25
|
+
]
|
{netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/models/dnssec_key_template.py
RENAMED
|
@@ -91,6 +91,9 @@ class DNSSECKeyTemplate(ContactsMixin, NetBoxModel):
|
|
|
91
91
|
return DNSSECKeyTemplateTypeChoices.colors.get(self.type)
|
|
92
92
|
|
|
93
93
|
def clean(self, *args, **kwargs):
|
|
94
|
+
if self.algorithm != DNSSECKeyTemplateAlgorithmChoices.RSASHA256:
|
|
95
|
+
self.key_size = self._meta.get_field("key_size").get_default()
|
|
96
|
+
|
|
94
97
|
super().clean(*args, **kwargs)
|
|
95
98
|
|
|
96
99
|
validate_key_template(self)
|
|
@@ -650,7 +650,7 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
650
650
|
expiration_error = _("The registration for this domain has expired.")
|
|
651
651
|
elif (self.expiration_date - date.today()).days < expiration_warning_days:
|
|
652
652
|
expiration_warning = _(
|
|
653
|
-
f"The registration for
|
|
653
|
+
f"The registration for this domain will expire in less than {expiration_warning_days} days."
|
|
654
654
|
)
|
|
655
655
|
|
|
656
656
|
return expiration_warning, expiration_error
|
|
@@ -800,6 +800,17 @@ class Zone(ObjectModificationMixin, ContactsMixin, NetBoxModel):
|
|
|
800
800
|
super().clean_fields(exclude=exclude)
|
|
801
801
|
|
|
802
802
|
def clean(self, *args, **kwargs):
|
|
803
|
+
if not self.dnssec_policy:
|
|
804
|
+
self.inline_signing = self._meta.get_field("inline_signing").get_default()
|
|
805
|
+
self.parental_agents = self._meta.get_field("parental_agents").get_default()
|
|
806
|
+
|
|
807
|
+
if not self.registrar:
|
|
808
|
+
self.registry_domain_id = self._meta.get_field(
|
|
809
|
+
"registry_domain_id"
|
|
810
|
+
).get_default()
|
|
811
|
+
self.expiration_date = self._meta.get_field("expiration_date").get_default()
|
|
812
|
+
self.domain_status = self._meta.get_field("domain_status").get_default()
|
|
813
|
+
|
|
803
814
|
if self.soa_ttl is None:
|
|
804
815
|
self.soa_ttl = self.default_ttl
|
|
805
816
|
|
|
@@ -4,6 +4,7 @@ from dns.exception import DNSException
|
|
|
4
4
|
from django.db import models
|
|
5
5
|
from django.utils.translation import gettext_lazy as _
|
|
6
6
|
from django.core.exceptions import ValidationError
|
|
7
|
+
from django.contrib.postgres.fields import ArrayField
|
|
7
8
|
|
|
8
9
|
from netbox.models import NetBoxModel
|
|
9
10
|
from netbox.search import SearchIndex, register_search
|
|
@@ -31,6 +32,7 @@ class ZoneTemplate(NetBoxModel):
|
|
|
31
32
|
"soa_mname",
|
|
32
33
|
"soa_rname",
|
|
33
34
|
"dnssec_policy",
|
|
35
|
+
"parental_agents",
|
|
34
36
|
"registrar",
|
|
35
37
|
"registrant",
|
|
36
38
|
"admin_c",
|
|
@@ -43,6 +45,7 @@ class ZoneTemplate(NetBoxModel):
|
|
|
43
45
|
"soa_mname",
|
|
44
46
|
"soa_rname",
|
|
45
47
|
"dnssec_policy",
|
|
48
|
+
"parental_agents",
|
|
46
49
|
"registrar",
|
|
47
50
|
"registrant",
|
|
48
51
|
"admin_c",
|
|
@@ -98,6 +101,14 @@ class ZoneTemplate(NetBoxModel):
|
|
|
98
101
|
blank=True,
|
|
99
102
|
null=True,
|
|
100
103
|
)
|
|
104
|
+
parental_agents = ArrayField(
|
|
105
|
+
base_field=models.GenericIPAddressField(
|
|
106
|
+
protocol="both",
|
|
107
|
+
),
|
|
108
|
+
blank=True,
|
|
109
|
+
null=True,
|
|
110
|
+
default=list,
|
|
111
|
+
)
|
|
101
112
|
registrar = models.ForeignKey(
|
|
102
113
|
verbose_name=_("Registrar"),
|
|
103
114
|
to="Registrar",
|
|
@@ -61,6 +61,16 @@
|
|
|
61
61
|
<th scope="row">{% trans "Policy" %}</th>
|
|
62
62
|
<td>{{ object.dnssec_policy|linkify }}</td>
|
|
63
63
|
</tr>
|
|
64
|
+
<tr>
|
|
65
|
+
<th scope="row">{% trans "Parental Agents" %}</th>
|
|
66
|
+
<td>
|
|
67
|
+
<table>
|
|
68
|
+
{% for parental_agent in object.parental_agents %}
|
|
69
|
+
<tr><td>{{ parental_agent }}</td></tr>
|
|
70
|
+
{% endfor %}
|
|
71
|
+
</table>
|
|
72
|
+
</td>
|
|
73
|
+
</tr>
|
|
64
74
|
</table>
|
|
65
75
|
</div>
|
|
66
76
|
{% endif %}
|
|
@@ -187,15 +187,14 @@ def update_dns_records(ip_address, view=None, force=False):
|
|
|
187
187
|
continue
|
|
188
188
|
|
|
189
189
|
record.update_fqdn()
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
updated = True
|
|
190
|
+
updated, deleted = record.update_from_ip_address(ip_address)
|
|
191
|
+
|
|
192
|
+
if deleted:
|
|
193
|
+
record.delete()
|
|
194
|
+
updated = True
|
|
195
|
+
elif updated:
|
|
196
|
+
record.save()
|
|
197
|
+
updated = True
|
|
199
198
|
|
|
200
199
|
zones = Zone.objects.filter(pk__in=[zone.pk for zone in zones]).exclude(
|
|
201
200
|
pk__in=set(ip_address.netbox_dns_records.values_list("zone", flat=True))
|
|
@@ -68,7 +68,9 @@ class RecordView(generic.ObjectView):
|
|
|
68
68
|
value_fqdn = dns_name.from_text(instance.value_fqdn)
|
|
69
69
|
|
|
70
70
|
cname_targets = Record.objects.filter(
|
|
71
|
-
zone__view=instance.zone.view,
|
|
71
|
+
zone__view=instance.zone.view,
|
|
72
|
+
fqdn=value_fqdn,
|
|
73
|
+
active=True,
|
|
72
74
|
)
|
|
73
75
|
|
|
74
76
|
if cname_targets:
|
|
@@ -98,6 +100,7 @@ class RecordView(generic.ObjectView):
|
|
|
98
100
|
zone__view=instance.zone.view,
|
|
99
101
|
value=instance.fqdn,
|
|
100
102
|
type=RecordTypeChoices.CNAME,
|
|
103
|
+
active=True,
|
|
101
104
|
)
|
|
102
105
|
)
|
|
103
106
|
|
|
@@ -112,6 +115,7 @@ class RecordView(generic.ObjectView):
|
|
|
112
115
|
zone__view=instance.zone.view,
|
|
113
116
|
type=RecordTypeChoices.CNAME,
|
|
114
117
|
zone=parent_zone,
|
|
118
|
+
active=True,
|
|
115
119
|
)
|
|
116
120
|
cname_records = cname_records.union(
|
|
117
121
|
{
|
|
@@ -108,7 +108,9 @@ netbox_dns/migrations/0021_record_ip_address.py
|
|
|
108
108
|
netbox_dns/migrations/0022_alter_record_ipam_ip_address.py
|
|
109
109
|
netbox_dns/migrations/0022_search.py
|
|
110
110
|
netbox_dns/migrations/0023_alter_record_value.py
|
|
111
|
+
netbox_dns/migrations/0023_disable_ptr_false.py
|
|
111
112
|
netbox_dns/migrations/0024_tenancy.py
|
|
113
|
+
netbox_dns/migrations/0024_zonetemplate_parental_agents.py
|
|
112
114
|
netbox_dns/migrations/0025_ipam_coupling_cf.py
|
|
113
115
|
netbox_dns/migrations/0026_domain_registration.py
|
|
114
116
|
netbox_dns/migrations/0027_alter_registrar_iana_id.py
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/dnssec_policy.py
RENAMED
|
File without changes
|
{netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/nameserver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/record_template.py
RENAMED
|
File without changes
|
{netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/api/serializers_/registrar.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/choices/dnssec_key_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/dnssec_key_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/record_template.py
RENAMED
|
File without changes
|
|
File without changes
|
{netbox_plugin_dns-1.3.5 → netbox_plugin_dns-1.4.0}/netbox_dns/filtersets/registration_contact.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|