]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
manager: poetry: cmd for running manager with 'new-policy' kresd
authorAleš Mrázek <ales.mrazek@nic.cz>
Tue, 11 Apr 2023 13:31:26 +0000 (15:31 +0200)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 9 Jun 2023 11:54:07 +0000 (11:54 +0000)
manager/etc/knot-resolver/config.policy.dev.yml [new file with mode: 0644]
manager/pyproject.toml
manager/scripts/_env.sh
manager/scripts/run-new-policy [new file with mode: 0755]

diff --git a/manager/etc/knot-resolver/config.policy.dev.yml b/manager/etc/knot-resolver/config.policy.dev.yml
new file mode 100644 (file)
index 0000000..c6ed53c
--- /dev/null
@@ -0,0 +1,68 @@
+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
index 4d1f298819680dda27c56be5f8f943dc068cea2c..203de3d0079fd3f1096637c2359cf8a623075ca2 100644 (file)
@@ -53,6 +53,7 @@ knot-resolver = 'knot_resolver_manager.__main__:run'
 
 [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" }
index b1941edfed5beee1ab04f04a3f848e8aaaeb71c2..52697ca0b8c73e9dc6a7d457f86f3a2387391499 100644 (file)
@@ -50,3 +50,36 @@ function build_kresd {
        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
diff --git a/manager/scripts/run-new-policy b/manager/scripts/run-new-policy
new file mode 100755 (executable)
index 0000000..771710c
--- /dev/null
@@ -0,0 +1,29 @@
+#!/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 $@