From dba490bab68a33a0b646d42e0ebdc2cb07eb53fa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ale=C5=A1=20Mr=C3=A1zek?= Date: Tue, 20 Jun 2023 15:16:12 +0200 Subject: [PATCH] manager: datamodel: types: EscapedStr32B type --- .../datamodel/network_schema.py | 4 ++-- .../datamodel/types/__init__.py | 2 ++ .../datamodel/types/types.py | 16 +++++++++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) 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. -- 2.47.2