]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: stub-zones: generating Lua code
authorAleš <ales.mrazek@nic.cz>
Tue, 30 Nov 2021 19:07:26 +0000 (20:07 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:53 +0000 (16:17 +0200)
- load 'view' module if needed

manager/knot_resolver_manager/datamodel/templates/config.lua.j2
manager/knot_resolver_manager/datamodel/templates/stub_zones.lua.j2 [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/templates/views.lua.j2 [new file with mode: 0644]

index 836de89710b8c9eaa141cc3a6483873a1fa8a789..e773fa3a1e8da85864dc7d2975e04d6bdba6c3c2 100644 (file)
 -- STATIC-HINTS section
 {% include "static_hints.lua.j2" %}
 
+-- VIEWS section
+{% include "views.lua.j2" %}
+
+-- STUB-ZONES section
+{% include "stub_zones.lua.j2" %}
+
 -- CACHE section
 {% include "cache.lua.j2" %}
 
diff --git a/manager/knot_resolver_manager/datamodel/templates/stub_zones.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/stub_zones.lua.j2
new file mode 100644 (file)
index 0000000..000d9e6
--- /dev/null
@@ -0,0 +1,78 @@
+{% if cfg.stub_zones %}
+
+{% for name, stub in cfg.stub_zones.items() %}
+-- stub-zone: {{ name }}
+{% if stub.views %}
+{% for view_id in stub.views %}
+-- stub-zone: {{ name }} view: {{ view_id }}
+{% set view = cfg.views[view_id.replace("-", "_")] %}
+
+{% set options = none %}
+{% if stub.options and view.options %}
+{% set options = stub.options|list + view.options |list%}
+{% elif stub.options %}
+{% set options = stub.options|list %}
+{% elif view.options %}
+{% set options = view.options|list %}
+{% endif %}
+
+{% if view.tsig %}
+{% for sig in view.tsig %}
+
+{% if options %}
+-- stub-zone: {{ name }} view: {{ view_id }} options
+view:tsig('{{ sig }}', policy.suffix(policy.FLAGS({
+{%- for flag in options -%}
+'{{ flag.upper().replace("-", "_") }}',
+{%- endfor -%}
+}), {todname('{{ name }}')}))
+{% endif %}
+
+-- stub-zone: {{ name }} view: {{ view_id }} servers
+{% for server in stub.servers %}
+view:tsig('{{ sig }}', policy.suffix(policy.STUB('{{ server }}'), {todname('{{ name }}')}))
+{% endfor %}
+
+{% endfor %}
+{% endif %}
+
+{% if view.subnets %}
+{% for addr in view.subnets %}
+
+{% if options %}
+-- stub-zone: {{ name }} view: {{ view_id }} options
+view:addr('{{ addr }}', policy.suffix(policy.FLAGS({
+{%- for flag in options -%}
+'{{ flag.upper().replace("-", "_") }}',
+{%- endfor -%}
+}), {todname('{{ name }}')}))
+{% endif %}
+
+-- stub-zone: {{ name }} view: {{ view_id }} servers
+{% for server in stub.servers %}
+view:addr('{{ addr }}', policy.suffix(policy.STUB('{{ server }}'), {todname('{{ name }}')}))
+{% endfor %}
+
+{% endfor %}
+{% endif %}
+
+{% endfor %}
+{% else %}
+{% if stub.options %}
+
+-- stub-zone: {{ name }} options
+policy.add(policy.suffix(policy.FLAGS({
+{%- for flag in stub.options -%}
+'{{ flag.upper().replace("-", "_") }}',
+{%- endfor -%}
+}), {todname('{{ name }}')}))
+{% endif %}
+
+-- stub-zone: {{ name }} servers
+{% for server in stub.servers %}
+policy.add(policy.suffix(policy.STUB('{{ server }}'), {todname('{{ name }}')}))
+{% endfor %}
+
+{% endif %}
+{% endfor %}
+{% endif %}
\ No newline at end of file
diff --git a/manager/knot_resolver_manager/datamodel/templates/views.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/views.lua.j2
new file mode 100644 (file)
index 0000000..fbe8617
--- /dev/null
@@ -0,0 +1,3 @@
+{% if cfg.views %}
+modules.load('view')
+{% endif %}
\ No newline at end of file