]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
manager: generated config: opening control socket at correct path with stable id
authorVasek Sraier <git@vakabus.cz>
Sat, 5 Feb 2022 22:31:33 +0000 (23:31 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:54 +0000 (16:17 +0200)
manager/knot_resolver_manager/datamodel/config_schema.py
manager/knot_resolver_manager/datamodel/templates/config.lua.j2

index 526d9b86a0953bc23c315af856eebcff26ed48e9..55c33711d5b7c9e36df16d006e5e5008d7dd156c 100644 (file)
@@ -1,4 +1,5 @@
 import os
+import pathlib
 import sys
 from typing import Dict, Optional, Union
 
@@ -117,4 +118,7 @@ class KresConfig(SchemaNode):
         return obj.dns64
 
     def render_lua(self) -> str:
-        return _MAIN_TEMPLATE.render(cfg=self)  # pyright: reportUnknownMemberType=false
+        # 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())  # pyright: reportUnknownMemberType=false
index a8ef7d7b136204ba086140ae5b3a4bcc5d6499bb..de5d64fdf844925e6c7ba5e863ed51ce75d1cdc5 100644 (file)
 {% if cfg.lua.script %}
 {{ cfg.lua.script }}
 {% endif %}
+
+-- static config used for manager's needs
+local ffi = require('ffi')
+local id = os.getenv('SYSTEMD_INSTANCE')
+if not id then
+       log_err(ffi.C.LOG_GRP_SYSTEM, 'environment variable $SYSTEMD_INSTANCE not set, which should not have been possible due to running under manager')
+else
+       -- Bind to control socket in CWD (= rundir in config)
+    -- FIXME replace with relative path after fixing https://gitlab.nic.cz/knot/knot-resolver/-/issues/720
+       local path = '{{ cwd }}/control/'..id
+    log_warn(ffi.C.LOG_GRP_SYSTEM, 'path = ' .. path)
+       local ok, err = pcall(net.listen, path, nil, { kind = 'control' })
+       if not ok then
+               log_warn(ffi.C.LOG_GRP_NETWORK, 'bind to '..path..' failed '..err)
+       end
+end