aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/check.py
diff options
context:
space:
mode:
Diffstat (limited to 'netlib/check.py')
-rw-r--r--netlib/check.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/netlib/check.py b/netlib/check.py
new file mode 100644
index 00000000..7b007cb5
--- /dev/null
+++ b/netlib/check.py
@@ -0,0 +1,22 @@
+import re
+
+_label_valid = re.compile(b"(?!-)[A-Z\d-]{1,63}(?<!-)$", re.IGNORECASE)
+
+
+def is_valid_host(host: bytes) -> bool:
+ """
+ Checks if a hostname is valid.
+ """
+ try:
+ host.decode("idna")
+ except ValueError:
+ return False
+ if len(host) > 255:
+ return False
+ if host and host[-1:] == b".":
+ host = host[:-1]
+ return all(_label_valid.match(x) for x in host.split(b"."))
+
+
+def is_valid_port(port):
+ return 0 <= port <= 65535