1587392a5SHajimu UMEMOTO#!/bin/sh 23f2a60a1SPedro F. Giffuni# Copyright (c) 2007-2016 Roy Marples 3587392a5SHajimu UMEMOTO# All rights reserved 4587392a5SHajimu UMEMOTO 5587392a5SHajimu UMEMOTO# named subscriber for resolvconf 6587392a5SHajimu UMEMOTO 7587392a5SHajimu UMEMOTO# Redistribution and use in source and binary forms, with or without 8587392a5SHajimu UMEMOTO# modification, are permitted provided that the following conditions 9587392a5SHajimu UMEMOTO# are met: 10587392a5SHajimu UMEMOTO# * Redistributions of source code must retain the above copyright 11587392a5SHajimu UMEMOTO# notice, this list of conditions and the following disclaimer. 12587392a5SHajimu UMEMOTO# * Redistributions in binary form must reproduce the above 13587392a5SHajimu UMEMOTO# copyright notice, this list of conditions and the following 14587392a5SHajimu UMEMOTO# disclaimer in the documentation and/or other materials provided 15587392a5SHajimu UMEMOTO# with the distribution. 16587392a5SHajimu UMEMOTO# 17587392a5SHajimu UMEMOTO# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18587392a5SHajimu UMEMOTO# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19587392a5SHajimu UMEMOTO# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20587392a5SHajimu UMEMOTO# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21587392a5SHajimu UMEMOTO# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22587392a5SHajimu UMEMOTO# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23587392a5SHajimu UMEMOTO# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24587392a5SHajimu UMEMOTO# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25587392a5SHajimu UMEMOTO# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26587392a5SHajimu UMEMOTO# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27587392a5SHajimu UMEMOTO# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28587392a5SHajimu UMEMOTO 29587392a5SHajimu UMEMOTO[ -f "@SYSCONFDIR@"/resolvconf.conf ] || exit 0 30587392a5SHajimu UMEMOTO. "@SYSCONFDIR@/resolvconf.conf" || exit 1 31*9af6c78cSPedro F. Giffuni[ -z "${named_zones}${named_options}" ] && exit 0 32d7149f4eSGlen Barber[ -z "$RESOLVCONF" ] && eval "$(@SBINDIR@/resolvconf -v)" 33a02aba5fSHiroki SatoNL=" 34a02aba5fSHiroki Sato" 35587392a5SHajimu UMEMOTO 36587392a5SHajimu UMEMOTO# Platform specific kludges 37*9af6c78cSPedro F. Giffuniif [ -z "${named_service}${named_restart}" ] && 38*9af6c78cSPedro F. Giffuni [ -d "$RCDIR" ] && ! [ -x "$RCDIR"/named ] 39587392a5SHajimu UMEMOTOthen 403f2a60a1SPedro F. Giffuni if [ -x "$RCDIR"/bind9 ]; then 41587392a5SHajimu UMEMOTO # Debian and derivatives 42587392a5SHajimu UMEMOTO named_service=bind9 433f2a60a1SPedro F. Giffuni elif [ -x "$RCDIR"/rc.bind ]; then 44d7149f4eSGlen Barber # Slackware 45d7149f4eSGlen Barber named_service=rc.bind 46587392a5SHajimu UMEMOTO fi 47587392a5SHajimu UMEMOTOfi 48587392a5SHajimu UMEMOTO: ${named_service:=named} 493f2a60a1SPedro F. Giffuni 503f2a60a1SPedro F. Giffuni: ${named_pid:=/var/run/$named_service.pid} 513f2a60a1SPedro F. Giffuni[ -s "$named_pid" ] || named_pid=/var/run/$named_service/$named_service.pid 523f2a60a1SPedro F. Giffuni[ -s "$named_pid" ] || unset named_pid 533f2a60a1SPedro F. Giffuni 54a02aba5fSHiroki Satonewoptions="# Generated by resolvconf$NL" 55587392a5SHajimu UMEMOTOnewzones="$newoptions" 56587392a5SHajimu UMEMOTO 57587392a5SHajimu UMEMOTOforward= 58587392a5SHajimu UMEMOTOfor n in $NAMESERVERS; do 59587392a5SHajimu UMEMOTO case "$forward" in 60a02aba5fSHiroki Sato *"$NL $n;"*);; 61a02aba5fSHiroki Sato *) forward="$forward$NL $n;";; 62587392a5SHajimu UMEMOTO esac 63587392a5SHajimu UMEMOTOdone 64587392a5SHajimu UMEMOTOif [ -n "$forward" ]; then 65a02aba5fSHiroki Sato newoptions="${newoptions}forward first;${NL}forwarders {$forward${NL}};$NL" 66587392a5SHajimu UMEMOTOfi 67587392a5SHajimu UMEMOTO 68587392a5SHajimu UMEMOTOfor d in $DOMAINS; do 69a02aba5fSHiroki Sato newzones="${newzones}zone \"${d%%:*}\" {$NL" 70a02aba5fSHiroki Sato newzones="$newzones type forward;$NL" 71a02aba5fSHiroki Sato newzones="$newzones forward first;$NL forwarders {$NL" 72587392a5SHajimu UMEMOTO ns="${d#*:}" 73587392a5SHajimu UMEMOTO while [ -n "$ns" ]; do 74a02aba5fSHiroki Sato newzones="$newzones ${ns%%,*};$NL" 75587392a5SHajimu UMEMOTO [ "$ns" = "${ns#*,}" ] && break 76587392a5SHajimu UMEMOTO ns="${ns#*,}" 77587392a5SHajimu UMEMOTO done 78a02aba5fSHiroki Sato newzones="$newzones };$NL};$NL" 79587392a5SHajimu UMEMOTOdone 80587392a5SHajimu UMEMOTO 81d7149f4eSGlen Barber# Try to ensure that config dirs exist 82d7149f4eSGlen Barberif type config_mkdirs >/dev/null 2>&1; then 83d7149f4eSGlen Barber config_mkdirs "$named_options" "$named_zones" 84d7149f4eSGlen Barberelse 85d7149f4eSGlen Barber @SBINDIR@/resolvconf -D "$named_options" "$named_zones" 86d7149f4eSGlen Barberfi 87d7149f4eSGlen Barber 88587392a5SHajimu UMEMOTO# No point in changing files or reloading bind if the end result has not 89587392a5SHajimu UMEMOTO# changed 90587392a5SHajimu UMEMOTOchanged=false 91587392a5SHajimu UMEMOTOif [ -n "$named_options" ]; then 92587392a5SHajimu UMEMOTO if [ ! -f "$named_options" ] || \ 93a02aba5fSHiroki Sato [ "$(cat "$named_options")" != "$(printf %s "$newoptions")" ] 94587392a5SHajimu UMEMOTO then 95a02aba5fSHiroki Sato printf %s "$newoptions" >"$named_options" 96587392a5SHajimu UMEMOTO changed=true 97587392a5SHajimu UMEMOTO fi 98587392a5SHajimu UMEMOTOfi 99587392a5SHajimu UMEMOTOif [ -n "$named_zones" ]; then 100587392a5SHajimu UMEMOTO if [ ! -f "$named_zones" ] || \ 101a02aba5fSHiroki Sato [ "$(cat "$named_zones")" != "$(printf %s "$newzones")" ] 102587392a5SHajimu UMEMOTO then 103a02aba5fSHiroki Sato printf %s "$newzones" >"$named_zones" 104587392a5SHajimu UMEMOTO changed=true 105587392a5SHajimu UMEMOTO fi 106587392a5SHajimu UMEMOTOfi 107587392a5SHajimu UMEMOTO 1083f2a60a1SPedro F. Giffuni# named does not seem to work with SIGHUP which is a same 109587392a5SHajimu UMEMOTOif $changed; then 1103f2a60a1SPedro F. Giffuni if [ -n "$named_restart" ]; then 111587392a5SHajimu UMEMOTO eval $named_restart 1123f2a60a1SPedro F. Giffuni elif [ -n "$RESTARTCMD" ]; then 1133f2a60a1SPedro F. Giffuni set -- ${named_service} 114*9af6c78cSPedro F. Giffuni eval "$RESTARTCMD" 1153f2a60a1SPedro F. Giffuni else 1163f2a60a1SPedro F. Giffuni @SBINDIR@/resolvconf -r ${named_service} 1173f2a60a1SPedro F. Giffuni fi 118587392a5SHajimu UMEMOTOfi 119