]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: forward_zone: section created
authorAleš <ales.mrazek@nic.cz>
Fri, 19 Nov 2021 15:10:33 +0000 (16:10 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:53 +0000 (16:17 +0200)
manager/knot_resolver_manager/datamodel/config_schema.py
manager/knot_resolver_manager/datamodel/forward_zone.py [new file with mode: 0644]

index 8c6a20242c9cabee008bd7eefa5c2c26f1d18cd7..41e25e9fb9bcd745f5611fb9017141a8cad1662a 100644 (file)
@@ -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 (file)
index 0000000..8376749
--- /dev/null
@@ -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