- manager
network:
listen:
- - interface: lo@5353
+ - interface: 127.0.0.1@5353
server:
workers: 1
rundir: etc/knot-resolver/runtime
)
from knot_resolver_manager.utils import SchemaNode
-KindEnum = Literal["dns", "xdp", "dot", "doh2"]
+KindEnum = Literal["dns", "xdp", "dot", "doh-legacy", "doh2"]
class EdnsBufferSizeSchema(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
+{% 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 %}
-{% 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' }}
}
{% 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) }}
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)