Revert [606cfc2003] as the parsing code relies on the trailing newline.
[openresolv] / unbound.in
index 6d8547a8877de229ad622f1e5d9e5d893c987a52..46d45246ff2e598bce7f37482c3e36188c66b70f 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Copyright (c) 2009 Roy Marples
+# Copyright (c) 2009-2016 Roy Marples
 # All rights reserved
 
 # unbound subscriber for resolvconf
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+unbound_insecure=
+
 [ -f "@SYSCONFDIR@"/resolvconf.conf ] || exit 0
 . "@SYSCONFDIR@/resolvconf.conf" || exit 1
 [ -z "$unbound_conf" ] && exit 0
-[ -z "$RESOLVCONF" ] && eval "$(@PREFIX@/sbin/resolvconf -v)"
+[ -z "$RESOLVCONF" ] && eval "$(@SBINDIR@/resolvconf -v)"
+NL="
+"
 
 : ${unbound_pid:=/var/run/unbound.pid}
-: ${unbound_restart:=@RESTARTCMD unbound@}
-newconf="# Generated by resolvconf\n"
+: ${unbound_service:=unbound}
+newconf="# Generated by resolvconf$NL"
 
 for d in $DOMAINS; do
        dn="${d%%:*}"
        ns="${d#*:}"
-       newconf="${newconf}\nforward-zone:\n\tname: \"$dn\"\n"
+       case "$unbound_insecure" in
+       [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
+               newconf="$newconf${NL}server:$NL"
+               newconf="$newconf       domain-insecure: \"$dn\"$NL"
+               ;;
+       esac
+       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
+       @SBINDIR@/resolvconf -D "$unbound_conf"
+fi
+
+restart_unbound()
+{
+       if [ -n "$unbound_restart" ]; then
+               eval $unbound_restart
+       elif [ -n "$RESTARTCMD" ]; then
+               set -- ${unbound_service}
+               eval $RESTARTCMD
+       else
+               @SBINDIR@/resolvconf -r ${unbound_service}
+       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
-                       eval $unbound_restart
+                       restart_unbound
                fi
        else
-               eval $unbound_restart
+               restart_unbound
        fi
 fi