From: Aleš Mrázek Date: Tue, 20 Jun 2023 13:16:12 +0000 (+0200) Subject: manager: datamodel: types: EscapedStr32B type X-Git-Tag: v6.0.2~31^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dba490bab68a33a0b646d42e0ebdc2cb07eb53fa;p=thirdparty%2Fknot-resolver.git manager: datamodel: types: EscapedStr32B type --- diff --git a/manager/knot_resolver_manager/datamodel/network_schema.py b/manager/knot_resolver_manager/datamodel/network_schema.py index 10051946e..aacb2c469 100644 --- a/manager/knot_resolver_manager/datamodel/network_schema.py +++ b/manager/knot_resolver_manager/datamodel/network_schema.py @@ -3,7 +3,7 @@ from typing import List, Optional, Union from typing_extensions import Literal from knot_resolver_manager.datamodel.types import ( - EscapedStr, + EscapedStr32B, File, FilePath, Int0_512, @@ -63,7 +63,7 @@ class TLSSchema(ConfigSchema): cert_file: Optional[File] = None key_file: Optional[File] = None - sticket_secret: Optional[EscapedStr] = None + sticket_secret: Optional[EscapedStr32B] = None sticket_secret_file: Optional[File] = None auto_discovery: bool = False padding: Union[bool, Int0_512] = True diff --git a/manager/knot_resolver_manager/datamodel/types/__init__.py b/manager/knot_resolver_manager/datamodel/types/__init__.py index d70d33326..c100472be 100644 --- a/manager/knot_resolver_manager/datamodel/types/__init__.py +++ b/manager/knot_resolver_manager/datamodel/types/__init__.py @@ -4,6 +4,7 @@ from .generic_types import ListOrItem from .types import ( DomainName, EscapedStr, + EscapedStr32B, IDPattern, Int0_512, Int0_65535, @@ -33,6 +34,7 @@ __all__ = [ "DNSRecordTypeEnum", "DomainName", "EscapedStr", + "EscapedStr32B", "IDPattern", "Int0_512", "Int0_65535", diff --git a/manager/knot_resolver_manager/datamodel/types/types.py b/manager/knot_resolver_manager/datamodel/types/types.py index a2ad074af..dfc2317cc 100644 --- a/manager/knot_resolver_manager/datamodel/types/types.py +++ b/manager/knot_resolver_manager/datamodel/types/types.py @@ -2,7 +2,13 @@ import ipaddress import re from typing import Any, Dict, Optional, Type, Union -from knot_resolver_manager.datamodel.types.base_types import IntRangeBase, PatternBase, StrBase, UnitBase +from knot_resolver_manager.datamodel.types.base_types import ( + IntRangeBase, + PatternBase, + StrBase, + StringLengthBase, + UnitBase, +) from knot_resolver_manager.utils.modeling import BaseValueType @@ -94,6 +100,14 @@ class EscapedStr(StrBase): self._value = "".join(s) +class EscapedStr32B(EscapedStr, StringLengthBase): + """ + Same as 'EscapedStr', but minimal length is 32 bytes. + """ + + _min_bytes: int = 32 + + class DomainName(StrBase): """ Fully or partially qualified domain name.