From: Vasek Sraier Date: Sat, 5 Feb 2022 22:31:33 +0000 (+0100) Subject: manager: generated config: opening control socket at correct path with stable id X-Git-Tag: v6.0.0a1~43^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3bec5f5c8f3db30a5216649a9b4ca4043bb5acea;p=thirdparty%2Fknot-resolver.git manager: generated config: opening control socket at correct path with stable id --- diff --git a/manager/knot_resolver_manager/datamodel/config_schema.py b/manager/knot_resolver_manager/datamodel/config_schema.py index 526d9b86a..55c33711d 100644 --- a/manager/knot_resolver_manager/datamodel/config_schema.py +++ b/manager/knot_resolver_manager/datamodel/config_schema.py @@ -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 diff --git a/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 b/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 index a8ef7d7b1..de5d64fdf 100644 --- a/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 +++ b/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 @@ -52,3 +52,19 @@ {% 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