#! /bin/sh
#
# chkconfig: - 11 89
# description:	Starts and stops PPTP connection.
# processname: pptptunnel
# config: /etc/sysconfig/network
# config: /etc/sysconfig/pptp

# action - a little cheat to confuse the /etc/rc.d/rc

# Source function library.
. /etc/rc.d/init.d/functions

# Get config.
SourceIfNotEmpty /etc/sysconfig/network
SourceIfNotEmpty /etc/sysconfig/pptp

# Check that networking is up.
[ "$NETWORKING" != "no" ] || exit

LOCKFILE=/var/lock/subsys/pptp
RETVAL=0
pptp_command=/usr/sbin/pptp-command

start()
{
	echo -n "Starting PPTP connection: "
	if [ $PPTP_SET_HOSTNAME = "yes" ]; then
		TMPFILE=`mktemp /tmp/pptp.XXXXXX`
		if [ -f $TMPFILE ]; then
			$pptp_command start $PPTP_TUNNEL > $TMPFILE 2>/dev/null
			RETVAL=$?
			IPADDR=`awk -F"IP Address: " '/IP Address/ {print $2}' < $TMPFILE`
			rm -f $TMPFILE
			if [ $RETVAL -eq 0 ]; then 
				touch "$LOCKFILE"
				echo
				echo "IP Address: $IPADDR"
				HOSTNAME=`nslookup $IPADDR | awk '/Name/ {print $2}'`
				if [ "x$HOSTNAME" != "x" ]; then
			  		echo -n "Name: $HOSTNAME"
			  		hostname $HOSTNAME
			  		success
					echo
				else
			  		ERROR_MSG="Hostname lookup failed "
					echo -n $ERROR_MSG
					initlog -s "$ERROR_MSG" -n "pptptunnel"
					failure
					echo
			  		exit 1
				fi	
			else
				failure
				echo
				exit 1
			fi
		else
			echo
			ERROR_MSG="Can not create temporary file in /tmp "
			echo -n $ERROR_MSG
			initlog -s "$ERROR_MSG" -n "pptptunnel"
			failure
			echo
			exit 1
		fi
	else
		$pptp_command start $PPTP_TUNNEL &> /dev/null
		RETVAL=$?
		if [ $RETVAL -eq 0 ]; then
			success
			echo
		else
			failure
			echo
		fi
	fi
}

stop()
{
	echo -n "Shutting down PPTP connection: "
	status pptp &>/dev/null
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		$pptp_command stop &>/dev/null
		RETVAL=$?
		if [ $RETVAL -eq 0 ]; then
			rm -f "$LOCKFILE"
			success
			echo
		fi
	else
		failure
		echo
	fi
}

restart()
{
	stop
	start
}

# See how we were called.
case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	status)
		status pptp
		RETVAL=$?
		;;
	restart)
		restart
		;;
	condstop)
		if [ -f "$LOCKFILE" ]; then
			stop
		fi
		;;
	condrestart)
		if [ -f "$LOCKFILE" ]; then
			restart
		fi
		;;
	*)
		echo "Usage: ${0##*/} {start|stop|status|restart}"
		RETVAL=1
esac

exit $RETVAL
