#!/bin/sh
#
# Author      : Edouard Gomez (ed.gomez@wanadoo.fr)
# Last Modifs : 20 juillet 2001

# Configuration script for the pppd daemon
PEER="adsl"
PPP_DIR="/etc/ppp"
PEER_DIR=$PPP_DIR"/peers"
PEER_FILE=$PEER_DIR"/"$PEER
CHAP_FILE="/etc/ppp/chap-secrets"
PAP_FILE="/etc/ppp/pap-secrets"

echo "PPPD Configuration Script for GNU/Linux"
echo

# Reads user input
read -p "Login    : " LOGIN
read -p "Password : " PASSWORD

cat << EOF

You will be prompted for your Vpi Vci,
Here are some working values but your configuration may differ
vpi.vci = 8.48 for netherlands
          8.35 or 8.67 for france
          8.35 for Belgium
          8.35 for Italy
          0.38 for UK


EOF

read -p "Your Vpi      : " VPI
read -p "Your Vci      : " VCI

cat << EOF


Now you will be prompted for some pppd options
Answer Y/y or N/n

EOF

read -p "Do you want pppd to reconnect automatically ? : " PERSISTA
read -p "Do you want pppd to use peer DNS ? : " DNSPEERA
read -p "Do you want to set the adsl connection as your default route ? : " DEFA
echo "Do you want pppd to be in debug mode ?"
read -p "(usefull if you install this package for the 1st time) : " DEBUGA

if [ $PERSISTA == "Y" ] || [ $PERSISTA == "y" ] ; then
  PERSIST="persist"
else
  PERSIST=""
fi

if [ $DNSPEERA == "Y" ] || [ $DNSPEERA == "y" ] ; then
  DNSPEER="usepeerdns"
else
  DNSPEER=""
fi

if [ $DEFA == "Y" ] || [ $DEFA == "y" ] ; then
  DEF="defaultroute"
else
  DEF=""
fi

if [ $DEBUGA == "Y" ] || [ $DEBUG =="y" ] ; then
  DEBUG1="debug"
  DEBUG2="kdebug 1"
else
  DEBUG1=""
  DEBUG2=""
fi

# Generates chap/pap-secrets line
SECRETLINE="\"$LOGIN\" \"*\" \"$PASSWORD\" \"*\""

# Generates the user line needed in /etc/ppp/peers/adsl
USERLINE="user \"$LOGIN\""

# Creates /etc/ppp/peers
[ -d $PEER_DIRECTORY ] || (echo "Creating /etc/ppp/peers directory" ; mkdir /etc/ppp/peers)

# Check /etc/ppp/peers/adsl existence
if [ -f $PEER_FILE ] ; then
  read -p "Do you want to overwrite $PEER_FILE (y/n) : " ANSWER
  if [ $ANSWER == "n" ] || [ $ANSWER == "N" ] ; then
     exit 1
  fi
  rm -f $PEER_FILE
  touch $PEER_FILE
fi

#
# Generates /etc/ppp/peers/adsl file
#

echo Generating $PEER_FILE
cat > $PEER_FILE <<EOF
# $PEER_FILE automatically generated on $(date)
#
# This file could be rename but its place is under $PEER_DIRECTORY
# To connect to Internet using this configuration file
# pppd call adsl, where "adsl" stands for the name of this file

noauth
noipdefault
pty "/usr/local/bin/pppoa2 -vpi $VPI -vci $VCI"
sync
noaccomp
nopcomp
noccp
novj
holdoff 4
maxfail 25
$PERSIST
$DNSPEER
$USERLINE
$DEF
$DEBUG1
$DEBUG2
EOF

echo Saving your pppd options file
cp -f /etc/ppp/options /etc/ppp/options.bak
echo Creating the new one
cat > $PPP_DIR"/options" << EOF
lock
noauth
noipdefault
usepeerdns
EOF

#
# Generates user/password entry in chap and pap secrets files
#

# Creates the chap file if needed
if [ ! -f $CHAP_FILE ] ; then
  echo Creating $CHAP_FILE
  touch $CHAP_FILE
  chmod 600 $CHAP_FILE
  echo "# Secrets for authentication using CHAP" > $CHAP_FILE
  echo "# client        server         secret         IP addresses" >> $CHAP_FILE
fi

# Creates the pap file if needed
if [ ! -f $PAP_FILE ] ; then
  echo Creating $PAP_FILE
  touch $PAP_FILE
  chmod 600 $PAP_FILE
  echo "# Secrets for authentication using PAP" > $PAP_FILE
  echo "# client        server         secret         IP addresses" >> $PAP_FILE
fi

# Saves old files
echo Saving old $CHAP_FILE to $CHAP_FILE.old
cp -f $CHAP_FILE $CHAP_FILE.old
chmod 600 $CHAP_FILE.old

echo Saving old $PAP_FILE to $PAP_FILE.old
cp -f $PAP_FILE  $PAP_FILE.old
chmod 600 $PAP_FILE.old

# Remove old login entry from pap and chap file
echo Removing old $LOGIN entry from $CHAP_FILE
grep -v $LOGIN $CHAP_FILE.old > $CHAP_FILE
echo Removing old $LOGIN entry from $PAP_FILE
grep -v $LOGIN $PAP_FILE.old  > $PAP_FILE

# Add the new entry
echo Adding new $LOGIN entry to $CHAP_FILE
echo $SECRETLINE >> $CHAP_FILE
echo Adding new $LOGIN entry to $PAP_FILE
echo $SECRETLINE >> $PAP_FILE

#
# Add ppp entries to /etc/modules.conf
#

[ -f /etc/conf.modules ] && MODULE_CONF="/etc/conf.modules"
[ -f /etc/modules.conf ] && MODULE_CONF="/etc/modules.conf"

echo "Adding ppp entries to your $MODULE_CONF"

echo >> $MODULE_CONF

grep -q "char-major-108" $MODULE_CONF
if [ $? -ne 0 ] ; then
  echo "alias char-major-108 ppp_generic" >> $MODULE_CONF
fi 
grep -q "tty-ldisc-3" $MODULE_CONF
if [ $? -ne 0 ] ; then
  echo "alias tty-ldisc-3 ppp_async" >> $MODULE_CONF
fi
grep -q "tty-ldisc-13" $MODULE_CONF
if [ $? -ne 0 ] ; then
  echo "alias tty-ldisc-13 n_hdlc" >> $MODULE_CONF
fi
grep -q "tty-ldisc-14" $MODULE_CONF
if [ $? -ne 0 ] ; then
  echo "alias tty-ldisc-14 ppp_synctty" >> $MODULE_CONF
fi
grep -q "ppp-compress-21" $MODULE_CONF
if [ $? -ne 0 ] ; then
  echo "alias ppp-compress-21 bsd_comp" >> $MODULE_CONF
fi
grep -q "ppp-compress-24" $MODULE_CONF
if [ $? -ne 0 ] ; then
  echo "alias ppp-compress-24 ppp_deflate" >> $MODULE_CONF
fi
grep -q "ppp-compress-26" $MODULE_CONF
if [ $? -ne 0 ] ; then
  echo "alias ppp-compress-26 ppp_deflate" >> $MODULE_CONF
fi

# Finished...
echo
echo PPPD configuration done.
