#!/bin/sh
#
#  pppoe - start pppoe connection
#  
#  Prerequisites:
#    1. tmpfs should be mounted on /tmp
#    2. /tmp/ppp is created
#    3. tinydb has started
#

RETVAL=0

umask 077

TMP_PPP=/tmp/ppp
PAP_SECRETS_TPL=/etc/ppp/pap-secrets-tmpl
PAP_SECRETS=${TMP_PPP}/pap-secrets
CHAP_SECRETS_TPL=/etc/ppp/chap-secrets-tmpl
CHAP_SECRETS=${TMP_PPP}/chap-secrets
PPPOE_CONF_TPL=/etc/ppp/pppoe.conf-tmpl
PPPOE_CONF=${TMP_PPP}/pppoe.conf
case "$1" in
  start)
	echo -n $"Starting pppoe services: ---->"
	# check if tmpfs is mounted
	MNT=$(/bin/mount)
	TMPFS=${MNT#*'tmpfs on '}
	TMPFS=${TMPFS%' type'*}
	if [ ! "$TMPFS" = '/tmp' ] ; then
	    echo "tmpfs not mounted on /tmp."
	    exit 1
	fi
	
	mkdir -p /tmp/ppp
	
	# check if config template exists
	if [ ! -f ${PAP_SECRETS_TPL} ] || [ ! -f ${CHAP_SECRETS_TPL} ]  \
	     || [ ! -f ${PPPOE_CONF_TPL} ] ; then
	  echo "FAILED!"
	  exit 1
	fi
	
	# Get DB data
	USER=$(/usr/bin/GetDBData 6_Other PAccount 3)
	PASSWD=$(/usr/bin/GetDBData 6_Other PPwd 3)
	
	# prepare config files
	# /etc/ppp/pap-secrets, /etc/ppp/chap-secrets, 
	# /etc/ppp/pppoe.conf
	sed -e "s/@USERNAME@/${USER}/g" -e "s/@PASSWORD@/${PASSWD}/g" ${PAP_SECRETS_TPL} > ${PAP_SECRETS}
	sed -e "s/@USERNAME@/${USER}/g" -e "s/@PASSWORD@/${PASSWD}/g" ${CHAP_SECRETS_TPL} > ${CHAP_SECRETS}
	sed -e "s/@USERNAME@/${USER}/g" ${PPPOE_CONF_TPL} > ${PPPOE_CONF}

	if [ "$DEBUG" = "1" ] ; then
	    DEBUG=1 /sbin/pppoe-start > /dev/null
	else
	    /sbin/pppoe-start > /dev/null
	fi
	
	# only one invocation of ifconfig might get the ppp0 interface
	# even the interface is not brought up, weird!!!
	PPP0=$(/sbin/ifconfig ppp0)
	PPP1=$(/sbin/ifconfig ppp0)
	RETVAL=$?
	if [ $RETVAL = "1" ] ; then
	    rm -f $PAP_SECRETS $CHAP_SECRETS $PPPOE_CONF
	fi
	echo
	exit $RETVAL
	;;
  stop)
	echo $"Shutting down pppoe connection: ---->"
	pppoe-stop
	RETVAL=$?
	echo
	exit $RETVAL
	;;
esac
