From: Pieter Lexis Date: Wed, 29 Apr 2020 09:32:23 +0000 (+0200) Subject: Set socket-dir to RUNTIME_DIRECTORY under systemd. X-Git-Tag: dnsdist-1.5.0-rc3~54^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a5b0a54fa460c56fd895974ca41db4e869ae0e0;p=thirdparty%2Fpdns.git Set socket-dir to RUNTIME_DIRECTORY under systemd. RUNTIME_DIRECTORY is set by systemd to the value to `RuntimeDirectory` , which is managed by systemd and so it is safe to use for the socket-dir. --- diff --git a/pdns/common_startup.cc b/pdns/common_startup.cc index da3c8e3371..c9d7569859 100644 --- a/pdns/common_startup.cc +++ b/pdns/common_startup.cc @@ -70,7 +70,16 @@ void declareArguments() { ::arg().set("config-dir","Location of configuration directory (pdns.conf)")=SYSCONFDIR; ::arg().set("config-name","Name of this virtual configuration - will rename the binary image")=""; - ::arg().set("socket-dir",string("Where the controlsocket will live, ")+LOCALSTATEDIR+"/pdns when unset and not chrooted" )=""; + ::arg().set("socket-dir",string("Where the controlsocket will live, ")+LOCALSTATEDIR+"/pdns when unset and not chrooted" +#ifdef HAVE_SYSTEMD + + ". Set to the RUNTIME_DIRECTORY environment variable when that variable has a value (e.g. under systemd).")=""; + auto runtimeDir = getenv("RUNTIME_DIRECTORY"); + if (runtimeDir != nullptr) { + ::arg().set("socket-dir") = runtimeDir; + } +#else + )=""; +#endif ::arg().set("module-dir","Default directory for modules")=PKGLIBDIR; ::arg().set("chroot","If set, chroot to this directory for more security")=""; ::arg().set("logging-facility","Log under a specific facility")=""; diff --git a/pdns/pdns_recursor.cc b/pdns/pdns_recursor.cc index 712c9cc6cb..0db01c9d34 100644 --- a/pdns/pdns_recursor.cc +++ b/pdns/pdns_recursor.cc @@ -4946,7 +4946,16 @@ int main(int argc, char **argv) ::arg().set("socket-group","Group of socket")=""; ::arg().set("socket-mode", "Permissions for socket")=""; - ::arg().set("socket-dir",string("Where the controlsocket will live, ")+LOCALSTATEDIR+"/pdns-recursor when unset and not chrooted" )=""; + ::arg().set("socket-dir",string("Where the controlsocket will live, ")+LOCALSTATEDIR+"/pdns-recursor when unset and not chrooted" +#ifdef HAVE_SYSTEMD + + ". Set to the RUNTIME_DIRECTORY environment variable when that variable has a value (e.g. under systemd).")=""; + auto runtimeDir = getenv("RUNTIME_DIRECTORY"); + if (runtimeDir != nullptr) { + ::arg().set("socket-dir") = runtimeDir; + } +#else + )=""; +#endif ::arg().set("delegation-only","Which domains we only accept delegations from")=""; ::arg().set("query-local-address","Source IP address for sending queries")="0.0.0.0"; ::arg().set("query-local-address6","Source IPv6 address for sending queries. IF UNSET, IPv6 WILL NOT BE USED FOR OUTGOING QUERIES")="";