From: Aleš Date: Fri, 19 Nov 2021 15:10:33 +0000 (+0100) Subject: datamodel: forward_zone: section created X-Git-Tag: v6.0.0a1~69^2~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e91df33b2865146f85e90062cc701f009f8233d;p=thirdparty%2Fknot-resolver.git datamodel: forward_zone: section created --- diff --git a/manager/knot_resolver_manager/datamodel/config_schema.py b/manager/knot_resolver_manager/datamodel/config_schema.py index 8c6a20242..41e25e9fb 100644 --- a/manager/knot_resolver_manager/datamodel/config_schema.py +++ b/manager/knot_resolver_manager/datamodel/config_schema.py @@ -14,6 +14,7 @@ from knot_resolver_manager.datamodel.options_schema import OptionsSchema from knot_resolver_manager.datamodel.server_schema import ServerSchema from knot_resolver_manager.datamodel.static_hints_schema import StaticHintsSchema from knot_resolver_manager.datamodel.stub_zone_schema import StubZoneSchema +from knot_resolver_manager.datamodel.forward_zone import ForwardZoneSchema from knot_resolver_manager.datamodel.view_schema import ViewSchema from knot_resolver_manager.utils import SchemaNode @@ -37,6 +38,7 @@ class KresConfig(SchemaNode): static_hints: StaticHintsSchema = StaticHintsSchema() views: Optional[List[ViewSchema]] = None stub_zones: Optional[List[StubZoneSchema]] = None + forward_zones: Optional[List[ForwardZoneSchema]] = None cache: CacheSchema = CacheSchema() dnssec: Union[bool, DnssecSchema] = True dns64: Union[bool, Dns64Schema] = False @@ -51,6 +53,7 @@ class KresConfig(SchemaNode): static_hints: StaticHintsSchema views: Optional[List[ViewSchema]] stub_zones: Optional[List[StubZoneSchema]] + forward_zones: Optional[List[ForwardZoneSchema]] cache: CacheSchema dnssec: Union[Literal[False], DnssecSchema] dns64: Union[Literal[False], Dns64Schema] diff --git a/manager/knot_resolver_manager/datamodel/forward_zone.py b/manager/knot_resolver_manager/datamodel/forward_zone.py new file mode 100644 index 000000000..8376749e0 --- /dev/null +++ b/manager/knot_resolver_manager/datamodel/forward_zone.py @@ -0,0 +1,20 @@ +from typing import List, Optional, Union + +from knot_resolver_manager.datamodel.types import AnyPath, DomainName, IPAddressPort +from knot_resolver_manager.datamodel.view_schema import FlagsEnum +from knot_resolver_manager.utils import SchemaNode + + +class ForwardServerSchema(SchemaNode): + address: IPAddressPort + pin_sha256: Optional[Union[str, List[str]]] = None + hostname: Optional[DomainName] = None + ca_file: Optional[AnyPath] = None + + +class ForwardZoneSchema(SchemaNode): + name: DomainName + tls: bool = False + servers: Union[List[IPAddressPort], List[ForwardServerSchema]] + views: Optional[List[str]] = None + options: Optional[List[FlagsEnum]] = None