summaryrefslogtreecommitdiff
path: root/unbound.in
diff options
context:
space:
mode:
Diffstat (limited to 'unbound.in')
-rw-r--r--unbound.in25
1 files changed, 17 insertions, 8 deletions
diff --git a/unbound.in b/unbound.in
index b5fb7ecf53401..4ee0da7202633 100644
--- a/unbound.in
+++ b/unbound.in
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright (c) 2009 Roy Marples
+# Copyright (c) 2009-2011 Roy Marples
# All rights reserved
# unbound subscriber for resolvconf
@@ -30,34 +30,43 @@
. "@SYSCONFDIR@/resolvconf.conf" || exit 1
[ -z "$unbound_conf" ] && exit 0
[ -z "$RESOLVCONF" ] && eval "$(@PREFIX@/sbin/resolvconf -v)"
+NL="
+"
: ${unbound_pid:=/var/run/unbound.pid}
: ${unbound_service:=unbound}
: ${unbound_restart:=@RESTARTCMD ${unbound_service}@}
-newconf="# Generated by resolvconf\n"
+newconf="# Generated by resolvconf$NL"
for d in $DOMAINS; do
dn="${d%%:*}"
ns="${d#*:}"
- newconf="${newconf}\nforward-zone:\n\tname: \"$dn\"\n"
+ newconf="$newconf${NL}forward-zone:$NL name: \"$dn\"$NL"
while [ -n "$ns" ]; do
- newconf="${newconf}\tforward-addr: ${ns%%,*}\n"
+ newconf="$newconf forward-addr: ${ns%%,*}$NL"
[ "$ns" = "${ns#*,}" ] && break
ns="${ns#*,}"
done
done
if [ -n "$NAMESERVERS" ]; then
- newconf="${newconf}\nforward-zone:\n\tname: \".\"\n"
+ newconf="$newconf${NL}forward-zone:$NL name: \".\"$NL"
for n in $NAMESERVERS; do
- newconf="${newconf}\tforward-addr: $n\n"
+ newconf="$newconf forward-addr: $n$NL"
done
fi
+# Try to ensure that config dirs exist
+if type config_mkdirs >/dev/null 2>&1; then
+ config_mkdirs "$unbound_conf"
+else
+ @PREFIX@/sbin/resolvconf -D "$unbound_conf"
+fi
+
if [ ! -f "$unbound_conf" ] || \
- [ "$(cat "$unbound_conf")" != "$(printf "$newconf")" ]
+ [ "$(cat "$unbound_conf")" != "$(printf %s "$newconf")" ]
then
- printf "$newconf" >"$unbound_conf"
+ printf %s "$newconf" >"$unbound_conf"
# If we can't sent a HUP then force a restart
if [ -s "$unbound_pid" ]; then
if ! kill -HUP $(cat "$unbound_pid") 2>/dev/null; then