250 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			250 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/system/bin/sh
 | 
						|
# ../scripts/pppoe-start.  Generated from pppoe-start.in by configure.
 | 
						|
#***********************************************************************
 | 
						|
#
 | 
						|
# pppoe-start
 | 
						|
#
 | 
						|
# Shell script to bring up a PPPoE connection
 | 
						|
#
 | 
						|
# Copyright (C) 2000 Roaring Penguin Software Inc.
 | 
						|
#
 | 
						|
# $Id$
 | 
						|
#
 | 
						|
# This file may be distributed under the terms of the GNU General
 | 
						|
# Public License.
 | 
						|
#
 | 
						|
# LIC: GPL
 | 
						|
#
 | 
						|
# Usage: pppoe-start [config_file]
 | 
						|
#        pppoe-start interface user [config_file]
 | 
						|
# Second form overrides USER and ETH from config file.
 | 
						|
# If config_file is omitted, defaults to /etc/ppp/pppoe.conf
 | 
						|
#
 | 
						|
#***********************************************************************
 | 
						|
 | 
						|
# From AUTOCONF
 | 
						|
prefix=/usr
 | 
						|
exec_prefix=${prefix}
 | 
						|
 | 
						|
SETPROP=/system/bin/setprop
 | 
						|
 | 
						|
# Paths to programs
 | 
						|
CONNECT=/system/bin/pppoe-connect
 | 
						|
ECHO="/system/bin/log -t pppoe_start"
 | 
						|
#ECHO=echo
 | 
						|
#IFCONFIG=$BUSYBOX ifconfig
 | 
						|
PPPD_PIDFILE="$PIDFILE.pppd"
 | 
						|
BUSYBOX=busybox
 | 
						|
 | 
						|
$ECHO "setprop net.pppoe.status connecting"
 | 
						|
$SETPROP "net.pppoe.status" "connecting"
 | 
						|
 | 
						|
# Set to "C" locale so we can parse messages from commands
 | 
						|
LANG=C
 | 
						|
export LANG
 | 
						|
 | 
						|
# Defaults
 | 
						|
#LOG=/data/misc/ppp/log
 | 
						|
LOG=/dev/console
 | 
						|
CONFIG=/data/misc/ppp/pppoe.conf
 | 
						|
USER=""
 | 
						|
ETH=""
 | 
						|
ME=`$BUSYBOX basename $0`
 | 
						|
# Must be root
 | 
						|
#if [ "`/usr/bin/id -u`" != 0 ] ; then
 | 
						|
#    $ECHO "$ME: You must be root to run this script" >& 2
 | 
						|
#    exit 1
 | 
						|
#fi
 | 
						|
 | 
						|
#$SETPROP "net.pppoe.status" ""
 | 
						|
#$ECHO "setprop net.pppoe.status"     
 | 
						|
 | 
						|
# Debugging
 | 
						|
if [ "$DEBUG" = "1" ] ; then
 | 
						|
    $ECHO "*** Running in debug mode... please be patient..."
 | 
						|
    DEBUG=/data/misc/ppp/pppoe-debug-$$
 | 
						|
    export DEBUG
 | 
						|
    mkdir $DEBUG
 | 
						|
    if [ "$?" != 0 ] ; then
 | 
						|
	$ECHO "Could not create directory $DEBUG... exiting"
 | 
						|
	exit 1
 | 
						|
    fi
 | 
						|
    DEBUG=$DEBUG/pppoe-debug.txt
 | 
						|
 | 
						|
    # Initial debug output
 | 
						|
    $ECHO "---------------------------------------------" > $DEBUG
 | 
						|
    $ECHO "* The following section contains information about your system" >> $DEBUG
 | 
						|
    date >> $DEBUG
 | 
						|
    $ECHO "Output of uname -a" >> $DEBUG
 | 
						|
    $BUSYBOX uname -a >> $DEBUG
 | 
						|
    $ECHO "---------------------------------------------" >> $DEBUG
 | 
						|
    $ECHO "* The following section contains information about your network" >> $DEBUG
 | 
						|
    $ECHO "* interfaces.  The one you chose for PPPoE should contain the words:" >> $DEBUG
 | 
						|
    $ECHO "* 'UP' and 'RUNNING'.  If it does not, you probably have an Ethernet" >> $DEBUG
 | 
						|
    $ECHO "* driver problem." >> $DEBUG
 | 
						|
    $ECHO "Output of ifconfig -a" >> $DEBUG
 | 
						|
    $BUSYBOX ifconfig -a >> $DEBUG
 | 
						|
    $ECHO "---------------------------------------------" >> $DEBUG
 | 
						|
    if [ "`$BUSYBOX uname -s`" = "Linux" ] ; then
 | 
						|
        $ECHO "* The following section contains information about kernel modules" >> $DEBUG
 | 
						|
	$ECHO "* If the module for your Ethernet card is 'tulip', you might" >> $DEBUG
 | 
						|
	$ECHO "* want to look for an updated version at http://www.scyld.com" >> $DEBUG
 | 
						|
	$ECHO "Output of lsmod" >> $DEBUG
 | 
						|
	lsmod >> $DEBUG
 | 
						|
	$ECHO "---------------------------------------------" >> $DEBUG
 | 
						|
    fi
 | 
						|
    $ECHO "* The following section lists your routing table." >> $DEBUG
 | 
						|
    $ECHO "* If you have an entry which starts with '0.0.0.0', you probably" >> $DEBUG
 | 
						|
    $ECHO "* have defined a default route and gateway, and pppd will" >> $DEBUG
 | 
						|
    $ECHO "* not create a default route using your ISP.  Try getting" >> $DEBUG
 | 
						|
    $ECHO "* rid of this route." >> $DEBUG
 | 
						|
    $ECHO "Output of netstat -n -r" >> $DEBUG
 | 
						|
    $BUSYBOX netstat -n -r >> $DEBUG
 | 
						|
    $ECHO "---------------------------------------------" >> $DEBUG
 | 
						|
    $ECHO "Contents of /etc/resolv.conf" >> $DEBUG
 | 
						|
    $ECHO "* The following section lists DNS setup." >> $DEBUG
 | 
						|
    $ECHO "* If you can browse by IP address, but not name, suspect" >> $DEBUG
 | 
						|
    $ECHO "* a DNS problem." >> $DEBUG
 | 
						|
    cat /etc/resolv.conf >> $DEBUG
 | 
						|
    $ECHO "---------------------------------------------" >> $DEBUG
 | 
						|
    $ECHO "* The following section lists /etc/ppp/options." >> $DEBUG
 | 
						|
    $ECHO "* You should have NOTHING in that file." >> $DEBUG
 | 
						|
    $ECHO "Contents of /etc/ppp/options" >> $DEBUG
 | 
						|
    cat /etc/ppp/options >> $DEBUG 2>/dev/null
 | 
						|
    $ECHO "---------------------------------------------" >> $DEBUG
 | 
						|
else
 | 
						|
    DEBUG=""
 | 
						|
fi
 | 
						|
 | 
						|
# Sort out command-line arguments
 | 
						|
case "$#" in
 | 
						|
    1)
 | 
						|
	CONFIG="$1"
 | 
						|
	;;
 | 
						|
    3)
 | 
						|
	CONFIG="$3"
 | 
						|
	;;
 | 
						|
esac
 | 
						|
 | 
						|
 | 
						|
if [ ! -f "$CONFIG" -o ! -r "$CONFIG" ] ; then
 | 
						|
    $ECHO "$ME: Cannot read configuration file '$CONFIG'"     
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
export CONFIG
 | 
						|
. $CONFIG
 | 
						|
 | 
						|
# Check for command-line overriding of ETH and USER
 | 
						|
case "$#" in
 | 
						|
    2|3)
 | 
						|
	ETH="$1"
 | 
						|
	USER="$2"
 | 
						|
	;;
 | 
						|
esac
 | 
						|
 | 
						|
# Check for pidfile
 | 
						|
if [ -r "$PIDFILE" ] ; then
 | 
						|
    PID=`cat "$PIDFILE"`
 | 
						|
    # Check if still running
 | 
						|
    kill -0 $PID > /dev/null 2>&1
 | 
						|
    if [ $? = 0 ] ; then
 | 
						|
 | 
						|
        processLine=`ps | grep $PID`
 | 
						|
        ProcessName=`echo $processLine | $BUSYBOX awk '{print $9}'`
 | 
						|
        if [ $ProcessName = /system/bin/pppd ]; then
 | 
						|
              $ECHO "$ME: There already seems to be a PPPoE connection up (PID $PID)"
 | 
						|
              exit 1
 | 
						|
        fi
 | 
						|
 | 
						|
    fi
 | 
						|
    # Delete bogus PIDFILE
 | 
						|
    $BUSYBOX rm -f "$PIDFILE" "$PPPD_PIDFILE" "$PIDFILE.pppoe" "$PIDFILE.start"
 | 
						|
fi
 | 
						|
 | 
						|
echo $$ > $PIDFILE.start
 | 
						|
 | 
						|
#save default gateway
 | 
						|
#DEFAULT_GW=/data/misc/ppp/default_gw
 | 
						|
#$BUSYBOX rm $DEFAULT_GW
 | 
						|
#$BUSYBOX route > $DEFAULT_GW
 | 
						|
#cat $DEFAULT_GW|while read line
 | 
						|
#    do
 | 
						|
#      t1=`echo "$line" | $BUSYBOX awk  '{print $1}'`
 | 
						|
#      if [ $t1 = "default" ] ; then
 | 
						|
#          $BUSYBOX route del default
 | 
						|
#      fi
 | 
						|
#    done
 | 
						|
 | 
						|
# Start the connection in the background unless we're debugging
 | 
						|
if [ "$DEBUG" != "" ] ; then
 | 
						|
    $CONNECT "$@"
 | 
						|
    exit 0
 | 
						|
fi
 | 
						|
 | 
						|
$ECHO "$CONNECT $@"
 | 
						|
$CONNECT "$@" > /dev/null 2>&1 &
 | 
						|
CONNECT_PID=$!
 | 
						|
 | 
						|
if [ "$CONNECT_TIMEOUT" = "" -o "$CONNECT_TIMEOUT" = 0 ] ; then
 | 
						|
    exit 0
 | 
						|
fi
 | 
						|
 | 
						|
# Don't monitor connection if dial-on-demand
 | 
						|
if [ "$DEMAND" != "" -a "$DEMAND" != "no" ] ; then
 | 
						|
    exit 0
 | 
						|
fi
 | 
						|
 | 
						|
# Monitor connection
 | 
						|
TIME=0
 | 
						|
while [ true ] ; do
 | 
						|
    /system/bin/pppoe-status $CONFIG > /dev/null 2>&1
 | 
						|
 | 
						|
    # Looks like the interface came up
 | 
						|
    if [ $? = 0 ] ; then
 | 
						|
	# Print newline if standard input is a TTY
 | 
						|
	$BUSYBOX tty -s && $ECHO " Connected!"
 | 
						|
	$ECHO "setprop net.pppoe.status connected"     
 | 
						|
	$SETPROP "net.pppoe.status" "connected"
 | 
						|
	chmod 644 /data/misc/ppp/resolv.conf
 | 
						|
	exit 0
 | 
						|
    fi
 | 
						|
 | 
						|
    if test -n "$FORCEPING" ; then
 | 
						|
	printf "%s" "$FORCEPING"
 | 
						|
    else
 | 
						|
	$BUSYBOX tty -s && printf "%s" "$PING"
 | 
						|
    fi
 | 
						|
    sleep $CONNECT_POLL
 | 
						|
    TIME=`$BUSYBOX expr $TIME + $CONNECT_POLL`
 | 
						|
    if [ $TIME -gt $CONNECT_TIMEOUT ] ; then
 | 
						|
	break
 | 
						|
    fi
 | 
						|
done
 | 
						|
 | 
						|
$ECHO "setprop net.pppoe.status timeout"     
 | 
						|
$SETPROP "net.pppoe.status" "timeout"
 | 
						|
$ECHO "TIMED OUT" >& 2
 | 
						|
 | 
						|
#restore ethernet default gateway
 | 
						|
#$BUSYBOX route del default
 | 
						|
#$BUSYBOX route add default gw DEFAULT_GW
 | 
						|
#$ECHO "restore gw"
 | 
						|
#cat $DEFAULT_GW|while read line
 | 
						|
#    do
 | 
						|
#      t1=`echo "$line" | $BUSYBOX awk  '{print $1}'`
 | 
						|
#      if [ $t1 = "default" ] ; then
 | 
						|
#          t2=`echo "$line" | $BUSYBOX awk  '{print $2}'`
 | 
						|
#          t5=`echo "$line" | $BUSYBOX awk  '{print $5}'`
 | 
						|
#          $BUSYBOX route add default gw $t2
 | 
						|
#      fi
 | 
						|
#    done
 | 
						|
 | 
						|
# Timed out!  Kill the pppoe-connect process and quit
 | 
						|
kill $CONNECT_PID > /dev/null 2>&1
 | 
						|
 | 
						|
# Clean up PIDFILE(s)
 | 
						|
$BUSYBOX rm -f "$PIDFILE" "$PPPD_PIDFILE" "$PIDFILE.pppoe" "$PIDFILE.start"
 | 
						|
 | 
						|
exit 1
 | 
						|
 |