From: Aleš Mrázek Date: Wed, 3 May 2023 12:53:36 +0000 (+0200) Subject: manager: datamodel: local-data template and macros X-Git-Tag: v6.0.1~11^2^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=eaab83e8e52dae85f222cec4987f2bdc6559c9f0;p=thirdparty%2Fknot-resolver.git manager: datamodel: local-data template and macros --- diff --git a/manager/etc/knot-resolver/config.policy.dev.yml b/manager/etc/knot-resolver/config.policy.dev.yml index 5f5a7429d..8557ad589 100644 --- a/manager/etc/knot-resolver/config.policy.dev.yml +++ b/manager/etc/knot-resolver/config.policy.dev.yml @@ -24,6 +24,13 @@ views: answer: allow local-data: + ttl: 60m + nodata: false + records: | + example.net. TXT "foo bar" + A 192.168.2.3 + A 192.168.2.4 + local.example.org AAAA ::1 subtrees: - type: empty tags: [ t2 ] diff --git a/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 index ee4a2ed68..442354abf 100644 --- a/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 +++ b/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 @@ -1,7 +1,8 @@ {% if not cfg.lua.script_only %} -- FFI library -local C = require('ffi').C +ffi = require('ffi') +local C = ffi.C -- hostname hostname('{{ cfg.hostname }}') diff --git a/manager/knot_resolver_manager/datamodel/templates/local_data.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/local_data.lua.j2 index 519671051..ebd5fd755 100644 --- a/manager/knot_resolver_manager/datamodel/templates/local_data.lua.j2 +++ b/manager/knot_resolver_manager/datamodel/templates/local_data.lua.j2 @@ -1,6 +1,13 @@ -{% from 'macros/local_data_macros.lua.j2' import local_data_subtree_root %} +{% from 'macros/local_data_macros.lua.j2' import local_data_subtree_root, local_data_records %} {# TODO: implemented all other options/features from local_data_schema #} + +{# records #} +{% if cfg.local_data.records -%} +{{ local_data_records(cfg.local_data.records, false, cfg.local_data.ttl, cfg.local_data.nodata) }} +{%- endif %} + +{# subtrees #} {% if cfg.local_data.subtrees -%} {% for subtree in cfg.local_data.subtrees %} diff --git a/manager/knot_resolver_manager/datamodel/templates/macros/local_data_macros.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/macros/local_data_macros.lua.j2 index 43f10f359..3d91a7f23 100644 --- a/manager/knot_resolver_manager/datamodel/templates/macros/local_data_macros.lua.j2 +++ b/manager/knot_resolver_manager/datamodel/templates/macros/local_data_macros.lua.j2 @@ -1,6 +1,23 @@ -{% from 'macros/common_macros.lua.j2' import string_table %} +{% from 'macros/common_macros.lua.j2' import string_table, boolean %} {% from 'macros/policy_macros.lua.j2' import policy_get_tagset, policy_todname %} + +{% macro local_data_records(input_str, is_rpz, ttl, nodata) -%} +rrs = ffi.new('struct kr_rule_zonefile_config') +{% if ttl %} +rrs.ttl = {{ ttl.millis() }} +{% endif %} +rrs.nodata = {{ boolean(nodata) }} +rrs.is_rpz = {{ boolean(is_rpz) }} +{% if is_rpz -%} +rrs.filename = '{{ input_str }}' +{% else %} +rrs.input_str = [[ +{{ input_str }}]] +{% endif %} +assert(C.kr_rule_zonefile(rrs)==0) +{%- endmacro %} + {% macro local_data_emptyzone(dname, tags) -%} assert(C.kr_rule_local_data_emptyzone({{ dname }},{{ tags }})==0) {%- endmacro %}