import os
import socket
import sys
-from typing import Any, Dict, Optional, Union
+from typing import Any, Dict, List, Optional, Union
from jinja2 import Environment, FileSystemLoader, Template
from typing_extensions import Literal
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.supervisor_schema import SupervisorSchema
-from knot_resolver_manager.datamodel.types import DomainName
from knot_resolver_manager.datamodel.types.types import IDPattern, IntPositive, UncheckedPath
from knot_resolver_manager.datamodel.view_schema import ViewSchema
from knot_resolver_manager.datamodel.webmgmt_schema import WebmgmtSchema
network: NetworkSchema = NetworkSchema()
static_hints: StaticHintsSchema = StaticHintsSchema()
views: Optional[Dict[str, ViewSchema]] = None
- slices: Optional[Dict[str, SliceSchema]] = None
- policy: Optional[Dict[str, PolicySchema]] = None
- rpz: Optional[Dict[str, RPZSchema]] = None
- stub_zones: Optional[Dict[DomainName, StubZoneSchema]] = None
- forward_zones: Optional[Dict[DomainName, ForwardZoneSchema]] = None
+ slices: Optional[List[SliceSchema]] = None
+ policy: Optional[List[PolicySchema]] = None
+ rpz: Optional[List[RPZSchema]] = 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
network: NetworkSchema
static_hints: StaticHintsSchema
views: Optional[Dict[str, ViewSchema]]
- slices: Optional[Dict[str, SliceSchema]]
- policy: Optional[Dict[str, PolicySchema]]
- rpz: Optional[Dict[str, RPZSchema]]
- stub_zones: Optional[Dict[DomainName, StubZoneSchema]]
- forward_zones: Optional[Dict[DomainName, ForwardZoneSchema]]
+ slices: Optional[List[SliceSchema]]
+ policy: Optional[List[PolicySchema]]
+ rpz: Optional[List[RPZSchema]]
+ stub_zones: Optional[List[StubZoneSchema]]
+ forward_zones: Optional[List[ForwardZoneSchema]]
cache: CacheSchema
dnssec: Union[Literal[False], DnssecSchema]
dns64: Union[Literal[False], Dns64Schema]
from typing import List, Optional, Union
from knot_resolver_manager.datamodel.policy_schema import ForwardServerSchema
-from knot_resolver_manager.datamodel.types import IPAddressOptionalPort, PolicyFlagEnum
+from knot_resolver_manager.datamodel.types import DomainName, IPAddressOptionalPort, PolicyFlagEnum
from knot_resolver_manager.utils import SchemaNode
Configuration of Forward Zone.
---
+ name: Domain name of the zone.
tls: Enable/disable TLS for Forward servers.
servers: IP address of Forward server.
views: Use this Forward Zone only for clients defined by views.
options: Configuration flags for Forward Zone.
"""
+ name: DomainName
tls: bool = False
servers: Union[List[IPAddressOptionalPort], List[ForwardServerSchema]]
views: Optional[List[str]] = None
from typing import List, Optional, Union
-from knot_resolver_manager.datamodel.types import IPAddressOptionalPort, PolicyFlagEnum
+from knot_resolver_manager.datamodel.types import DomainName, IPAddressOptionalPort, PolicyFlagEnum
from knot_resolver_manager.utils import SchemaNode
Configuration of Stub Zone.
---
+ name: Domain name of the zone.
servers: IP address of Stub server.
views: Use this Stub Zone only for clients defined by views.
options: Configuration flags for Stub Zone.
"""
+ name: DomainName
servers: Union[List[IPAddressOptionalPort], List[StubServerSchema]]
views: Optional[List[str]] = None
options: Optional[List[PolicyFlagEnum]] = None
{% from 'macros/view_macros.lua.j2' import view_tsig, view_addr %}
{% if cfg.forward_zones %}
-{% for name, zone in cfg.forward_zones.items() %}
--- forward-zone: {{ name }}
+{% for zone in cfg.forward_zones %}
+-- forward-zone: {{ zone.name }}
{% if zone.views -%}
{# views set for forward-zone #}
{% for view_id in zone.views -%}
{% for tsig in view.tsig %}
{%- if options -%}
-{{ view_tsig(tsig|string, policy_suffix(policy_flags(options|list), policy_todname(name|string))) }}
+{{ view_tsig(tsig|string, policy_suffix(policy_flags(options|list), policy_todname(zone.name|string))) }}
{%- endif %}
{% if zone.tls -%}
-{{ view_tsig(tsig|string, policy_suffix(policy_tls_forward(zone.servers|list), policy_todname(name|string))) }}
+{{ view_tsig(tsig|string, policy_suffix(policy_tls_forward(zone.servers|list), policy_todname(zone.name|string))) }}
{% else %}
-{{ view_tsig(tsig|string, policy_suffix(policy_forward(zone.servers|list), policy_todname(name|string))) }}
+{{ view_tsig(tsig|string, policy_suffix(policy_forward(zone.servers|list), policy_todname(zone.name|string))) }}
{%- endif %}
{% endfor %}
{% for addr in view.subnets %}
{%- if options -%}
-{{ view_addr(addr|string, policy_suffix(policy_flags(options|list), policy_todname(name|string))) }}
+{{ view_addr(addr|string, policy_suffix(policy_flags(options|list), policy_todname(zone.name|string))) }}
{%- endif %}
{% if zone.tls -%}
-{{ view_addr(addr|string, policy_suffix(policy_tls_forward(zone.servers|list), policy_todname(name|string))) }}
+{{ view_addr(addr|string, policy_suffix(policy_tls_forward(zone.servers|list), policy_todname(zone.name|string))) }}
{% else %}
-{{ view_addr(addr|string, policy_suffix(policy_forward(zone.servers|list), policy_todname(name|string))) }}
+{{ view_addr(addr|string, policy_suffix(policy_forward(zone.servers|list), policy_todname(zone.name|string))) }}
{%- endif %}
{% endfor %}
{# no views set for forward-zone #}
{% if zone.options -%}
-{{ policy_add(policy_suffix(policy_flags(zone.options|list), policy_todname(name|string))) }}
+{{ policy_add(policy_suffix(policy_flags(zone.options|list), policy_todname(zone.name|string))) }}
{%- endif %}
{% if zone.tls -%}
-{{ policy_add(policy_suffix(policy_tls_forward(zone.servers|list), policy_todname(name|string))) }}
+{{ policy_add(policy_suffix(policy_tls_forward(zone.servers|list), policy_todname(zone.name|string))) }}
{% else %}
-{{ policy_add(policy_suffix(policy_forward(zone.servers|list), policy_todname(name|string))) }}
+{{ policy_add(policy_suffix(policy_forward(zone.servers|list), policy_todname(zone.name|string))) }}
{%- endif %}
{% endif %}
{{ declare_policy_qtype_custom_filter() }}
-{% for id, rule in cfg.policy.items() %}
--- policy rule: {{ id }}
+{% for rule in cfg.policy %}
{% if rule.views -%}
{# views set for rule #}
{% for view_id in rule.views -%}
{% from 'macros/view_macros.lua.j2' import view_tsig, view_addr %}
{% if cfg.rpz %}
-{% for id, rpz in cfg.rpz.items() %}
--- rpz: {{ id }}
+{% for rpz in cfg.rpz %}
{% if rpz.views -%}
{# views set for rpz #}
{% for view_id in rpz.views -%}
{% from 'macros/view_macros.lua.j2' import view_tsig, view_addr %}
{% if cfg.stub_zones %}
-{% for name, zone in cfg.stub_zones.items() %}
--- stub-zone: {{ name }}
+{% for zone in cfg.stub_zones %}
+-- stub-zone: {{ zone.name }}
{% if zone.views -%}
{# views set for stub-zone #}
{% for view_id in zone.views -%}
{% for tsig in view.tsig -%}
{%- if options -%}
-{{ view_tsig(tsig|string, policy_suffix(policy_flags(options|list), policy_todname(name|string))) }}
+{{ view_tsig(tsig|string, policy_suffix(policy_flags(options|list), policy_todname(zone.name|string))) }}
{%- endif %}
-{{ view_tsig(tsig|string, policy_suffix(policy_stub(zone.servers|list), policy_todname(name|string))) }}
+{{ view_tsig(tsig|string, policy_suffix(policy_stub(zone.servers|list), policy_todname(zone.name|string))) }}
{% endfor %}
{%- endif -%}
{% for addr in view.subnets -%}
{%- if options -%}
-{{ view_addr(addr|string, policy_suffix(policy_flags(options|list), policy_todname(name|string))) }}
+{{ view_addr(addr|string, policy_suffix(policy_flags(options|list), policy_todname(zone.name|string))) }}
{%- endif %}
-{{ view_addr(addr|string, policy_suffix(policy_stub(zone.servers|list), policy_todname(name|string))) }}
+{{ view_addr(addr|string, policy_suffix(policy_stub(zone.servers|list), policy_todname(zone.name|string))) }}
{% endfor %}
{% endif %}
{# no views set for stub-zone #}
{% if zone.options -%}
-{{ policy_add(policy_suffix(policy_flags(zone.options|list), policy_todname(name|string))) }}
+{{ policy_add(policy_suffix(policy_flags(zone.options|list), policy_todname(zone.name|string))) }}
{%- endif %}
-{{ policy_add(policy_suffix(policy_stub(zone.servers|list), policy_todname(name|string))) }}
+{{ policy_add(policy_suffix(policy_stub(zone.servers|list), policy_todname(zone.name|string))) }}
{% endif %}
{% endfor %}