Source code for klea_utils.net
#!/usr/bin/env python3
"""
Host and address helpers shared across Klea packages.
File: utils_pkg/klea_utils/net.py
Copyright 2026 Ankur Sinha
Author: Ankur Sinha <sanjay DOT ankur AT gmail DOT com>
"""
from __future__ import annotations
import ipaddress
[docs]
def is_loopback_host(host: str | None) -> bool:
"""Return whether *host* is a loopback address or ``localhost``.
Handles IPv4, IPv6, and IPv4-mapped IPv6 addresses (``::ffff:127.0.0.1``),
which the OS may report for a loopback connection.
:param host: Peer host name or address, or ``None``.
:returns: ``True`` when the host refers to the local machine.
"""
if not host:
return False
candidate = host.strip().strip("[]")
if candidate.lower() == "localhost":
return True
try:
address = ipaddress.ip_address(candidate)
except ValueError:
return False
if isinstance(address, ipaddress.IPv6Address) and address.ipv4_mapped:
return address.ipv4_mapped.is_loopback
return address.is_loopback