From: Vladimír Čunát Date: Mon, 1 Dec 2025 19:36:20 +0000 (+0100) Subject: datamodel: add /lua/policy-script* X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Flua-policy-script;p=thirdparty%2Fknot-resolver.git datamodel: add /lua/policy-script* --- diff --git a/python/knot_resolver/datamodel/lua_schema.py b/python/knot_resolver/datamodel/lua_schema.py index 56e8ee095..b32a8c2c1 100644 --- a/python/knot_resolver/datamodel/lua_schema.py +++ b/python/knot_resolver/datamodel/lua_schema.py @@ -10,14 +10,20 @@ class LuaSchema(ConfigSchema): --- script_only: Ignore declarative configuration and use only Lua script or file defined in this section. - script: Custom Lua configuration script. - script_file: Path to file that contains Lua configuration script. + script: Custom Lua configuration script (for workers). + script_file: Path to file that contains Lua configuration script (for workers). + policy_script: Custom Lua configuration script for policy-loader. + policy_script_file: Path to file that contains Lua configuration script for policy-loader. """ script_only: bool = False script: Optional[str] = None script_file: Optional[ReadableFile] = None + policy_script: Optional[str] = None + policy_script_file: Optional[ReadableFile] = None def _validate(self) -> None: if self.script and self.script_file: raise ValueError("'lua.script' and 'lua.script-file' are both defined, only one can be used") + if self.policy_script and self.policy_script_file: + raise ValueError("'lua.policy-script' and 'lua.policy-script-file' are both defined, only one can be used") diff --git a/python/knot_resolver/datamodel/templates/policy-loader.lua.j2 b/python/knot_resolver/datamodel/templates/policy-loader.lua.j2 index 0b9997033..10d599af0 100644 --- a/python/knot_resolver/datamodel/templates/policy-loader.lua.j2 +++ b/python/knot_resolver/datamodel/templates/policy-loader.lua.j2 @@ -42,5 +42,18 @@ cache.open({{ cfg.cache.size_max.bytes() }}, 'lmdb://{{ cfg.cache.storage }}') {% endif %} +-- LUA section -------------------------------------- +-- Custom Lua code cannot be validated + +{% if cfg.lua.policy_script_file %} +{% import cfg.lua.policy_script_file as policy_script_file %} +{{ policy_script_file }} +{% endif %} + +{% if cfg.lua.policy_script %} +{{ cfg.lua.policy_script }} +{% endif %} + + -- exit policy-loader properly quit()