diff options
author | ume <ume@FreeBSD.org> | 2011-03-18 12:09:27 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2011-03-18 12:09:27 +0000 |
commit | c23159e1a271c4648f80d76340aab96cb4ca502b (patch) | |
tree | 25f1b23c14ad5d0ecadb8559af0362e7d023accb /contrib/openresolv/unbound.in | |
parent | a2373388c1e92e5062c73b45da5d56b328a13549 (diff) | |
parent | e1520c69ccc9c503f85e049de8117e9e7fdb97c4 (diff) | |
download | FreeBSD-src-c23159e1a271c4648f80d76340aab96cb4ca502b.zip FreeBSD-src-c23159e1a271c4648f80d76340aab96cb4ca502b.tar.gz |
Import openresolv from vendor branch, actually.
Helped by: jhb
Diffstat (limited to 'contrib/openresolv/unbound.in')
-rw-r--r-- | contrib/openresolv/unbound.in | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/contrib/openresolv/unbound.in b/contrib/openresolv/unbound.in new file mode 100644 index 0000000..b5fb7ec --- /dev/null +++ b/contrib/openresolv/unbound.in @@ -0,0 +1,69 @@ +#!/bin/sh +# Copyright (c) 2009 Roy Marples +# All rights reserved + +# unbound subscriber for resolvconf + +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +[ -f "@SYSCONFDIR@"/resolvconf.conf ] || exit 0 +. "@SYSCONFDIR@/resolvconf.conf" || exit 1 +[ -z "$unbound_conf" ] && exit 0 +[ -z "$RESOLVCONF" ] && eval "$(@PREFIX@/sbin/resolvconf -v)" + +: ${unbound_pid:=/var/run/unbound.pid} +: ${unbound_service:=unbound} +: ${unbound_restart:=@RESTARTCMD ${unbound_service}@} +newconf="# Generated by resolvconf\n" + +for d in $DOMAINS; do + dn="${d%%:*}" + ns="${d#*:}" + newconf="${newconf}\nforward-zone:\n\tname: \"$dn\"\n" + while [ -n "$ns" ]; do + newconf="${newconf}\tforward-addr: ${ns%%,*}\n" + [ "$ns" = "${ns#*,}" ] && break + ns="${ns#*,}" + done +done + +if [ -n "$NAMESERVERS" ]; then + newconf="${newconf}\nforward-zone:\n\tname: \".\"\n" + for n in $NAMESERVERS; do + newconf="${newconf}\tforward-addr: $n\n" + done +fi + +if [ ! -f "$unbound_conf" ] || \ + [ "$(cat "$unbound_conf")" != "$(printf "$newconf")" ] +then + printf "$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 + fi + else + eval $unbound_restart + fi +fi |