Improve DNSValidator for DNS names #3797

Closed
opened 2025-12-29 18:31:15 +01:00 by adam · 1 comment
Owner

Originally created by @TheDJVG on GitHub (Jun 19, 2020).

Environment

  • Python version: 3.8.2
  • NetBox version: 2.8.6

Proposed Functionality

The current DNSValidator (netbox/ipam/validators.py) only checks for invalid characters but does not actually validates if the input is a valid DNS name.
I have an existing solution based on the default Django RegexValidator ready from a personal project including IDNA support, happy to create a PR with tests.

Use Case

-foo.bar.com is considered invalid but f-oo.bar.com is valid. Currently Netbox will accept both. It's expected people will use this information to publish DNS records and might hit an error when creating invalid records.

Database Changes

No Database changes are needed unless we want to clean up existing invalid DNS names.

External Dependencies

None.

Originally created by @TheDJVG on GitHub (Jun 19, 2020). <!-- NOTE: IF YOUR ISSUE DOES NOT FOLLOW THIS TEMPLATE, IT WILL BE CLOSED. This form is only for proposing specific new features or enhancements. If you have a general idea or question, please post to our mailing list instead of opening an issue: https://groups.google.com/forum/#!forum/netbox-discuss NOTE: Due to an excessive backlog of feature requests, we are not currently accepting any proposals which significantly extend NetBox's feature scope. Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report. --> ### Environment * Python version: 3.8.2 * NetBox version: 2.8.6 <!-- Describe in detail the new functionality you are proposing. Include any specific changes to work flows, data models, or the user interface. --> ### Proposed Functionality The current DNSValidator (`netbox/ipam/validators.py`) only checks for invalid characters but does not actually validates if the input is a valid DNS name. I have an existing solution based on the default Django RegexValidator ready from a personal project including IDNA support, happy to create a PR with tests. <!-- Convey an example use case for your proposed feature. Write from the perspective of a NetBox user who would benefit from the proposed functionality and describe how. ---> ### Use Case `-foo.bar.com` is considered invalid but `f-oo.bar.com` is valid. Currently Netbox will accept both. It's expected people will use this information to publish DNS records and might hit an error when creating invalid records. <!-- Note any changes to the database schema necessary to support the new feature. For example, does the proposal require adding a new model or field? (Not all new features require database changes.) ---> ### Database Changes No Database changes are needed unless we want to clean up existing invalid DNS names. <!-- List any new dependencies on external libraries or services that this new feature would introduce. For example, does the proposal require the installation of a new Python package? (Not all new features introduce new dependencies.) --> ### External Dependencies None.
adam closed this issue 2025-12-29 18:31:15 +01:00
Author
Owner

@jeremystretch commented on GitHub (Jun 20, 2020):

The validator is intentionally lax so as to accommodate non-qualified hostnames.

@jeremystretch commented on GitHub (Jun 20, 2020): The validator is intentionally lax so as to accommodate non-qualified hostnames.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3797