from knot_resolver_manager.datamodel.monitoring_schema import MonitoringSchema
from knot_resolver_manager.datamodel.network_schema import NetworkSchema
from knot_resolver_manager.datamodel.options_schema import OptionsSchema
-from knot_resolver_manager.datamodel.templates import MAIN_TEMPLATE
+from knot_resolver_manager.datamodel.templates import POLICY_CONFIG_TEMPLATE, WORKER_CONFIG_TEMPLATE
from knot_resolver_manager.datamodel.types import Dir, EscapedStr, IntPositive
from knot_resolver_manager.datamodel.view_schema import ViewSchema
from knot_resolver_manager.datamodel.webmgmt_schema import WebmgmtSchema
# FIXME the `cwd` argument is used only for configuring control socket path
# it should be removed and relative path used instead as soon as issue
# https://gitlab.nic.cz/knot/knot-resolver/-/issues/720 is fixed
- return MAIN_TEMPLATE.render(cfg=self, cwd=os.getcwd())
+ return WORKER_CONFIG_TEMPLATE.render(cfg=self, cwd=os.getcwd())
+
+ def render_lua_policy(self) -> str:
+ return POLICY_CONFIG_TEMPLATE.render(cfg=self, cwd=os.getcwd())
def get_rundir_without_validation(data: Dict[str, Any]) -> Dir:
_TEMPLATES_DIR = _get_templates_dir()
-def _import_main_template() -> Template:
- path = os.path.join(_TEMPLATES_DIR, "config.lua.j2")
+def _import_kresd_worker_config_template() -> Template:
+ path = os.path.join(_TEMPLATES_DIR, "worker-config.lua.j2")
+ with open(path, "r", encoding="UTF-8") as file:
+ template = file.read()
+ return template_from_str(template)
+
+
+def _import_kresd_policy_config_template() -> Template:
+ path = os.path.join(_TEMPLATES_DIR, "policy-config.lua.j2")
with open(path, "r", encoding="UTF-8") as file:
template = file.read()
return template_from_str(template)
return env.from_string(template)
-MAIN_TEMPLATE = _import_main_template()
+WORKER_CONFIG_TEMPLATE = _import_kresd_worker_config_template()
+
+
+POLICY_CONFIG_TEMPLATE = _import_kresd_policy_config_template()
--- /dev/null
+{% if not cfg.lua.script_only %}
+
+-- FFI library
+ffi = require('ffi')
+local C = ffi.C
+
+-- logging.level
+log_level('{{ cfg.logging.level }}')
+
+{% if cfg.logging.target -%}
+-- logging.target
+log_target('{{ cfg.logging.target }}')
+{%- endif %}
+
+{% if cfg.logging.groups %}
+-- logging.groups
+log_groups({
+{% for g in cfg.logging.groups %}
+{% if g != "manager" and g != "supervisord" and g != "cache-gc" %}
+ '{{ g }}',
+{% endif %}
+{% endfor %}
+})
+{% endif %}
+
+-- Config required for the cache opening
+cache.open({{ cfg.cache.size_max.bytes() }}, 'lmdb://{{ cfg.cache.storage }}')
+
+-- VIEWS section ------------------------------------
+{% include "views.lua.j2" %}
+
+-- LOCAL-DATA section -------------------------------
+{% include "local_data.lua.j2" %}
+
+-- FORWARD section ----------------------------------
+{% include "forward.lua.j2" %}
+
+{% endif %}
+
+quit()
-- NETWORK section ----------------------------------
{% include "network.lua.j2" %}
--- VIEWS section ------------------------------------
-{% include "views.lua.j2" %}
-
-- DNSSEC section -----------------------------------
{% include "dnssec.lua.j2" %}
--- LOCAL-DATA section -------------------------------
-{% include "local_data.lua.j2" %}
-
-- FORWARD section ----------------------------------
{% include "forward.lua.j2" %}