#!/bin/bash
# $Id: eu_config_bash,v 1.19 2004/11/07 15:04:37 baud123 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
# see http://www.iana.org/cctld/cctld-whois.htm
# VCI is in hexadecimal !!!
echo -e $ISP_LIST_MSG
echo -en \
"-----------------------------------------------------------------------\n"\

get_gata_from_isp() {
	LINETYPE="00000001"
	case "x$1" in
		"xAR01" )	VPI="01" ; VCI="23" ; ENC="01" ; COUNTRY="Argentina" ; ISP_NAME="Speedy" ;;
		"xAT01" )	VPI="01" ; VCI="20" ; ENC="06" ; COUNTRY="Austria" ; ISP_NAME="AON" ;;
		"xAT02" )	VPI="01" ; VCI="23" ; ENC="01" ; COUNTRY="Austria" ; ISP_NAME="Telstra" ;;
		"xBE01" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="Belgique" ; ISP_NAME="Belgacom, Tiscali.be" ;;
		"xBE02" )	VPI="08" ; VCI="23" ; ENC="05" ; COUNTRY="Belgique" ; ISP_NAME="Turboline" ;;
		"xBE03" )	VPI="08" ; VCI="23" ; ENC="03" ; COUNTRY="Belgique" ; ISP_NAME="ADSL Office" ;;
		"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" ;;
		"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)" ;;
		"xDE01" )	VPI="01" ; VCI="20" ; ENC="01" ; COUNTRY="Deutschland" ; ISP_NAME="DT (D.Telecom, 1&1...)" ;;
		"xDK01" )	VPI="00" ; VCI="65" ; ENC="03" ; COUNTRY="Denmark" ; ISP_NAME="????" ;;
		"xES01" )	VPI="08" ; VCI="20" ; ENC="01" ; COUNTRY="Espaa" ; ISP_NAME="Telefonica IP dinamica" ;;
		"xES02" )	VPI="08" ; VCI="20" ; ENC="03" ; COUNTRY="Espaa" ; ISP_NAME="Telefonica IP fija" ;;
		"xES03" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="Espaa" ; ISP_NAME="Wanadoo, Retevision, Eresmas..." ;;
		"xES04" )	VPI="08" ; VCI="20" ; ENC="01" ; COUNTRY="Espaa" ; ISP_NAME="Wanadoo PPPoE" ;;
		"xES05" )	VPI="08" ; VCI="20" ; ENC="03" ; COUNTRY="Espaa" ; ISP_NAME="Wanadoo IP fija" ;;
		"xES06" )	VPI="01" ; VCI="20" ; ENC="06" ; COUNTRY="Espaa" ; ISP_NAME="Tiscali" ;;
		"xES07" )	VPI="00" ; VCI="23" ; ENC="06" ; COUNTRY="Espaa" ; ISP_NAME="Arrakis" ;;
		"xES08" )	VPI="00" ; VCI="23" ; ENC="06" ; COUNTRY="Espaa" ; ISP_NAME="Auna" ;;
		"xES09" )	VPI="00" ; VCI="21" ; ENC="06" ; COUNTRY="Espaa" ; ISP_NAME="Communitel" ;;
		"xES10" )	VPI="08" ; VCI="20" ; ENC="01" ; COUNTRY="Espaa" ; ISP_NAME="Euskatel" ;;
		"xES11" )	VPI="01" ; VCI="21" ; ENC="06" ; COUNTRY="Espaa" ; ISP_NAME="Uni2" ;;
		"xES12" )	VPI="08" ; VCI="20" ; ENC="01" ; COUNTRY="Espaa" ; ISP_NAME="Ya.com PPPoE" ;;
		"xES13" )	VPI="08" ; VCI="20" ; ENC="03" ; COUNTRY="Espaa" ; ISP_NAME="Ya.com static" ;;
		"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="????" ;;
		"xIL01" )	VPI="08" ; VCI="30" ; ENC="06" ; COUNTRY="Israel" ; ISP_NAME="Bezeq" ;;
		"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" ;;
		"xIT01" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="Italia" ; ISP_NAME="Tiscali.it" ;;
		"xIT03" )	VPI="08" ; VCI="23" ; ENC="03" ; COUNTRY="Italia" ; ISP_NAME="Telecom Italia office" ;;
		"xIT04" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="Italia" ; ISP_NAME="Alice" ;;
		"xLT01" )	VPI="08" ; VCI="23" ; ENC="01" ; COUNTRY="Lithuania" ; ISP_NAME="Lietuvos Telekomas" ;;
		"xMA01" )	VPI="08" ; VCI="23" ; ENC="06" ; COUNTRY="Maroc" ; ISP_NAME="Maroc Telecom" ;;
		"xNL01" )	VPI="08" ; VCI="30" ; ENC="06" ; COUNTRY="Netherlands" ; ISP_NAME="KPN" ;;
		"xNL02" )	VPI="00" ; VCI="21" ; ENC="03" ; COUNTRY="Netherlands" ; ISP_NAME="Eager Telecom" ;;
		"xNL03" )	VPI="00" ; VCI="22" ; ENC="03" ; COUNTRY="Netherlands" ; ISP_NAME="Tiscali" ;;
		"xNL04" )	VPI="00" ; VCI="20" ; ENC="03" ; COUNTRY="Netherlands" ; ISP_NAME="Versatel" ;;
		"xPL01" )	VPI="00" ; VCI="23" ; ENC="06" ; COUNTRY="Polska" ; ISP_NAME="Telekomunikacja Polska" ;;
		"xPL02" )	VPI="08" ; VCI="23" ; ENC="01" ; COUNTRY="Polska" ; ISP_NAME="Netia neostrada" ;;
		"xPT01" )	VPI="00" ; VCI="23" ; ENC="01" ; COUNTRY="Portugal" ; ISP_NAME="PT" ;;
		"xSE01" )	VPI="08" ; VCI="23" ; ENC="01" ; COUNTRY="Sweden" ; ISP_NAME="Telia" ;;
		"xSI01" )	VPI="01" ; VCI="20" ; ENC="01" ; COUNTRY="Sloviana" ; ISP_NAME="SiOL" ;;
		"xCH01" )	VPI="08" ; VCI="35" ; ENC="03" ; COUNTRY="Switzerland" ; ISP_NAME="????" ;;
		"xCH02" )	VPI="08" ; VCI="23" ; ENC="05" ; COUNTRY="Switzerland" ; ISP_NAME="BlueWin (Swisscom)" ;;
		"xTH01" )	VPI="00" ; VCI="64" ; ENC="01" ; COUNTRY="Thailand" ; ISP_NAME="Asianet" ;;
		"xUK01" )	VPI="00" ; VCI="26" ; ENC="06" ; COUNTRY="UK" ; ISP_NAME="BT, Tiscali uk" ;;
		"xUK01" )	VPI="00" ; VCI="26" ; ENC="06" ; COUNTRY="UK" ; ISP_NAME="Tiscali uk" ;;
		* )			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 AR01 AT01 AT02 BE01 BE02 BE03 BR01 BR02 BR03 BR04 BG01 BG02 DK01 DE01 ES01 ES02 ES03 ES04 ES05 ES06 ES07 ES08 ES09 ES10 ES11 ES12 ES13 FI01 FR01 FR02 FR03 FR04 FR05 FR06 FR07 GR01 HU01 IE01 IT01 IT02 IT03 IT04 LT01 MA01 NL01 NL02 NL03 NL04 PL01 PL02 PT01 SE01 SI01 CH01 CH02 TH01 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

# === let pppd or dhclient update DNS list? ===
if [ "$PPPOX" = "none" ] ; then
	UPDATE_DNS=1
else
	if [ $EXPERT == 1 ] ; then
		if confirm "$UPDATE_DNS_MSG" $UPDATE_DNS ; then
			UPDATE_DNS=1
		else
			UPDATE_DNS=0
		fi
	else
		# NOTE :
		# - always considering "UPDATE_DNS=1" is a bad solution
		# (if the user launch eagleconfig a second time in normal mode,
		# UPDATE_DNS would always switch to 1)
		# - use a test like "grep -q usepeerdns $PPP_OPTIONS_ADSL" may
		# be buggy because this script doesn't exist or is not
		# up to date when eu_config_bash is lauched
		UPDATE_DNS=0
		if [ ! -f $PPP_OPTIONS_ADSL ] || grep -q "usepeerdns" $PPP_OPTIONS_ADSL ; then
			UPDATE_DNS=1
		fi
	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"
LSTOPTIONS="$LSTOPTIONS|UPDATE_DNS=$UPDATE_DNS|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.19  2004/11/07 15:04:37  baud123
# correction on list of ISP (again2)
#
# Revision 1.18  2004/11/06 04:25:02  baud123
# correction on list of ISP
#
# Revision 1.17  2004/11/04 23:59:33  baud123
# add some ISP
#
# Revision 1.16  2004/09/26 19:36:10  Tux
# - only ask "update DNS?" in expert mode
#
# Revision 1.15  2004/09/25 23:00:33  mcoolive
# *** empty log message ***
#
# Revision 1.14  2004/09/25 15:27:54  baud123
# add argentina, belgium, lithuania, morocco, thailand ISP (41 in DB now !)
#
# Revision 1.13  2004/09/16 20:13:51  Tux
# - "eagleconfig -e" now ask whether resolv.conf should be automatically updated
#
# 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
#
#***************************************************************************/
