diff -Nru rp-pppoe-3.8.orig/scripts/pppoe-setup.in rp-pppoe-3.8/scripts/pppoe-setup.in --- rp-pppoe-3.8.orig/scripts/pppoe-setup.in 2006-04-02 17:29:42.000000000 +0300 +++ rp-pppoe-3.8/scripts/pppoe-setup.in 2006-04-21 10:09:08.411309500 +0300 @@ -86,11 +86,13 @@ $ECHO "USER NAME" $ECHO "" printf "%s" ">>> Enter your PPPoE user name (default $USER): " - read U + read Uu - if [ "$U" = "" ] ; then - U="$USER" + if [ "$Uu" = "" ] ; then + Uu="$USER" fi + + U=`echo $Uu | sed -e "s/&/\\\\\&/g"` # Under Linux, "fix" the default interface if eth1 is not available if test `uname -s` = "Linux" ; then @@ -221,7 +223,7 @@ $ECHO "** Summary of what you entered **" $ECHO "" $ECHO "Ethernet Interface: $E" - $ECHO "User name: $U" + $ECHO "User name: $Uu" if [ "$D" = "no" ] ; then $ECHO "Activate-on-demand: No" else @@ -288,7 +290,12 @@ fi # Some #$(*& ISP's use a slash in the user name... -sed -e "s&^USER=.*&USER='$U'&" \ +for SEP in ':' ';' '/' '!' '|' '_' '-' '@' ; do + if [ "$U" = `echo $U | sed "sI${SEP}II"` ]; then + break; + fi +done +sed -e "s${SEP}^USER=.*${SEP}USER='$U'${SEP}"\ -e "s&^ETH=.*Ð='$E'&" \ -e "s&^PIDFILE=.*&PIDFILE=\"$VARRUN/\$CF_BASE-pppoe.pid\"&" \ -e "s/^FIREWALL=.*/FIREWALL=$FIREWALL/" \ @@ -337,10 +344,10 @@ cp /dev/null /etc/ppp/chap-secrets-bak fi -egrep -v "^$U|^\"$U\"" /etc/ppp/pap-secrets-bak > /etc/ppp/pap-secrets -$ECHO "\"$U\" * \"$PWD1\"" >> /etc/ppp/pap-secrets -egrep -v "^$U|^\"$U\"" /etc/ppp/chap-secrets-bak > /etc/ppp/chap-secrets -$ECHO "\"$U\" * \"$PWD1\"" >> /etc/ppp/chap-secrets +egrep -v "^$Uu|^\"$Uu\"" /etc/ppp/pap-secrets-bak > /etc/ppp/pap-secrets +$ECHO "\"$Uu\" * \"$PWD1\"" >> /etc/ppp/pap-secrets +egrep -v "^$Uu|^\"$Uu\"" /etc/ppp/chap-secrets-bak > /etc/ppp/chap-secrets +$ECHO "\"$Uu\" * \"$PWD1\"" >> /etc/ppp/chap-secrets $ECHO "" $ECHO ""