From: Aleš Date: Mon, 31 Jan 2022 19:48:39 +0000 (+0100) Subject: datamodel: network: added 'doh-legacy' to listen kinds X-Git-Tag: v6.0.0a1~45^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab6e510fe27f1a9760df08af4656642a91869e8c;p=thirdparty%2Fknot-resolver.git datamodel: network: added 'doh-legacy' to listen kinds --- diff --git a/manager/etc/knot-resolver/config.dev.yml b/manager/etc/knot-resolver/config.dev.yml index af60a483b..6360004a6 100644 --- a/manager/etc/knot-resolver/config.dev.yml +++ b/manager/etc/knot-resolver/config.dev.yml @@ -6,7 +6,7 @@ logging: - manager network: listen: - - interface: lo@5353 + - interface: 127.0.0.1@5353 server: workers: 1 rundir: etc/knot-resolver/runtime diff --git a/manager/knot_resolver_manager/datamodel/network_schema.py b/manager/knot_resolver_manager/datamodel/network_schema.py index cff8f2dd4..1cadc9cb7 100644 --- a/manager/knot_resolver_manager/datamodel/network_schema.py +++ b/manager/knot_resolver_manager/datamodel/network_schema.py @@ -14,7 +14,7 @@ from knot_resolver_manager.datamodel.types import ( ) from knot_resolver_manager.utils import SchemaNode -KindEnum = Literal["dns", "xdp", "dot", "doh2"] +KindEnum = Literal["dns", "xdp", "dot", "doh-legacy", "doh2"] class EdnsBufferSizeSchema(SchemaNode): @@ -80,7 +80,7 @@ class ListenSchema(SchemaNode): elif origin.interface: if origin.kind == "dot": return PortNumber(853) - elif origin.kind == "doh2": + elif origin.kind in ["doh-legacy", "doh2"]: return PortNumber(443) return PortNumber(53) return None diff --git a/manager/knot_resolver_manager/datamodel/templates/macros/network_macros.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/macros/network_macros.lua.j2 index ce05ff1da..933ecdfa6 100644 --- a/manager/knot_resolver_manager/datamodel/templates/macros/network_macros.lua.j2 +++ b/manager/knot_resolver_manager/datamodel/templates/macros/network_macros.lua.j2 @@ -1,5 +1,23 @@ +{% macro http_config(http_cfg, kind, tls=true) -%} +http.config({tls={{ 'true' if tls else 'false'}}, +{%- if http_cfg.cert_file -%} + cert='{{ http_cfg.cert_file }}', +{%- endif -%} +{%- if http_cfg.key_file -%} + key='{{ http_cfg.key_file }}', +{%- endif -%} +},'{{ kind }}') +{%- endmacro %} + + {% macro listen_kind(kind) -%} -'{{ 'tls' if kind == 'dot' else kind }}' +{%- if kind == "dot" -%} +'tls' +{%- elif kind == "doh-legacy" -%} +'doh_legacy' +{%- else -%} +'{{ kind }}' +{%- endif -%} {%- endmacro %} diff --git a/manager/knot_resolver_manager/datamodel/templates/network.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/network.lua.j2 index edcfd1771..9166b76b5 100644 --- a/manager/knot_resolver_manager/datamodel/templates/network.lua.j2 +++ b/manager/knot_resolver_manager/datamodel/templates/network.lua.j2 @@ -1,4 +1,4 @@ -{% from 'macros/network_macros.lua.j2' import network_listen %} +{% from 'macros/network_macros.lua.j2' import network_listen, http_config %} -- network.do-ipv4/6 net.ipv4 = {{ 'true' if cfg.network.do_ipv4 else 'false' }} @@ -65,6 +65,12 @@ renumber.config = { } {% endif %} +{% for listen in cfg.network.listen if listen.kind == "doh-legacy" %} +-- doh_legacy http config +modules.load('http') +{{ http_config(cfg.network.tls,"doh_legacy") }} +{% endfor %} + -- network.listen {% for listen in cfg.network.listen %} {{ network_listen(listen) }} diff --git a/manager/tests/unit/datamodel/test_network_schema.py b/manager/tests/unit/datamodel/test_network_schema.py index cadc2168f..b81fe69f3 100644 --- a/manager/tests/unit/datamodel/test_network_schema.py +++ b/manager/tests/unit/datamodel/test_network_schema.py @@ -26,6 +26,7 @@ def test_listen_kind_port_defaults(): assert ListenSchema({"unix-socket": "/tmp/kresd-socket"}).port == None assert ListenSchema({"interface": "::1"}).port == PortNumber(53) assert ListenSchema({"interface": "::1", "kind": "dot"}).port == PortNumber(853) + assert ListenSchema({"interface": "::1", "kind": "doh-legacy"}).port == PortNumber(443) assert ListenSchema({"interface": "::1", "kind": "doh2"}).port == PortNumber(443)