#!/bin/bash
# $Id: eu_config_bash,v 1.12 2004/08/16 20:56:32 mcoolive Exp $
# Name: eu_config_bash
# Goal: apply configuration to the system
# Author: Tux
# Params:

exit 123

set -- "${@//#--help/-h}"
set -- "${@//#--lang=/-l}"
set -- "${@//#--expert/-e}"
evalParams() {
	while getopts "hl:e" opt; do
		case $opt in
			h  )	echo -e $EAGLECONFIG_USAGE_MSG ; exit 0 ;;
			l  )	EU_LANG="$OPTARG" ;;
			e  )	EXPERT=1 ;;
			\? )	echo -e $EAGLECONFIG_USAGE_MSG ; exit 1 ;;
		esac
	done
}
#FORCE_LANG="$EU_LANG"
EXPERT=0
evalParams "$@"

# necessary to take in account $LANG parameter
[ $EU_LANG == "keep" ] || setStrings

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

# Connection details, use TLD for country + number to keep a sorted list
echo -e $ISP_LIST_MSG
echo -en \
"-----------------------------------------------------------------------\n"\

get_gata_from_isp() {
	LINETYPE="00000001"
	case "x$1" in
		"xAT01" )	VPI="01" ; VCI="20" ; ENC="06" ; COUNTRY="Austria" ; ISP_NAME="????" ;;
		"xBE01" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="Belgique" ; ISP_NAME="Belgacom, Tiscali.be" ;;
		"xBR01" )	VPI="08" ; VCI="23" ; ENC="01" ; COUNTRY="Brasil" ; ISP_NAME="Speedy/Telefonica" ;;
		"xBR02" )	VPI="00" ; VCI="21" ; ENC="01" ; COUNTRY="Brasil" ; ISP_NAME="Velox/Telemar" ;;
		"xBR03" )	VPI="00" ; VCI="23" ; ENC="01" ; COUNTRY="Brasil" ; ISP_NAME="Turbo/Brasil Telecom" ;;
		"xBR04" )	VPI="01" ; VCI="20" ; ENC="01" ; COUNTRY="Brasil" ; ISP_NAME="Rio Grande do Sul (RS)" ;;
		"xBG01" )	VPI="00" ; VCI="23" ; ENC="01" ; COUNTRY="Bulgaria" ; ISP_NAME="BTK POTS" ;;
		"xBG02" )	VPI="01" ; VCI="20" ; ENC="01" ; COUNTRY="Bulgaria" ; ISP_NAME="BTK ISDN" ;;
		"xDK01" )	VPI="00" ; VCI="65" ; ENC="03" ; COUNTRY="Denmark" ; ISP_NAME="????" ;;
		"xDE01" )	VPI="01" ; VCI="20" ; ENC="01" ; COUNTRY="Deutschland" ; ISP_NAME="DT (D.Telecom, 1&1...)" ;;
		"xES01" )	VPI="08" ; VCI="20" ; ENC="01" ; COUNTRY="Espaa" ; ISP_NAME="Telefonica" ;;
		"xES02" )	VPI="08" ; VCI="20" ; ENC="03" ; COUNTRY="Espaa" ; ISP_NAME="Telefonica" ;;
		"xES03" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="Espaa" ; ISP_NAME="Retevision, Eresmas..." ;;
		"xES04" )	VPI="01" ; VCI="20" ; ENC="??" ; COUNTRY="Espaa" ; ISP_NAME="Tiscali" ;;
		"xFI01" )	VPI="00" ; VCI="64" ; ENC="03" ; COUNTRY="Finland" ; ISP_NAME="Sonera" ;;
		"xFR01" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="France" ; ISP_NAME="FT (Free, Wanadoo...)" ;;
		"xFR02" )	VPI="08" ; VCI="23" ; ENC="01" ; COUNTRY="France" ; ISP_NAME="FT (Free, Wanadoo...)" ;;
		"xFR03" )	VPI="08" ; VCI="23" ; ENC="05" ; COUNTRY="France" ; ISP_NAME="Tiscali 128k" ;;
		"xFR04" )	VPI="08" ; VCI="24" ; ENC="04" ; COUNTRY="France" ; ISP_NAME="Free dgroup" ;;
		"xFR05" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="France" ; ISP_NAME="9online dgroup ou non" ;;
		"xFR06" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="France" ; ISP_NAME="Club-internet, tl2" ;;
		"xFR07" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="France" ; ISP_NAME="Tiscali.fr 512k" ;;
		"xGR01" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="Greece" ; ISP_NAME="????" ;;
		"xHU01" )	VPI="01" ; VCI="20" ; ENC="01" ; COUNTRY="Hungary" ; ISP_NAME="Matav" ;;
		"xIE01" )	VPI="08" ; VCI="23" ; ENC="01" ; COUNTRY="Ireland" ; ISP_NAME="????" ;;
		"xIT01" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="Italia" ; ISP_NAME="Telecom Italia, Tiscali" ;;
		"xIT02" )	VPI="08" ; VCI="4B" ; ENC="??" ; COUNTRY="Italia" ; ISP_NAME="MClink" ;;
		"xIT03" )	VPI="08" ; VCI="23" ; ENC="03" ; COUNTRY="Italia" ; ISP_NAME="Telecom Italia office" ;;
		"xNL01" )	VPI="08" ; VCI="30" ; ENC="06" ; COUNTRY="Netherlands" ; ISP_NAME="KPN" ;;
		"xPL01" )	VPI="00" ; VCI="23" ; ENC="06" ; COUNTRY="Polska" ; ISP_NAME="Telekomunikacja Polska" ;;
		"xPT01" )	VPI="00" ; VCI="23" ; ENC="01" ; COUNTRY="Portugal" ; ISP_NAME="PT" ;;
		"xSE01" )	VPI="08" ; VCI="23" ; ENC="01" ; COUNTRY="Sweden" ; ISP_NAME="Telia" ;;
		"xCH01" )	VPI="08" ; VCI="35" ; ENC="03" ; COUNTRY="Switzerland" ; ISP_NAME="????" ;;
		"xCH02" )	VPI="08" ; VCI="23" ; ENC="05" ; COUNTRY="Switzerland" ; ISP_NAME="BlueWin (Swisscom)" ;;
		"xUK01" )	VPI="00" ; VCI="26" ; ENC="06" ; COUNTRY="UK" ; ISP_NAME="BT (Tiscali...)" ;;
		* )			VPI="" ; VCI="" ; ENC="" ; COUNTRY="" ; ISP_NAME="" ;;
	esac
	case "x$ENC" in
		"x01" )	PROTOC="PPPoE LLC" ;;
		"x02" )	PROTOC="PPPoE VC" ;;
		"x03" )	PROTOC="Routed IP LLC" ;;
		"x04" )	PROTOC="Routed IP VC" ;;
		"x05" )	PROTOC="PPPoA LLC" ;;
		"x06" )	PROTOC="PPPoA VC" ;;
		* )		PROTOC="????" ;;
	esac
}

for ISP_TMP in AT01 BE01 BR01 BR02 BR03 BR04 BG01 BG02 DK01 DE01 ES01 ES02 ES03 ES04 FI01 FR01 FR02 FR03 FR04 FR05 FR06 FR07 GR01 HU01 IE01 IT01 IT02 IT03 NL01 PL01 PT01 SE01 CH01 CH02 UK01 ; do
	get_gata_from_isp $ISP_TMP
	COUNTRY="$COUNTRY                         " ; COUNTRY=${COUNTRY:0:11}
	ISP_NAME="$ISP_NAME                       " ; ISP_NAME=${ISP_NAME:0:23}
	echo "$ISP_TMP : $COUNTRY  $ISP_NAME  $VPI  $VCI  $ENC  $PROTOC"
done

echo -en "-----------------------------------------------------------------------\n"\
"?"

if [ ! -z "$ISP" ] ; then
	get_gata_from_isp $ISP
	if [ ! -z "$VPI" ] ; then
		echo -n "[$ISP]"
	else
		ISP=""
	fi
fi
read NEW_ISP
if [ ! -z "$NEW_ISP" ] ; then
	ISP="$NEW_ISP"
fi

get_gata_from_isp $ISP
# ISP is not in the list?
if [ -z "$VPI" ] ; then
	echo -e $WRONG_CHOICE_MSG
	exit 1
fi
# some data are missing for this ISP? :(
if [ "$VPI" = "??" ] || [ "$VCI" = "??" ] || [ "$ENC" = "??" ] ; then
	echo -e "\nThere are missing data for your ISP.\nPlease notify this on http://forum.eagle-usb.org\n"
	exit 1
fi
# translate params to 8 chars hex values
VPI="000000$VPI"
VCI="000000$VCI"
ENC="000000$ENC"
# $ENC => $PPPOX
encapsToPppox "$ENC"

if [ "$PPPOX" = "none" ] ; then
# ================== WITHOUT PPPD =====================
	echo -en $STATIC_IP_MSG
	read STATIC_IP
	if [ -z "$STATIC_IP" ] ; then STATIC_IP="none" ; fi
	if [ "$STATIC_IP" != "none" ] ; then
		if [ -e /etc/resolv.conf ] ; then
			echo -e "\nYour /etc/resolv.conf contains the following lines:"
			echo $SEP_MSG
			cat -s /etc/resolv.conf
			echo $SEP_MSG
			echo -e "You can modify this file manually if it contains wrong DNS."
		else
			echo -e "\nwarning: /etc/resolv.conf doesn't exist!"
		fi
	fi
else
# =================== WITH PPPD =======================
	#STATIC_IP="none"
	# Search for existing User&Password
	OLD_PWD_FOUND=0
	if [ -e $PPP_OPTIONS_ADSL ] ; then
		# the user name has to be in /etc/ppp/peers/adsl and (pap-secrets or chap-secrets)
		NAME_IN_OPTIONS=`grep user $PPP_OPTIONS_ADSL | cut -d ' ' -f2 | sed 's_"__g'`
		if [ ! -z $NAME_IN_OPTIONS ] ; then
			if [ -e $PPP_DIR/pap-secrets ] && grep -q "$NAME_IN_OPTIONS" $PPP_DIR/pap-secrets ; then
				OLD_PWD_FOUND=1
			fi
			if [ -e $PPP_DIR/chap-secrets ] && grep -q "$NAME_IN_OPTIONS" $PPP_DIR/chap-secrets ; then
				OLD_PWD_FOUND=1
			fi
		fi
	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 ISP_LOGIN
		echo -e $PWD_MSG
		read -s ISP_PWD
		# Ask for data encryption or not
		if confirm "$PWD_ENCRYPT_MSG" 1 ; then
			PWD_ENCRYPT=1
		else
			PWD_ENCRYPT=0
		fi
	else
		ISP_LOGIN="keep"
		ISP_PWD="keep"
		PWD_ENCRYPT="keep"
	fi
fi

# === init.d ===
if confirm "$START_ON_BOOT_MSG" $START_ON_BOOT ; then
	START_ON_BOOT=1
else
	START_ON_BOOT=0
fi

if [ $EXPERT == 1 ] ; then
	# === testconnec ===
	if confirm "$USE_TESTCONNEC_MSG" $USE_TESTCONNEC ; then
		USE_TESTCONNEC=1
	else
		USE_TESTCONNEC=0
	fi
	# === virtual interface name ===
	echo -e $FORCE_INTERFACE_MSG
	echo -n "[$FORCE_IF]"
	read REP
	if [ "x$REP" = "xauto" ] ; then
		FORCE_IF="auto"
	elif [ ! -z "$REP" ] ; then
		FORCE_IF="$REP"
	fi
fi
# --------------------------------------------------------

LSTOPTIONS="LINETYPE=$LINETYPE|VPI=$VPI|VCI=$VCI|ENC=$ENC|ISP=$ISP|ISP_LOGIN=$ISP_LOGIN|ISP_PWD=$ISP_PWD"
LSTOPTIONS="$LSTOPTIONS|PWD_ENCRYPT=$PWD_ENCRYPT|STATIC_IP=$STATIC_IP|START_ON_BOOT=$START_ON_BOOT"
LSTOPTIONS="$LSTOPTIONS|USE_TESTCONNEC=$USE_TESTCONNEC|EU_LANG=$EU_LANG|FORCE_IF=$FORCE_IF"
exec eagleconfig "$@" --params="$LSTOPTIONS"


#***************************************************************************
# $Log: eu_config_bash,v $
# Revision 1.12  2004/08/16 20:56:32  mcoolive
# - call to `setStrings' only when necessary
#
# Revision 1.11  2004/08/01 20:10:58  Tux
# - cosmetic changes
#
# Revision 1.10  2004/07/26 19:35:09  Tux
# - removed unused $EXPERT variable
#
# Revision 1.9  2004/07/16 21:40:19  Tux
# - wrong parameters for the ISP "Sonera"
#
# Revision 1.8  2004/07/16 21:08:16  Tux
# - simplify parameters processing
#
# Revision 1.7  2004/06/23 20:46:10  Tux
# - remove redundancy with ISP list
# - isp_to_no has been removed (now we use a single identifier)
#
# Revision 1.6  2004/06/20 16:05:18  baud123
# addition of new ISP
#
# Revision 1.5  2004/05/30 01:54:30  Tux
# - vars name "FAI..." => "ISP..."
#
# Revision 1.4  2004/05/24 21:26:35  Tux
# - wrong variable name (LT => LINETYPE)
#
# Revision 1.3  2004/05/23 20:02:28  Tux
# - ask for virtual interface name (expert mode only)
# - use "exec" to call eagleconfig
#
# Revision 1.2  2004/04/18 09:47:27  Tux
# - added expert param
#
# Revision 1.1  2004/04/04 18:48:51  Tux
# Initial revision
#
#***************************************************************************/
