]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: forward-zones: generating Lua code
authorAleš <ales.mrazek@nic.cz>
Wed, 1 Dec 2021 22:59:16 +0000 (23:59 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:53 +0000 (16:17 +0200)
manager/knot_resolver_manager/datamodel/templates/config.lua.j2
manager/knot_resolver_manager/datamodel/templates/forward_zones.lua.j2 [new file with mode: 0644]
manager/knot_resolver_manager/datamodel/templates/stub_zones.lua.j2

index e773fa3a1e8da85864dc7d2975e04d6bdba6c3c2..f8dbcfd967aed65a65d55b267232288ab6af1049 100644 (file)
@@ -21,6 +21,9 @@
 -- STUB-ZONES section
 {% include "stub_zones.lua.j2" %}
 
+-- FORWARD-ZONES section
+{% include "forward_zones.lua.j2" %}
+
 -- CACHE section
 {% include "cache.lua.j2" %}
 
diff --git a/manager/knot_resolver_manager/datamodel/templates/forward_zones.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/forward_zones.lua.j2
new file mode 100644 (file)
index 0000000..d4c3c24
--- /dev/null
@@ -0,0 +1,173 @@
+{% if cfg.forward_zones %}
+
+{% for name, zone in cfg.forward_zones.items() %}
+-- forward-zone: {{ name }}
+{% if zone.views %}
+{% for view_id in zone.views %}
+-- forward-zone: {{ name }} view: {{ view_id }}
+{% set view = cfg.views[view_id] %}
+
+{% set options = none %}
+{% if zone.options and view.options %}
+{% set options = zone.options|list + view.options|list %}
+{% elif zone.options %}
+{% set options = zone.options|list %}
+{% elif view.options %}
+{% set options = view.options|list %}
+{% endif %}
+
+{% if view.tsig %}
+{% for sig in view.tsig %}
+
+{% if options %}
+-- forward-zone: {{ name }} view: {{ view_id }} options
+view:tsig('{{ sig }}', policy.suffix(policy.FLAGS({
+{%- for flag in options -%}
+'{{ flag.upper().replace("-", "_") }}',
+{%- endfor -%}
+}), {todname('{{ name }}')}))
+{% endif %}
+
+-- forward-zone: {{ name }} view: {{ view_id }} servers
+{% for server in zone.servers %}
+view:tsig('{{ sig }}', policy.suffix(
+
+{%- if zone.tls -%}
+policy.TLS_FORWARD({{ '{{' }}'{{ server.address if server.address else server}}',
+
+{%- if server.pin_sha256 -%}
+pin_sha256=
+{%- if server.pin_sha256 is string -%}
+'{{ server.pin_sha256 }}',
+{%- else -%}
+{
+{%- for pin in server.pin_sha256 -%}
+'{{ pin }}',
+{%- endfor -%}
+},
+{%- endif -%}
+{%- endif -%}
+
+{%- if server.hostname -%}
+hostname='{{ server.hostname }}',
+{%- endif -%}
+
+{%- if server.ca_file -%}
+ca_file='{{ server.ca_file }}',
+{%- endif -%}
+
+{{ '}}' }})
+
+{%- else -%}
+policy.FORWARD('{{ server.address if server.address else server}}')
+{%- endif -%}
+, {todname('{{ name }}')}))
+
+{% endfor %}
+
+{% endfor %}
+{% endif %}
+
+{% if view.subnets %}
+{% for addr in view.subnets %}
+
+{% if options %}
+-- forward-zone: {{ name }} view: {{ view_id }} options
+view:addr('{{ addr }}', policy.suffix(policy.FLAGS({
+{%- for flag in options -%}
+'{{ flag.upper().replace("-", "_") }}',
+{%- endfor -%}
+}), {todname('{{ name }}')}))
+{% endif %}
+
+-- forward-zone: {{ name }} view: {{ view_id }} servers
+{% for server in zone.servers %}
+view:addr('{{ addr }}', policy.suffix(
+
+{%- if zone.tls -%}
+policy.TLS_FORWARD({{ '{{' }}'{{ server.address if server.address else server}}',
+
+{%- if server.pin_sha256 -%}
+pin_sha256=
+{%- if server.pin_sha256 is string -%}
+'{{ server.pin_sha256 }}',
+{%- else -%}
+{
+{%- for pin in server.pin_sha256 -%}
+'{{ pin }}',
+{%- endfor -%}
+},
+{%- endif -%}
+{%- endif -%}
+
+{%- if server.hostname -%}
+hostname='{{ server.hostname }}',
+{%- endif -%}
+
+{%- if server.ca_file -%}
+ca_file='{{ server.ca_file }}',
+{%- endif -%}
+
+{{ '}}' }})
+
+{%- else -%}
+policy.FORWARD('{{ server.address if server.address else server}}')
+{%- endif -%}
+, {todname('{{ name }}')}))
+
+{% endfor %}
+
+{% endfor %}
+{% endif %}
+
+{% endfor %}
+{% else %}
+
+{% if zone.options %}
+-- forward-zone: {{ name }} options
+policy.add(policy.suffix(policy.FLAGS({
+{%- for flag in zone.options -%}
+'{{ flag.upper().replace("-", "_") }}',
+{%- endfor -%}
+}), {todname('{{ name }}')}))
+{% endif %}
+
+-- forward-zone: {{ name }} servers
+{% for server in zone.servers %}
+policy.add(policy.suffix(
+{%- if zone.tls -%}
+policy.TLS_FORWARD({{ '{{' }}'{{ server.address if server.address else server}}',
+
+{%- if server.pin_sha256 -%}
+pin_sha256=
+{%- if server.pin_sha256 is string -%}
+'{{ server.pin_sha256 }}',
+{%- else -%}
+{
+{%- for pin in server.pin_sha256 -%}
+'{{ pin }}',
+{%- endfor -%}
+},
+{%- endif -%}
+{%- endif -%}
+
+{%- if server.hostname -%}
+hostname='{{ server.hostname }}',
+{%- endif -%}
+
+{%- if server.ca_file -%}
+ca_file='{{ server.ca_file }}',
+{%- endif -%}
+
+{{ '}}' }})
+
+{%- else -%}
+policy.FORWARD('{{ server.address if server.address else server}}')
+{%- endif -%}
+, {todname('{{ name }}')}))
+{% endfor %}
+
+{% endif %}
+
+{% endfor %}
+{% endif %}
index 68095706604f73a9911a4d0ecf0ca42ecd265ebc..d9f3c5a6460f6f3ef8808f21a2a84e8260d573b3 100644 (file)
@@ -1,17 +1,17 @@
 {% if cfg.stub_zones %}
 
-{% for name, stub in cfg.stub_zones.items() %}
+{% for name, zone in cfg.stub_zones.items() %}
 -- stub-zone: {{ name }}
-{% if stub.views %}
-{% for view_id in stub.views %}
+{% if zone.views %}
+{% for view_id in zone.views %}
 -- stub-zone: {{ name }} view: {{ view_id }}
 {% set view = cfg.views[view_id] %}
 
 {% 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 %}
+{% if zone.options and view.options %}
+{% set options = zone.options|list + view.options |list%}
+{% elif zone.options %}
+{% set options = zone.options|list %}
 {% elif view.options %}
 {% set options = view.options|list %}
 {% endif %}
@@ -29,7 +29,7 @@ view:tsig('{{ sig }}', policy.suffix(policy.FLAGS({
 {% endif %}
 
 -- stub-zone: {{ name }} view: {{ view_id }} servers
-{% for server in stub.servers %}
+{% for server in zone.servers %}
 view:tsig('{{ sig }}', policy.suffix(policy.STUB('{{ server }}'), {todname('{{ name }}')}))
 {% endfor %}
 
@@ -49,7 +49,7 @@ view:addr('{{ addr }}', policy.suffix(policy.FLAGS({
 {% endif %}
 
 -- stub-zone: {{ name }} view: {{ view_id }} servers
-{% for server in stub.servers %}
+{% for server in zone.servers %}
 view:addr('{{ addr }}', policy.suffix(policy.STUB('{{ server }}'), {todname('{{ name }}')}))
 {% endfor %}
 
@@ -58,18 +58,18 @@ view:addr('{{ addr }}', policy.suffix(policy.STUB('{{ server }}'), {todname('{{
 
 {% endfor %}
 {% else %}
-{% if stub.options %}
+{% if zone.options %}
 
 -- stub-zone: {{ name }} options
 policy.add(policy.suffix(policy.FLAGS({
-{%- for flag in stub.options -%}
+{%- for flag in zone.options -%}
 '{{ flag.upper().replace("-", "_") }}',
 {%- endfor -%}
 }), {todname('{{ name }}')}))
 {% endif %}
 
 -- stub-zone: {{ name }} servers
-{% for server in stub.servers %}
+{% for server in zone.servers %}
 policy.add(policy.suffix(policy.STUB('{{ server }}'), {todname('{{ name }}')}))
 {% endfor %}