nadzoring.utils.validators module

Input validation utilities.

Each function is responsible for a single validation concern (SRP). Validators return bool and never raise; higher-level callers that want exceptions should use nadzoring.utils.errors.

nadzoring.utils.validators.resolve_hostname(hostname: str) str | None[source]

Resolve a hostname to its IPv4 address via the system DNS resolver.

Parameters:

hostname – Hostname to resolve (e.g. "example.com").

Returns:

IPv4 address string on success, or None if resolution fails.

Examples

>>> ip = resolve_hostname("localhost")
>>> ip == "127.0.0.1"
True
>>> resolve_hostname("this.domain.does.not.exist.invalid")
# returns None
nadzoring.utils.validators.validate_domain(domain: str) bool[source]

Validate a domain name against standard naming conventions.

Checks total length (≤ 255), optional trailing dot, and per-label character rules (1-63 chars, alphanumeric + hyphens, no leading or trailing hyphens).

Parameters:

domain – Domain name string to validate.

Returns:

True if the format is valid, False otherwise.

Examples

>>> validate_domain("example.com")
True
>>> validate_domain("-bad.example.com")
False
>>> validate_domain("a" * 256)
False
nadzoring.utils.validators.validate_ip(ip: str) bool[source]

Check whether a string is a valid IPv4 or IPv6 address.

Parameters:

ip – IP address string to validate.

Returns:

True if the string is a valid address, False otherwise.

Examples

>>> validate_ip("8.8.8.8")
True
>>> validate_ip("::1")
True
>>> validate_ip("not-an-ip")
False
nadzoring.utils.validators.validate_ipv4(ip: str) bool[source]

Check whether a string is a valid IPv4 address.

Parameters:

ip – IP address string to validate.

Returns:

True for valid IPv4 addresses only.

Examples

>>> validate_ipv4("192.168.1.1")
True
>>> validate_ipv4("::1")
False
nadzoring.utils.validators.validate_ipv6(ip: str) bool[source]

Check whether a string is a valid IPv6 address.

Parameters:

ip – IP address string to validate.

Returns:

True for valid IPv6 addresses only.

Examples

>>> validate_ipv6("::1")
True
>>> validate_ipv6("8.8.8.8")
False
nadzoring.utils.validators.validate_port(port: int) bool[source]

Check whether an integer is a valid TCP/UDP port number.

Parameters:

port – Port number to validate.

Returns:

True when port is in the range 1-65535.

Examples

>>> validate_port(80)
True
>>> validate_port(0)
False
>>> validate_port(65536)
False