#!/bin/bash
#
# Params (set by setvars)
#	simple=1 => don't use hotplug nor ifup/ifdown

. ./setvars

# ensure that paths exist
mkdir -p $EAGLE_DIR
mkdir -p $EAGLESCRIPT_DIR
mkdir -p $PPP_DIR
mkdir -p $PPP_OPTIONS_DIR
mkdir -p $HOTPLUG_SCRIPT_DIR
mkdir -p $HOTPLUG_USERMAP_DIR

echo -e "\n\n${SEP_MSG}"
echo -e "${GREETING_MSG}"
echo -e "${SEP_MSG}"
echo -e "${INFO_MSG}"


# Degroup ?
if confirm "$DEGROUPE_MSG" 0 ; then
	DEGROUPE=1
else
	DEGROUPE=0
fi

# Don't run stopadsl if eagleconfig has never been run
if [ ! -f $EAGLESCRIPT_DIR/lock ] ; then
	fctStopAdsl -sf
fi

# =================== NON DEGROUPE =======================
if [ $DEGROUPE == 0 ] ; then
	# Search for existing User&Password
	OLD_PWD_FOUND=0
	if [ -f $PPP_DIR/chap-secrets ] ; then
		if grep -q "freeadsl" $PPP_DIR/chap-secrets ; then OLD_PWD_FOUND=1; fi
	fi
	if [ -f $PPP_DIR/pap-secrets ] ; then
		if grep -q "freeadsl" $PPP_DIR/pap-secrets ; then OLD_PWD_FOUND=1; fi
	fi
	if [ -f $PPP_OPTIONS_ADSL ] ; then
		if ! grep -q "freeadsl" $PPP_OPTIONS_ADSL ; then OLD_PWD_FOUND=0; fi
	else
		OLD_PWD_FOUND=0;
	fi
	# Old password found?
	if [ $OLD_PWD_FOUND == 1 ] ; then
		if ! confirm "$KEEP_OLD_PWD_MSG" 1 ; then
			OLD_PWD_FOUND=0
		fi
	fi
	# No User/Password or don't want to keep existing
	if [ $OLD_PWD_FOUND == 0 ] ; then
		# Ask for user and password:
		echo -e $LOGIN_MSG
		read FAI_LOGIN
		echo -e $PWD_MSG
		read -s FAI_PWD
		# Ask for data encryption or not
		if confirm "$PWD_ENCRYPT_MSG" 1 ; then
			PWD_ENCRYPT=1
		else
			PWD_ENCRYPT=0
		fi
	fi
fi
# --------------------------------------------------------

# ============== APPLY CHANGES TO SYSTEM =================
echo "DEGROUPE=$DEGROUPE" > $EAGLESCRIPT_DIR/script.conf

if [ $DEGROUPE == 0 ] ; then
	# user/password changed?
	if [ $OLD_PWD_FOUND == 0 ] ; then
		echo "user \"$FAI_LOGIN\"" > $PPP_OPTIONS_ADSL
		cat $EAGLESCRIPT_DIR/options >> $PPP_OPTIONS_ADSL
		# Now we must be careful:
		umask 0077
		if [ $PWD_ENCRYPT == 0 ] ; then
			PAP_CHAP="pap"
		else
			PAP_CHAP="chap"
		fi
		if [ -f $PPP_DIR/$PAP_CHAP-secrets ] ; then
			grep -v "freeadsl" $PPP_DIR/$PAP_CHAP-secrets > $PPP_DIR/$PAP_CHAP-secrets.temp
			grep -v "$FAI_LOGIN" $PPP_DIR/$PAP_CHAP-secrets.temp > $PPP_DIR/$PAP_CHAP-secrets
			rm -f $PPP_DIR/$PAP_CHAP-secrets.temp
		else
			echo "# Secrets for authentication using $PAPCHAP" > $PPP_DIR/$PAP_CHAP-secrets
			echo "# client        server  secret          IP addresses" >> $PPP_DIR/$PAP_CHAP-secrets
			echo "# userlogin     *       password        *" >> $PPP_DIR/$PAP_CHAP-secrets
		fi
		echo "$FAI_LOGIN *       $FAI_PWD *" >> $PPP_DIR/$PAP_CHAP-secrets
		# mire
		if ! grep -q "adsl@adsl" $PPP_DIR/$PAP_CHAP-secrets ; then
			echo "adsl@adsl	*	adsl	*" >> $PPP_DIR/$PAP_CHAP-secrets
		fi
		umask 0022
		echo "user \"adsl@adsl\"" > $PPP_OPTIONS_MIRE
		cat $EAGLESCRIPT_DIR/options >> $PPP_OPTIONS_MIRE
	fi

	# DNS
	# if resolv.conf is a file (not a link), it is saved before being deleted
	if [ -f /etc/resolv.conf ] ; then
		if [ ! -f /etc/resolv.conf.old ] ; then
			cp /etc/resolv.conf /etc/resolv.conf.old
		fi
	fi
	if [ "$DISTRIB" = "Mandrake" ] ; then
		# Mandrake use the ifup script to update /etc/resolv.conf
		touch /etc/resolv.conf
	else
		ln -sf $PPP_DIR/resolv.conf /etc/resolv.conf
	fi
else
	# remove and recreate resolv.conf to ensure that /etc/resolv.conf was not a link
	rm -f /etc/resolv.conf
	touch /etc/resolv.conf
fi

# VPI, VCI...
if [ $DEGROUPE == 0 ] ; then
	ln -sf $EAGLESCRIPT_DIR/eagle-usb.conf $EAGLE_DIR/eagle-usb.conf
else
	ln -sf $EAGLESCRIPT_DIR/eagle-usb_deg.conf $EAGLE_DIR/eagle-usb.conf
fi

# hotplug
if [ $SIMPLE == 0 ] ; then
	ln -sf $EAGLESCRIPT_DIR/eu_dsp $HOTPLUG_SCRIPT_DIR/eu_dsp
	RES="`whereis update-usb.usermap | cut -d ':' -f2`"
	if [ ! -z "$RES" ] ; then
		ln -sf $EAGLESCRIPT_DIR/usb.usermap $HOTPLUG_USERMAP_DIR/usb.usermap
		update-usb.usermap
	else
		if [ -e $HOTPLUG_USERMAP_DIR_NOUPD ] ; then
			grep -v "eu_dsp" $HOTPLUG_USERMAP_DIR_NOUPD > /tmp/usermap.temp
			cat /tmp/usermap.temp > $HOTPLUG_USERMAP_DIR_NOUPD
		fi
		cat $EAGLESCRIPT_DIR/usb.usermap >> $HOTPLUG_USERMAP_DIR_NOUPD
	fi
fi

# init.d
#ln -sf $EAGLESCRIPT_DIR/eu_init.d $INIT_DIR/eagleusb-adsl

# OK
echo -e "$GENER_MSG\n"
rm -f $EAGLESCRIPT_DIR/lock

# load module, dsp...
if ! lsmod | grep -q "${MODULE}" ; then
	echo -en "\n\n${MODULE_MSG}"
	depmod -a
	modprobe $MODULE 1>/dev/null 2>/dev/null
	RES=$?
	sleep 5s
	if [ $RES == 0 ] ; then
		echo $OK_MSG
	else
		echo $ERR_MSG
		exit 1
	fi
fi

if eaglestat | grep -q "${SEND_DSP}" ; then
	echo -en "\n$DSP_MSG"
	$EAGLE_CTRL -d 1>/dev/null 2>/dev/null
	if [ $? == 0 ] ; then
		echo $OK_MSG
	else
		echo $ERR_MSG
		exit 1
	fi
fi

echo -en "\n${WAIT_OPER_MSG}"
$EAGLE_CTRL -s 1>/dev/null 2>/dev/null
if [ $? == 0 ] ; then
	echo -e "$OK_MSG\n"
else
	echo $ERR_MSG
	exit 1
fi

INTERFACE=`${EAGLE_CTRL} -i 2>/dev/null`
if [ $? == 0 ] ; then
	if [ $SIMPLE == 0 ] ; then
		rm -f $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
		touch $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
		echo "DEVICE=$INTERFACE" >> $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
		if [ $DEGROUPE == 0 ] ; then
			echo "BOOTPROTO=static" >> $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
			echo "IPADDR=192.168.60.30" >> $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
			echo "NETMASK=255.255.255.0" >> $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
			echo "BROADCAST=192.168.60.255" >> $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
		else
			echo "BOOTPROTO=dhcp" >> $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
		fi
		echo "ONBOOT=no" >> $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
		echo "MII_NOT_SUPPORTED=yes" >> $NET_SCRIPTS_DIR/ifcfg-$INTERFACE
	fi
fi
