195 lines
5.0 KiB
Bash
Executable File
195 lines
5.0 KiB
Bash
Executable File
#!/system/bin/sh
|
|
|
|
# Paths to programs
|
|
#IFCONFIG=/system/bin/ifconfig
|
|
PPPD=/system/bin/pppd
|
|
PPPOE=/system/bin/pppoe
|
|
ECHO="/system/bin/log -t pppoe_setup"
|
|
#ECHO=echo
|
|
|
|
# Set to "C" locale so we can parse messages from commands
|
|
LANG=C
|
|
export LANG
|
|
|
|
CONFIG=/data/misc/ppp/pppoe.conf
|
|
RESOLV=/data/misc/ppp/resolv.conf
|
|
VARRUN=/data/misc/ppp
|
|
PPP_DIR=/data/misc/ppp
|
|
#LOG=/data/misc/ppp/log
|
|
#LOG=/dev/console
|
|
SETPROP=/system/bin/setprop
|
|
GETPROP=/system/bin/getprop
|
|
BUSYBOX=busybox
|
|
|
|
if [ -n "$1" ] ; then
|
|
_account=$1
|
|
_iface=$2
|
|
_demand=$3
|
|
_dns1=$4
|
|
_dns2=$5
|
|
_password=$6
|
|
_firewall=$7
|
|
else
|
|
_account=`$GETPROP net.pppoe.account`
|
|
_iface=`$GETPROP net.pppoe.iface`
|
|
_demand=no
|
|
_dns1=server
|
|
_dns2=
|
|
_password=`$GETPROP net.pppoe.password`
|
|
_firewall=NONE
|
|
fi
|
|
|
|
$ECHO "-------------------PPPOE--------------------"
|
|
|
|
$ECHO "setprop net.pppoe.status setuping"
|
|
$SETPROP "net.pppoe.status" "setuping"
|
|
|
|
# Protect created files
|
|
umask 077
|
|
|
|
copy() {
|
|
$BUSYBOX cp $1 $2
|
|
if [ "$?" != 0 ] ; then
|
|
$ECHO "*** Error copying $1 to $2"
|
|
$ECHO "*** Quitting."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Prototype config file must exist
|
|
if [ ! -r "$CONFIG" ] ; then
|
|
$ECHO "Oh, dear, I don't see the file '$CONFIG' anywhere."
|
|
exit 1
|
|
fi
|
|
|
|
# Must have pppd
|
|
if [ ! -x $PPPD ] ; then
|
|
$ECHO "Oops, I can't execute the program '$PPPD'. You"
|
|
$ECHO "must install the PPP software suite, version 2.3.10 or later."
|
|
exit 1
|
|
fi
|
|
export CONFIG
|
|
. $CONFIG
|
|
|
|
if [ "$DEMAND" = "" ] ; then
|
|
DEMAND=no
|
|
fi
|
|
|
|
# pppoe must exist
|
|
#if [ ! -x "$PPPOE" ] ; then
|
|
# $ECHO "Oh, dear, I can't execute the program '$PPPOE'."
|
|
# exit 1
|
|
#fi
|
|
USER=$_account
|
|
$ECHO "USER NAME: $USER"
|
|
|
|
ETH=$_iface
|
|
$ECHO "INTERFACE: $ETH"
|
|
|
|
# $ECHO "Do you want the link to come up on demand, or stay up continuously?"
|
|
# $ECHO "If you want it to come up on demand, enter the idle time in seconds"
|
|
# $ECHO "after which the link should be dropped. If you want the link to"
|
|
# $ECHO "stay up permanently, enter 'no' (two letters, lower-case.)"
|
|
# $ECHO "NOTE: Demand-activated links do not interact well with dynamic IP"
|
|
# $ECHO "addresses. You may have some problems with demand-activated links."
|
|
DEMAND=$_demand
|
|
$ECHO "DEMAND: $DEMAND"
|
|
|
|
DNS1=$_dns1
|
|
DNS2=$_dns2
|
|
$ECHO "DNS1: $DNS1"
|
|
$ECHO "DNS2: $DNS2"
|
|
|
|
PWD=$_password
|
|
# $ECHO "PASSWORD: $PWD"
|
|
$ECHO "PASSWORD:"
|
|
|
|
|
|
# Firewalling
|
|
# $ECHO "The firewall choices are:"
|
|
# $ECHO "NONE: This script will not set any firewall rules. You are responsible"
|
|
# $ECHO " for ensuring the security of your machine. You are STRONGLY"
|
|
# $ECHO " recommended to use some kind of firewall rules."
|
|
# $ECHO "STANDALONE: Appropriate for a basic stand-alone web-surfing workstation"
|
|
# $ECHO "MASQUERADE: Appropriate for a machine acting as an Internet gateway"
|
|
# $ECHO " for a LAN"
|
|
FIREWALL=$_firewall
|
|
$ECHO "FIREWALL: $FIREWALL"
|
|
|
|
|
|
# Adjust configuration files. First to $CONFIG
|
|
|
|
$ECHO "Adjusting $CONFIG"
|
|
|
|
copy $CONFIG $CONFIG-bak
|
|
if [ "$DNS1" = "server" ] ; then
|
|
DNSTYPE=SERVER
|
|
DNS1=""
|
|
PEERDNS=yes
|
|
else
|
|
PEERDNS=no
|
|
if [ "$DNS1" = "" ] ; then
|
|
DNSTYPE=NOCHANGE
|
|
else
|
|
DNSTYPE=SPECIFY
|
|
fi
|
|
fi
|
|
|
|
# Some #$(*& ISP's use a slash in the user name...
|
|
$BUSYBOX sed -e "s&^USER=.*&USER='$USER'&" \
|
|
-e "s&^ETH=.*Ð='$ETH'&" \
|
|
-e "s&^PIDFILE=.*&PIDFILE=\"$VARRUN/\$CF_BASE-pppoe.pid\"&" \
|
|
-e "s/^FIREWALL=.*/FIREWALL=$FIREWALL/" \
|
|
-e "s/^DEMAND=.*/DEMAND=$DEMAND/" \
|
|
-e "s/^DNSTYPE=.*/DNSTYPE=$DNSTYPE/" \
|
|
-e "s/^DNS1=.*/DNS1=$DNS1/" \
|
|
-e "s/^DNS2=.*/DNS2=$DNS2/" \
|
|
-e "s/^PEERDNS=.*/PEERDNS=$PEERDNS/" \
|
|
< $CONFIG-bak > $CONFIG
|
|
|
|
if [ $? != 0 ] ; then
|
|
$ECHO "** Error modifying $CONFIG"
|
|
$ECHO "** Quitting"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
if [ "$DNS1" != "" ] ; then
|
|
if [ "$DNS1" != "server" ] ; then
|
|
$ECHO "Adjusting $RESOLV"
|
|
if [ -r $RESOLV ] ; then
|
|
$ECHO " (First backing it up to $RESOLV-bak)"
|
|
$BUSYBOX cp $RESOLV $RESOLV-bak
|
|
rm $RESOLV
|
|
fi
|
|
echo "nameserver $DNS1" >> $RESOLV
|
|
if [ "$DNS2" != "" ] ; then
|
|
echo "nameserver $DNS2" >> $RESOLV
|
|
fi
|
|
chmod 644 $RESOLV
|
|
fi
|
|
fi
|
|
|
|
$ECHO "Adjusting $PPP_DIR/pap-secrets and $PPP_DIR/chap-secrets"
|
|
if [ -r $PPP_DIR/pap-secrets ] ; then
|
|
$ECHO " (But first backing it up to $PPP_DIR/pap-secrets-bak)"
|
|
copy $PPP_DIR/pap-secrets $PPP_DIR/pap-secrets-bak
|
|
else
|
|
$BUSYBOX cp /dev/null $PPP_DIR/pap-secrets-bak
|
|
fi
|
|
if [ -r $PPP_DIR/chap-secrets ] ; then
|
|
$ECHO " (But first backing it up to $PPP_DIR/chap-secrets-bak)"
|
|
copy $PPP_DIR/chap-secrets $PPP_DIR/chap-secrets-bak
|
|
else
|
|
$BUSYBOX cp /dev/null $PPP_DIR/chap-secrets-bak
|
|
fi
|
|
|
|
$BUSYBOX egrep -v "^$USER|^\"$USER\"" $PPP_DIR/pap-secrets-bak > $PPP_DIR/pap-secrets
|
|
echo "\"$USER\" * \"$PWD\"" >> $PPP_DIR/pap-secrets
|
|
$BUSYBOX egrep -v "^$U|^\"$U\"" $PPP_DIR/chap-secrets-bak > $PPP_DIR/chap-secrets
|
|
echo "\"$USER\" * \"$PWD\"" >> $PPP_DIR/chap-secrets
|
|
|
|
$ECHO "setprop net.pppoe.status setuped"
|
|
$SETPROP "net.pppoe.status" "setuped"
|
|
exit 0
|