from knot_resolver_manager.datamodel.cache_schema import CacheSchema
from knot_resolver_manager.datamodel.dns64_schema import Dns64Schema
from knot_resolver_manager.datamodel.dnssec_schema import DnssecSchema
-from knot_resolver_manager.datamodel.forward_zone_schema import ForwardZoneSchema
+from knot_resolver_manager.datamodel.forward_schema import ForwardSchema
from knot_resolver_manager.datamodel.logging_schema import LoggingSchema
from knot_resolver_manager.datamodel.lua_schema import LuaSchema
from knot_resolver_manager.datamodel.management_schema import ManagementSchema
policy: List of policy rules and its configuration.
rpz: List of Response Policy Zones and its configuration.
stub_zones: List of Stub Zones and its configuration.
- forward_zones: List of Forward Zones and its configuration.
+ forward: List of Forward Zones and its configuration.
cache: DNS resolver cache configuration.
dnssec: Disable DNSSEC, enable with defaults or set new configuration.
dns64: Disable DNS64 (RFC 6147), enable with defaults or set new configuration.
policy: Optional[List[PolicySchema]] = None
rpz: Optional[List[RPZSchema]] = None
stub_zones: Optional[List[StubZoneSchema]] = None
- forward_zones: Optional[List[ForwardZoneSchema]] = None
+ forward: Optional[List[ForwardSchema]] = None
cache: CacheSchema = CacheSchema()
dnssec: Union[bool, DnssecSchema] = True
dns64: Union[bool, Dns64Schema] = False
policy: Optional[List[PolicySchema]]
rpz: Optional[List[RPZSchema]]
stub_zones: Optional[List[StubZoneSchema]]
- forward_zones: Optional[List[ForwardZoneSchema]]
+ forward: Optional[List[ForwardSchema]]
cache: CacheSchema
dnssec: Union[Literal[False], DnssecSchema]
dns64: Union[Literal[False], Dns64Schema]
--- /dev/null
+from typing import List, Optional, Union
+
+from typing_extensions import Literal
+
+from knot_resolver_manager.datamodel.types import DomainName, IPAddressOptionalPort
+from knot_resolver_manager.datamodel.types.files import FilePath
+from knot_resolver_manager.utils.modeling import ConfigSchema
+
+
+class ForwardServerSchema(ConfigSchema):
+ """
+ Forward server configuration options.
+
+ ---
+ address: IP address(es) of a forward server.
+ transport: Transport protocol for a forward server.
+ pin_sha256: Hash of accepted CA certificate.
+ hostname: Hostname of the Forward server.
+ ca_file: Path to CA certificate file.
+ """
+
+ address: Union[IPAddressOptionalPort, List[IPAddressOptionalPort]]
+ transport: Optional[Literal["tls"]] = None
+ pin_sha256: Optional[Union[str, List[str]]] = None
+ hostname: Optional[DomainName] = None
+ ca_file: Optional[FilePath] = None
+
+
+class ForwardSchema(ConfigSchema):
+ """
+ Configuration of Forward Zone.
+
+ ---
+ subtree: Subtree to forward.
+ servers: Forward server configuration.
+ """
+
+ subtree: DomainName
+ servers: Union[List[IPAddressOptionalPort], List[ForwardServerSchema]]
+++ /dev/null
-from typing import List, Optional, Union
-
-from knot_resolver_manager.datamodel.policy_schema import ForwardServerSchema
-from knot_resolver_manager.datamodel.types import DomainName, IPAddressOptionalPort, PolicyFlagEnum
-from knot_resolver_manager.utils.modeling import ConfigSchema
-
-
-class ForwardZoneSchema(ConfigSchema):
- """
- Configuration of Forward Zone.
-
- ---
- subtree: Domain name of the zone.
- servers: IP address of Forward server.
- views: Use this Forward Zone only for clients defined by views.
- options: Configuration flags for Forward Zone.
- """
-
- subtree: DomainName
- servers: Union[List[IPAddressOptionalPort], List[ForwardServerSchema]]
- views: Optional[List[str]] = None
- options: Optional[List[PolicyFlagEnum]] = None
from typing import List, Optional, Union
-from typing_extensions import Literal
-
+from knot_resolver_manager.datamodel.forward_schema import ForwardServerSchema
from knot_resolver_manager.datamodel.network_schema import AddressRenumberingSchema
from knot_resolver_manager.datamodel.types import (
DNSRecordTypeEnum,
- DomainName,
- File,
IPAddressOptionalPort,
PolicyActionEnum,
PolicyFlagEnum,
nodata: bool = False
-class ForwardServerSchema(ConfigSchema):
- """
- Configuration of forward server.
-
- ---
- address: IP address of a forward server.
- transport: Transport protocol for a forward server.
- pin_sha256: Hash of accepted CA certificate.
- hostname: Hostname of the Forward server.
- ca_file: Path to CA certificate file.
- """
-
- address: List[IPAddressOptionalPort]
- transport: Optional[Literal["tls"]] = None
- pin_sha256: Optional[Union[str, List[str]]] = None
- hostname: Optional[DomainName] = None
- ca_file: Optional[File] = None
-
-
def _validate_policy_action(policy_action: Union["ActionSchema", "PolicySchema"]) -> None:
servers = ["mirror", "forward", "stub"]
-- STUB-ZONES section -------------------------------
{% include "stub_zones.lua.j2" %}
--- FORWARD-ZONES section ----------------------------
-{% include "forward_zones.lua.j2" %}
+-- FORWARD section ----------------------------
+{% include "forward.lua.j2" %}
-- CACHE section ------------------------------------
{% include "cache.lua.j2" %}
IPv4Address,
IPv6Address,
IPv6Network96,
+ ListOrSingle,
PortNumber,
SizeUnit,
TimeUnit,
"IPv4Address",
"IPv6Address",
"IPv6Network96",
+ "ListOrSingle",
"PortNumber",
"SizeUnit",
"TimeUnit",
from knot_resolver_manager.datamodel.config_schema import template_from_str
-from knot_resolver_manager.datamodel.forward_zone_schema import ForwardServerSchema
+from knot_resolver_manager.datamodel.forward_schema import ForwardServerSchema
def test_string_table():