diff --git a/src/netsleuth/validator.py b/src/netsleuth/validator.py index 3195628..3a1bbf4 100644 --- a/src/netsleuth/validator.py +++ b/src/netsleuth/validator.py @@ -9,11 +9,11 @@ import typer # Запрещённые префиксы (private, reserved, multicast) FORBIDDEN_PREFIXES: Final = [ - "127.", # localhost - "0.", # current network - "10.", # private class A + "127.", # localhost + "0.", # current network + "10.", # private class A "192.168.", # private class C - "172.16.", # private class B (начало диапазона) + "172.16.", # private class B (начало диапазона) "172.17.", "172.18.", "172.19.", @@ -29,26 +29,26 @@ FORBIDDEN_PREFIXES: Final = [ "172.29.", "172.30.", "172.31.", - "224.", # multicast - "240.", # reserved - "::1", # IPv6 localhost - "fe80:", # IPv6 link-local - "fc00:", # IPv6 unique local - "fd00:", # IPv6 unique local + "224.", # multicast + "240.", # reserved + "::1", # IPv6 localhost + "fe80:", # IPv6 link-local + "fc00:", # IPv6 unique local + "fd00:", # IPv6 unique local ] def validate_target(value: str) -> str: """Валидировать целевой адрес (target). - + Проверяет, что адрес не является private/reserved IP. - + Args: value: IP-адрес или hostname для проверки - + Returns: Оригинальное значение если валидно - + Raises: typer.BadParameter: Если адрес запрещён """ @@ -64,52 +64,48 @@ def validate_target(value: str) -> str: except ValueError: # Не IP-адрес (hostname), проверяем что это не выглядит как private IP pass - + # Для hostnames - простая проверка что не начинается с цифр (не похоже на IP) # Hostnames могут содержать буквы, цифры, дефисы и точки if value[0].isdigit(): # Похоже на IP но не распарсился - возможно невалидный, но не блокируем pass - + return value def validate_bind_address(value: str) -> str: """Валидировать адрес для привязки (--my-server). - + Args: value: IP-адрес для проверки - + Returns: Оригинальное значение если валидно - + Raises: typer.BadParameter: Если адрес невалиден """ try: ipaddress.ip_address(value) except ValueError: - raise typer.BadParameter( - f"'{value}' is not a valid IP address for --my-server" - ) - + raise typer.BadParameter(f"'{value}' is not a valid IP address for --my-server") + return value def validate_port(value: int) -> int: """Валидировать номер порта. - + Args: value: Номер порта - + Returns: Номер порта если валиден - + Raises: typer.BadParameter: Если порт вне диапазона """ if not (1 <= value <= 65535): - raise typer.BadParameter( - f"Port {value} must be between 1 and 65535" - ) + raise typer.BadParameter(f"Port {value} must be between 1 and 65535") return value