Your IP : 216.73.216.170


Current Path : /var/lib/dpkg/info/
Upload File :
Current File : /var/lib/dpkg/info/bind9.postinst

#!/bin/sh

set -e

. /usr/share/debconf/confmodule

if [ "$1" = configure ]; then
    lastversion="$2";

    # lets give them a bind user/group in all cases.
    getent group bind >/dev/null 2>&1 || addgroup --system bind
    getent passwd bind >/dev/null 2>&1 ||
	adduser --system --home /var/cache/bind --no-create-home \
		--disabled-password --ingroup bind bind

    if [ -z "$lastversion" ] || dpkg --compare-versions "$lastversion" lt 1:9.4.2-2 ; then
	mkdir -p /var/lib/bind
	chown root:bind /var/lib/bind
	chmod 775 /var/lib/bind
    fi

    if [ ! -s /etc/bind/rndc.key ]; then
	rndc-confgen -r /dev/urandom -a
    fi

    if [ -f /etc/default/bind9 ] && \
       [ "$(cat /usr/share/bind9/bind9-default.md5sum)" = "$(md5sum /etc/default/bind9)" ]; then
        config="/etc/default/bind9"
    elif [ ! -e /etc/default/bind9 ]; then
        config="/etc/default/bind9"
    else 
        config="/etc/default/bind9.dpkg-dist"
    fi

    localconf=""
    if [ ! -f $config ]; then
	CONF=/etc/bind/named.conf
	for file in ${CONF} ${CONF}.local ${CONF}.default-zones; do
	    if [ -f ${file} ]; then
		theirs=$(md5sum $file | sed 's/ .*$//')
		mine=$(dpkg --status bind9 | grep "^ $file " | sed -n 's/.* //p')
		if [ "$mine" != "$theirs" ]; then
		    localconf="y"
		fi
	    else
		localconf="y"
	    fi
	done
	if [ -n "$localconf" ]; then
                db_reset bind9/start-as-user
	else
                db_set bind9/start-as-user bind || true
	fi
   
        echo '#' 
        echo '# run resolvconf?' >> $config
        db_get bind9/run-resolvconf
        if [ ! -z "$RET" ] && [ "$RET" = "true" ]; then
                echo "RESOLVCONF=yes" >> $config
        else
                echo "RESOLVCONF=no" >> $config
        fi

        db_get bind9/start-as-user
        USER=$RET
        db_get bind9/different-configuration-file
        CONFFILE=$RET
        
        echo '' >> $config
        echo '# startup options for the server' >> $config
        if [ ! -z "$USER" ] && [ ! -z "$CONFFILE" ]; then
                echo "OPTIONS=\"-u $USER -c $CONFFILE\"" >> $config
        elif [ ! -z "$USER" ]; then
                echo "OPTIONS=\"-u $USER\"" >> $config
        elif [ ! -z "$CONFFILE" ]; then
                echo "OPTIONS=\"-c $CONFFILE\"" >> $config
        else
                echo "OPTIONS=\"\"" >> $config
        fi
    else
        db_get bind9/run-resolvconf
         if [ ! -z "$RET" ] && [ "$RET" = "true" ]; then
	        sed -e "s#^\([[:space:]]*\)\(RESOLVCONF=[[:space:]]*\)[^ ]*#\1\2yes#g" -i $config
        else
	        sed -e "s#^\([[:space:]]*\)\(RESOLVCONF=[[:space:]]*\)[^ ]*#\1\2no#g" -i $config
        fi
        db_get bind9/start-as-user
        if [ ! -z "$RET" ]; then
            if [ ! -z "`grep OPTIONS $config`" ]; then
                if [ ! -z "`grep OPTIONS $config | grep '\-u'`" ]; then
                        sed -e "s#\([[:space:]]*OPTIONS[[:space:]]*\)=\"\([^\"]*\)-u[[:space:]]*[^\" ]*\([^\"]*\)\"#\1=\"\2-u $RET\3\"#g" -i $config
                else 
                        sed -e "s#\([[:space:]]*OPTIONS[[:space:]]*\)=\"\([^\"]*\)\"#\1=\"\2 -u $RET\"#g" -i $config
                fi
            else
                echo "OPTIONS=\"-u $RET\""
            fi
        fi
        db_get bind9/different-configuration-file
        if [ ! -z "$RET" ]; then
            if [ ! -z "`grep OPTIONS $config | grep '\-c'`" ]; then
                sed -e "s#\([[:space:]]*OPTIONS[[:space:]]*\)=\"\([^\"]*\)-c[[:space:]]*[^\" ]*\([^\"]*\)\"#\1=\"\2-c $RET\3\"#g" -i $config
            else 
                sed -e "s#\([[:space:]]*OPTIONS[[:space:]]*\)=\"\([^\"]*\)\"#\1=\"\2 -c $RET\"#g" -i $config
            fi
        fi
    fi

    if [ "$config" = "/etc/default/bind9" ]; then
        md5sum /etc/default/bind9 > /usr/share/bind9/bind9-default.md5sum
    fi

    uid=$(ls -ln /etc/bind/rndc.key | awk '{print $3}')
    if [ "$uid" = "0" ]; then
	[ -n "$localconf" ] || chown bind /etc/bind/rndc.key
	chgrp bind /etc/bind
	chmod g+s /etc/bind
	chgrp bind /etc/bind/rndc.key /var/run/named /var/cache/bind
	chgrp bind /etc/bind/named.conf* || true
	chmod g+r /etc/bind/rndc.key /etc/bind/named.conf* || true
	chmod g+rwx /var/run/named /var/cache/bind
    fi

    # Reload AppArmor profile
    APP_PROFILE="/etc/apparmor.d/usr.sbin.named"
    if [ -f "$APP_PROFILE" ] && aa-status --enabled 2>/dev/null; then
        apparmor_parser -r "$APP_PROFILE" || true
    fi

    if /bin/pidof /usr/sbin/named >/dev/null 2>&1; then
	invoke-rc.d bind9 restart
    else
    	invoke-rc.d bind9 start
    fi
fi

db_stop

# Automatically added by dh_installinit
if [ -x "/etc/init.d/bind9" ]; then
	update-rc.d bind9 defaults 15 85 >/dev/null || exit $?
fi
# End automatically added section