from typing_extensions import Literal
-from knot_resolver_manager.datamodel.types import Dir, DomainName, File, IntNonNegative, Percent, SizeUnit, TimeUnit
+from knot_resolver_manager.datamodel.types import (
+ Dir,
+ DomainName,
+ EscapedStr,
+ File,
+ IntNonNegative,
+ Percent,
+ SizeUnit,
+ TimeUnit,
+)
from knot_resolver_manager.utils.modeling import ConfigSchema
from knot_resolver_manager.utils.modeling.base_schema import lazy_default
"""
origin: DomainName
- url: str
+ url: EscapedStr
refresh_interval: TimeUnit = TimeUnit("1d")
ca_file: Optional[File] = None
from knot_resolver_manager.datamodel.monitoring_schema import MonitoringSchema
from knot_resolver_manager.datamodel.network_schema import NetworkSchema
from knot_resolver_manager.datamodel.options_schema import OptionsSchema
-from knot_resolver_manager.datamodel.policy_schema import PolicySchema
-from knot_resolver_manager.datamodel.slice_schema import SliceSchema
-from knot_resolver_manager.datamodel.types import Dir, IntPositive
+from knot_resolver_manager.datamodel.types import Dir, EscapedStr, IntPositive
from knot_resolver_manager.datamodel.view_schema import ViewSchema
from knot_resolver_manager.datamodel.webmgmt_schema import WebmgmtSchema
from knot_resolver_manager.utils.modeling import ConfigSchema
network: Network connections and protocols configuration.
views: List of views and its configuration.
local_data: Local data for forward records (A/AAAA) and reverse records (PTR).
- slices: Split the entire DNS namespace into distinct slices.
- policy: List of policy rules 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.
"""
version: int = 1
- nsid: Optional[str] = None
- hostname: Optional[str] = None
+ nsid: Optional[EscapedStr] = None
+ hostname: Optional[EscapedStr] = None
rundir: Dir = lazy_default(Dir, "/var/run/knot-resolver")
workers: Union[Literal["auto"], IntPositive] = IntPositive(1)
max_workers: IntPositive = IntPositive(_default_max_worker_count())
network: NetworkSchema = NetworkSchema()
views: Optional[List[ViewSchema]] = None
local_data: LocalDataSchema = LocalDataSchema()
- slices: Optional[List[SliceSchema]] = None
- policy: Optional[List[PolicySchema]] = None
forward: Optional[List[ForwardSchema]] = None
cache: CacheSchema = lazy_default(CacheSchema, {})
dnssec: Union[bool, DnssecSchema] = True
_LAYER = Raw
- nsid: Optional[str]
- hostname: str
+ nsid: Optional[EscapedStr]
+ hostname: EscapedStr
rundir: Dir
workers: IntPositive
max_workers: IntPositive
network: NetworkSchema
views: Optional[List[ViewSchema]]
local_data: LocalDataSchema
- slices: Optional[List[SliceSchema]]
- policy: Optional[List[PolicySchema]]
forward: Optional[List[ForwardSchema]]
cache: CacheSchema
dnssec: Union[Literal[False], DnssecSchema]
from typing import List, Optional
-from knot_resolver_manager.datamodel.types import IntNonNegative, TimeUnit
+from knot_resolver_manager.datamodel.types import DomainName, EscapedStr, File, IntNonNegative, TimeUnit
from knot_resolver_manager.utils.modeling import ConfigSchema
"""
- file: str
+ file: File
read_only: bool = False
keep_removed: IntNonNegative = IntNonNegative(0)
refresh_time: Optional[TimeUnit] = None
hold_down_time: TimeUnit = TimeUnit("30d")
- trust_anchors: Optional[List[str]] = None
- negative_trust_anchors: Optional[List[str]] = None
+ trust_anchors: Optional[List[EscapedStr]] = None
+ negative_trust_anchors: Optional[List[DomainName]] = None
trust_anchors_files: Optional[List[TrustAnchorFileSchema]] = None
from typing_extensions import Literal
-from knot_resolver_manager.datamodel.types import DomainName, File, IDPattern, IPAddress, ListOrItem, TimeUnit
+from knot_resolver_manager.datamodel.types import (
+ DomainName,
+ EscapedStr,
+ File,
+ IDPattern,
+ IPAddress,
+ ListOrItem,
+ TimeUnit,
+)
from knot_resolver_manager.utils.modeling import ConfigSchema
addresses: Optional[List[IPAddress]] = None
roots: Optional[List[DomainName]] = None
roots_file: Optional[File] = None
- roots_url: Optional[str] = None
+ roots_url: Optional[EscapedStr] = None
refresh: Optional[TimeUnit] = None
def _validate(self) -> None:
root_fallback_addresses_files: Optional[ListOrItem[File]] = None
addresses: Optional[Dict[DomainName, IPAddress]] = None
addresses_files: Optional[ListOrItem[File]] = None
- records: Optional[str] = None
+ records: Optional[EscapedStr] = None
subtrees: Optional[List[SubtreeSchema]] = None
rpz: Optional[List[RPZSchema]] = None
from typing import Optional
+from knot_resolver_manager.datamodel.types import File
from knot_resolver_manager.utils.modeling import ConfigSchema
script_only: bool = False
script: Optional[str] = None
- script_file: Optional[str] = None
+ script_file: Optional[File] = None
def _validate(self) -> None:
if self.script and self.script_file:
from typing_extensions import Literal
-from knot_resolver_manager.datamodel.types import DomainName, IPAddress, PortNumber, TimeUnit
+from knot_resolver_manager.datamodel.types import DomainName, EscapedStr, IPAddress, PortNumber, TimeUnit
from knot_resolver_manager.utils.modeling import ConfigSchema
class GraphiteSchema(ConfigSchema):
host: Union[IPAddress, DomainName]
port: PortNumber = PortNumber(2003)
- prefix: str = ""
+ prefix: EscapedStr = EscapedStr("")
interval: TimeUnit = TimeUnit("5s")
tcp: bool = False
from typing_extensions import Literal
from knot_resolver_manager.datamodel.types import (
+ EscapedStr,
File,
FilePath,
Int0_512,
cert_file: Optional[File] = None
key_file: Optional[File] = None
- sticket_secret: Optional[str] = None
+ sticket_secret: Optional[EscapedStr] = None
sticket_secret_file: Optional[File] = None
auto_discovery: bool = False
padding: Union[bool, Int0_512] = True
)
_graphite_bridge = GraphiteBridge((str(config.monitoring.graphite.host), int(config.monitoring.graphite.port)))
_graphite_bridge.start( # type: ignore
- interval=config.monitoring.graphite.interval.seconds(), prefix=config.monitoring.graphite.prefix
+ interval=config.monitoring.graphite.interval.seconds(), prefix=str(config.monitoring.graphite.prefix)
)