/ppp/ip-down.d/0dns-down
http://github.com/brinkman83/bashrc · Shell · 83 lines · 40 code · 22 blank · 21 comment · 15 complexity · c54aa38483b4467430dd1c15ba9f4a49 MD5 · raw file
- #! /bin/sh
- # $Id: 0dns-down,v 1.2 2004/07/31 20:49:04 john Exp $
- # 0dns-down by John Hasler 1999-2004
- # Any possessor of a copy of this program may treat it as if it
- # were in the public domain. I waive all rights.
- # Rev. Apr 12 2004 to use resolvconf if installed.
- # 0dns-down takes down what 0dns-up sets up.
- # If pppconfig has been removed we are not supposed to do anything.
- test -f /usr/sbin/pppconfig || exit 0
- # Strip options.
- PROVIDER=`echo "$PPP_IPPARAM" | cut -d' ' -f1`
- ETC="/etc"
- RUNDIR="/var/cache/pppconfig"
- RESOLVCONF="$ETC/resolv.conf"
- RESOLVBAK="$RUNDIR/resolv.conf.bak.$PROVIDER"
- TEMPRESOLV="$RUNDIR/0dns.$PROVIDER"
- PPPRESOLV="$ETC/ppp/resolv"
- if [ -x /sbin/resolvconf ]; then
- [ "$1" = "0dns-clean" ] && exit 0
- test -n "$PPP_IFACE" || exit 1
- /sbin/resolvconf -d "${PPP_IFACE}.pppconfig"
- fi
- umask 022
- cd "$RUNDIR" || exit 1
- # Are we being called by dns-clean? If so fix up /etc/resolv.conf
- # and clean out /var/cache/pppconfig.
- if [ "$1" = "0dns-clean" ]
- then
- # Get the name of the provider active when we went down. Assume there was only one.
- PROVIDER=`ls -t resolv.conf.bak.* 2>/dev/null | awk 'BEGIN {FS = "." } /resolv\.conf\.bak/ {print $NF} {exit}'`
- # If we don't have a provider we have nothing to do.
- if [ -n "$PROVIDER " ]
- then
- RESOLVBAK="$RUNDIR/resolv.conf.bak.$PROVIDER"
- [ -s "$RESOLVBAK" ] && /bin/cp -Lp "$RESOLVBAK" "$RESOLVCONF"
- fi
- exit 0
- fi
- # If we don't have a provider we have nothing to do.
- [ -z "$PROVIDER" ] && exit 0
- # Is PROVIDER something we can use?
- test -f "$PPPRESOLV/$PROVIDER" || exit 0
- # It is not an error for RESOLVBAK not to exist.
- if [ ! -f "$RESOLVBAK" ]
- then
- rm -f "$TEMPRESOLV"
- exit 0
- fi
- # Make sure that the resolv.conf that 0dns-up installed has not been
- # altered. If has give up.
- if [ `stat -c %Y "$TEMPRESOLV"` -ne `stat -c %Y "$RESOLVCONF"` ]
- then
- rm -f "$TEMPRESOLV" "$RESOLVBAK"
- exit 0
- fi
- # Restore resolv.conf. Follow symlinks.
- /bin/cp -Lp "$RESOLVBAK" "$RESOLVCONF" || exit 1
- rm -f "$RESOLVBAK" "$TEMPRESOLV"
- # Tell nscd about what we've done.
- # Restart nscd because resolv.conf has changed
- [ -x /etc/init.d/nscd ] && { /etc/init.d/nscd restart || true ; }