From 9035bbba64a8a5d8981f6ccfa04c17fe83c824b0 Mon Sep 17 00:00:00 2001 From: Vasek Sraier Date: Mon, 6 Mar 2023 19:23:57 +0100 Subject: [PATCH] manager: update systemd service file with knot-resolver script and kresctl reload --- manager/knot_resolver_manager/utils/requests.py | 13 ++++++++++++- manager/tests/packaging/interactive/reload.sh | 5 +++++ systemd/knot-resolver.service.in | 5 ++--- 3 files changed, 19 insertions(+), 4 deletions(-) create mode 100755 manager/tests/packaging/interactive/reload.sh diff --git a/manager/knot_resolver_manager/utils/requests.py b/manager/knot_resolver_manager/utils/requests.py index 9eadfa79e..45d986f01 100644 --- a/manager/knot_resolver_manager/utils/requests.py +++ b/manager/knot_resolver_manager/utils/requests.py @@ -1,7 +1,8 @@ import socket from http.client import HTTPConnection +import sys from typing import Any, Optional, Union -from urllib.error import HTTPError +from urllib.error import HTTPError, URLError from urllib.request import AbstractHTTPHandler, Request, build_opener, install_opener, urlopen from typing_extensions import Literal @@ -35,6 +36,16 @@ def request( return Response(response.status, response.read().decode("utf8")) except HTTPError as err: return Response(err.code, err.read().decode("utf8")) + except URLError as err: + if err.errno == 111 or isinstance(err.reason, ConnectionRefusedError): + print("Connection refused.") + print(f"\tURL: {url}") + print("Is the URL correct?") + print("\tUnix socket would start with http+unix:// and URL encoded path.") + print("\tInet sockets would start with http:// and domain or ip") + else: + print(f"{err}: url={url}", file=sys.stderr) + sys.exit(1) # Code heavily inspired by requests-unixsocket diff --git a/manager/tests/packaging/interactive/reload.sh b/manager/tests/packaging/interactive/reload.sh new file mode 100755 index 000000000..9daa18901 --- /dev/null +++ b/manager/tests/packaging/interactive/reload.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +kresctl reload diff --git a/systemd/knot-resolver.service.in b/systemd/knot-resolver.service.in index 3c8d2477e..84efbfc55 100644 --- a/systemd/knot-resolver.service.in +++ b/systemd/knot-resolver.service.in @@ -9,15 +9,14 @@ Wants=nss-lookup.target [Service] Type=notify TimeoutStartSec=10s -ExecStart=/usr/bin/env python3 -m knot_resolver_manager --config=/etc/knot-resolver/config.yml +ExecStart=/usr/bin/env knot-resolver --config=/etc/knot-resolver/config.yml KillSignal=SIGINT WorkingDirectory=/var/run/knot-resolver/ User=@user@ Group=@group@ CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_SETPCAP AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_SETPCAP -# See systemd.service(5) for explanation, why we should replace this with a blocking request -# ExecReload=/usr/bin/env kill -HUP $MAINPID +ExecReload=/usr/bin/env kresctl --socket /var/run/knot-resolver/manager.sock reload [Install] WantedBy=multi-user.target \ No newline at end of file -- 2.47.3