]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: add /lua/policy-script* lua-policy-script 1771/head
authorVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 1 Dec 2025 19:36:20 +0000 (20:36 +0100)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 1 Dec 2025 20:15:18 +0000 (21:15 +0100)
python/knot_resolver/datamodel/lua_schema.py
python/knot_resolver/datamodel/templates/policy-loader.lua.j2

index 56e8ee09581c8d0d92fd3d9ae7c97ea44fa8955a..b32a8c2c1268594543b63411662c8bd67003f603 100644 (file)
@@ -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")
index 0b99970339afd3dd7d810f31562dfd2c4ac1d748..10d599af0a50c334ac28007e4f30891f14841316 100644 (file)
@@ -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()