--- /dev/null
+rundir: etc/knot-resolver/runtime
+workers: 1
+management:
+ interface: 127.0.0.1@5000
+cache:
+ storage: ../cache
+logging:
+ level: notice
+ groups:
+ - manager
+ - supervisord
+network:
+ listen:
+ - interface: 127.0.0.1@5353
+
+# views:
+# - subnets: [ 0.0.0.0/0, "::/0" ]
+# answer: refused
+ # - subnets: [ 0.0.0.0/0, "::/0" ]
+ # tags: [t01, t02, t03]
+ # options:
+ # minimize: true # default
+ # dns64: true # default
+ # - subnets: [10.0.10.0/24] # can be single value
+ # answer: allow
+
+# local-data:
+# ttl: 1d
+# nodata: true
+# addresses:
+# foo.bar: [ 127.0.0.1, "::1" ]
+# my.pc.corp: 192.168.12.95
+# addresses-files:
+# - /etc/hosts
+# records: |
+# example.net. TXT "foo bar"
+# A 192.168.2.3
+# A 192.168.2.4
+# local.example.org AAAA ::1
+# subtrees:
+# - type: empty
+# roots: [ sub2.example.org ]
+# tags: [ t2 ]
+# - type: nxdomain
+# roots-file: /path/to/file.txt
+# - type: empty
+# roots-url: https://example.org/blocklist.txt
+# refresh: 1d
+# - type: redirect
+# roots: [ sub4.example.org ]
+# addresses: [ 127.0.0.1, "::1" ]
+
+# forward:
+# - subtree: '.'
+# servers:
+# - address: [ 192.0.2.1, 192.0.2.2@5353 ]
+# transport: tls
+# pin-sha256: Wg==
+# - address: 2001:DB8::d0c
+# transport: tls
+# hostname: res.example.com
+# ca-file: /etc/knot-resolver/tlsca.crt
+# options:
+# dnssec: true # default
+# - subtree: 1.168.192.in-addr.arpa
+# servers: [ 192.0.2.1@5353 ]
+# options:
+# dnssec: false # policy.STUB?
\ No newline at end of file
[tool.poe.tasks]
run = { cmd = "scripts/run", help = "Run the manager" }
+run-new-policy = { cmd = "scripts/run-new-policy", help = "Run the manager with 'new-policy' kresd" }
run-debug = { cmd = "scripts/run-debug", help = "Run the manager under debugger" }
docs = { cmd = "scripts/docs", help = "Create HTML documentation" }
test = { shell = "env PYTHONPATH=. pytest --junitxml=unit.junit.xml --cov=knot_resolver_manager --show-capture=all tests/unit/", help = "Run tests" }
export PATH="$(realpath manager/.install_kresd)/sbin:$PATH"
popd
}
+
+function build_kresd_new_policy {
+ echo
+ echo Building Knot Resolver
+ echo ----------------------
+ echo -e "${blue}In case of an compilation error, run this command to try to fix it:${reset}"
+ echo -e "\t${blue}rm -r $(realpath .install_kresd) $(realpath .build_kresd)${reset}"
+ echo
+
+
+ pushd ..
+ rm -rf manager/.install_kresd manager/.build_kresd
+ mkdir -p manager/.build_kresd manager/.install_kresd
+
+ if [ -d "kres-new-policy" ]
+ then
+ echo updating repository...
+ cd kres-new-policy
+ git pull
+ else
+ echo cloning repository...
+ git clone -b new-policy https://gitlab.nic.cz/knot/knot-resolver.git kres-new-policy
+ cd kres-new-policy
+ git submodule update --init --recursive
+ fi
+
+ meson setup ../manager/.build_kresd --prefix=$(realpath ../manager/.install_kresd) --default-library=static --buildtype=debug
+ ninja -C ../manager/.build_kresd
+ ninja install -C ../manager/.build_kresd
+ cd ..
+ export PATH="$(realpath manager/.install_kresd)/sbin:$PATH"
+ popd
+}
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+# ensure consistent behaviour
+src_dir="$(dirname "$(realpath "$0")")"
+source $src_dir/_env.sh
+
+build_kresd_new_policy
+
+echo
+echo Building Knot Resolver Manager native extensions
+echo ------------------------------------------------
+poetry build
+# copy native modules from build directory to source directory
+shopt -s globstar
+shopt -s nullglob
+for d in build/lib*; do
+ for f in "$d/"**/*.so; do
+ cp -v "$f" ${f#"$d/"}
+ done
+done
+shopt -u globstar
+shopt -u nullglob
+
+
+echo
+echo Knot Manager API is accessible on http://localhost:5000
+echo -------------------------------------------------------
+
+python3 -m knot_resolver_manager -c etc/knot-resolver/config.policy.dev.yml $@