home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 March / PCWELT_3_2006.ISO / base / 05_common.mo / usr / sbin / adsl-setup < prev    next >
Encoding:
Text File  |  2003-03-02  |  9.3 KB  |  353 lines

  1. #!/bin/sh
  2. #***********************************************************************
  3. #
  4. # adsl-setup
  5. #
  6. # All-purpose slicing/dicing shell script to configure rp-pppoe.
  7. #
  8. # LIC: GPL
  9. #
  10. # Copyright (C) 2000 Roaring Penguin Software Inc.
  11. #
  12. # $Id: adsl-setup.in,v 1.5 2002/04/09 17:28:39 dfs Exp $
  13. #***********************************************************************
  14.  
  15. # From AUTOCONF
  16. prefix=/usr
  17. exec_prefix=${prefix}
  18.  
  19. # Paths to programs
  20. IFCONFIG=/sbin/ifconfig
  21. PPPD=/usr/sbin/pppd
  22. PPPOE=${exec_prefix}/sbin/pppoe
  23. ECHO=/usr/bin/echo
  24. LOGGER="/usr/bin/logger -t `basename $0`"
  25.  
  26. # Set to "C" locale so we can parse messages from commands
  27. LANG=C
  28. export LANG
  29.  
  30. CONFIG=/etc/ppp/pppoe.conf
  31.  
  32. # Protect created files
  33. umask 077
  34.  
  35. copy() {
  36.     cp $1 $2
  37.     if [ "$?" != 0 ] ; then
  38.     $ECHO "*** Error copying $1 to $2"
  39.     $ECHO "*** Quitting."
  40.     exit 1
  41.     fi
  42. }
  43.  
  44. $ECHO "Welcome to the Roaring Penguin ADSL client setup.  First, I will run"
  45. $ECHO "some checks on your system to make sure the PPPoE client is installed"
  46. $ECHO "properly..."
  47. $ECHO ""
  48.  
  49. # Must be root
  50. if [ "`/usr/bin/id -u`" != 0 ] ; then
  51.     $ECHO "$0: Sorry, you must be root to run this script"
  52.     exit 1
  53. fi
  54.  
  55. # Prototype config file must exist
  56. if [ ! -r "$CONFIG" ] ; then
  57.     $ECHO "Oh, dear, I don't see the file '$CONFIG' anywhere.  Please"
  58.     $ECHO "re-install the PPPoE client."
  59.     exit 1
  60. fi
  61.  
  62. # Must have pppd
  63. if [ ! -x $PPPD ] ; then
  64.     $ECHO "Oops, I can't execute the program '$PPPD'.  You"
  65.     $ECHO "must install the PPP software suite, version 2.3.10 or later."
  66.     exit 1
  67. fi
  68.  
  69. . $CONFIG
  70.  
  71. if [ "$DEMAND" = "" ] ; then
  72.     DEMAND=no
  73. fi
  74.  
  75. # pppoe must exist
  76. if [ ! -x "$PPPOE" ] ; then
  77.     $ECHO "Oh, dear, I can't execute the program '$PPPOE'.  Please"
  78.     $ECHO "re-install the rp-pppoe client."
  79.     exit 1
  80. fi
  81.  
  82. $ECHO "Looks good!  Now, please enter some information:"
  83.  
  84. while [ true ] ; do
  85.     $ECHO ""
  86.     $ECHO "USER NAME"
  87.     $ECHO ""
  88.     $ECHO -n ">>> Enter your PPPoE user name (default $USER): "
  89.     read U
  90.  
  91.     if [ "$U" = "" ] ; then
  92.     U="$USER"
  93.     fi
  94.  
  95.     # Under Linux, "fix" the default interface if eth1 is not available
  96.     if test `uname -s` = "Linux" ; then
  97.     $IFCONFIG $ETH > /dev/null 2>&1 || ETH=eth0
  98.     fi
  99.     $ECHO ""
  100.     $ECHO "INTERFACE"
  101.     $ECHO ""
  102.     $ECHO ">>> Enter the Ethernet interface connected to the ADSL modem"
  103.     $ECHO "For Solaris, this is likely to be something like /dev/hme0."
  104.     $ECHO "For Linux, it will be ethn, where 'n' is a number."
  105.     $ECHO -n "(default $ETH): "
  106.     read E
  107.  
  108.     if [ "$E" = "" ] ; then
  109.     E="$ETH"
  110.     fi
  111.  
  112.     $ECHO ""
  113.     $ECHO "Do you want the link to come up on demand, or stay up continuously?"
  114.     $ECHO "If you want it to come up on demand, enter the idle time in seconds"
  115.     $ECHO "after which the link should be dropped.  If you want the link to"
  116.     $ECHO "stay up permanently, enter 'no' (two letters, lower-case.)"
  117.     $ECHO "NOTE: Demand-activated links do not interact well with dynamic IP"
  118.     $ECHO "addresses.  You may have some problems with demand-activated links."
  119.     $ECHO -n ">>> Enter the demand value (default $DEMAND): "
  120.     read D
  121.     if [ "$D" = "" ] ; then
  122.     D=$DEMAND
  123.     fi
  124.  
  125.     $ECHO ""
  126.     $ECHO "DNS"
  127.     $ECHO ""
  128.     $ECHO "Please enter the IP address of your ISP's primary DNS server."
  129.     $ECHO "If your ISP claims that 'the server will provide DNS addresses',"
  130.     $ECHO "enter 'server' (all lower-case) here."
  131.     $ECHO "If you just press enter, I will assume you know what you are"
  132.     $ECHO "doing and not modify your DNS setup."
  133.     $ECHO -n ">>> Enter the DNS information here: "
  134.  
  135.     read DNS1
  136.  
  137.  
  138.     if [ "$DNS1" != "" ] ; then
  139.         if [ "$DNS1" != "server" ] ; then
  140.         $ECHO "Please enter the IP address of your ISP's secondary DNS server."
  141.         $ECHO "If you just press enter, I will assume there is only one DNS server."
  142.         $ECHO -n ">>> Enter the secondary DNS server address here: "
  143.         read DNS2
  144.     fi
  145.     fi
  146.  
  147.     while [ true ] ; do
  148.     $ECHO ""
  149.     $ECHO "PASSWORD"
  150.     $ECHO ""
  151.     stty -echo
  152.     $ECHO -n ">>> Please enter your PPPoE password:    "
  153.     read PWD1
  154.     $ECHO ""
  155.     $ECHO -n ">>> Please re-enter your PPPoE password: "
  156.     read PWD2
  157.     $ECHO ""
  158.     stty echo
  159.     if [ "$PWD1" = "$PWD2" ] ; then
  160.         break
  161.     fi
  162.  
  163.     $ECHO -n ">>> Sorry, the passwords do not match.  Try again? (y/n)"
  164.     read ANS
  165.     case "$ANS" in
  166.         N|No|NO|Non|n|no|non)
  167.         $ECHO "OK, quitting.  Bye."
  168.         exit 1
  169.     esac
  170.     done
  171.  
  172.     # Firewalling
  173.     $ECHO ""
  174.     $ECHO "FIREWALLING"
  175.     $ECHO ""
  176.     if test `uname -s` != "Linux" ; then
  177.     $ECHO "Sorry, firewalling is only supported under Linux.  Consult"
  178.     $ECHO "your operating system manuals for details on setting up"
  179.     $ECHO "packet filters for your system."
  180.     FIREWALL=NONE
  181.     else
  182.     $ECHO "Please choose the firewall rules to use.  Note that these rules are"
  183.     $ECHO "very basic.  You are strongly encouraged to use a more sophisticated"
  184.     $ECHO "firewall setup; however, these will provide basic security.  If you"
  185.     $ECHO "are running any servers on your machine, you must choose 'NONE' and"
  186.     $ECHO "set up firewalling yourself.  Otherwise, the firewall rules will deny"
  187.     $ECHO "access to all standard servers like Web, e-mail, ftp, etc.  If you"
  188.     $ECHO "are using SSH, the rules will block outgoing SSH connections which"
  189.     $ECHO "allocate a privileged source port."
  190.     $ECHO ""
  191.     while [ true ] ; do
  192.         $ECHO "The firewall choices are:"
  193.         $ECHO "0 - NONE: This script will not set any firewall rules.  You are responsible"
  194.         $ECHO "          for ensuring the security of your machine.  You are STRONGLY"
  195.         $ECHO "          recommended to use some kind of firewall rules."
  196.         $ECHO "1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation"
  197.         $ECHO "2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway"
  198.         $ECHO "                for a LAN"
  199.         $ECHO -n ">>> Choose a type of firewall (0-2): "
  200.         read a
  201.         if [ "$a" = 0 -o "$a" = 1 -o "$a" = 2 ] ; then
  202.         break
  203.         fi
  204.         $ECHO "Please enter a number from 0 to 2"
  205.     done
  206.  
  207.     case "$a" in
  208.         0)
  209.         FIREWALL=NONE
  210.         ;;
  211.         1)
  212.         FIREWALL=STANDALONE
  213.         ;;
  214.         2)
  215.         FIREWALL=MASQUERADE
  216.         ;;
  217.     esac
  218.     fi
  219.  
  220.     $ECHO ""
  221.     $ECHO "** Summary of what you entered **"
  222.     $ECHO ""
  223.     $ECHO "Ethernet Interface: $E"
  224.     $ECHO "User name:          $U"
  225.     if [ "$D" = "no" ] ; then
  226.     $ECHO "Activate-on-demand: No"
  227.     else
  228.     $ECHO "Activate-on-demand: Yes; idle timeout = $D seconds"
  229.     fi
  230.  
  231.     if [ "$DNS1" != "" ] ; then
  232.         if [ "$DNS1" = "server" ] ; then
  233.         $ECHO "DNS addresses:      Supplied by ISP's server"
  234.         else
  235.         $ECHO "Primary DNS:        $DNS1"
  236.         if [ "$DNS2" != "" ] ; then
  237.         $ECHO "Secondary DNS:      $DNS2"
  238.         fi
  239.         fi
  240.     else
  241.     $ECHO "DNS:                Do not adjust"
  242.     fi
  243.     $ECHO "Firewalling:        $FIREWALL"
  244.     $ECHO ""
  245.     while [ true ] ; do
  246.         $ECHO -n '>>> Accept these settings and adjust configuration files (y/n)? '
  247.         read ANS
  248.     case "ANS" in
  249.         Y|y|yes|Yes|oui|Oui)
  250.         ANS=y
  251.         ;;
  252.             N|n|no|No|non|Non)
  253.         ANS=n
  254.         ;;
  255.     esac
  256.     if [ "$ANS" = "y" -o "$ANS" = "n" ] ; then
  257.         break
  258.         fi
  259.     done
  260.     if [ "$ANS" = "y" ] ; then
  261.     break
  262.     fi
  263. done
  264.  
  265. # Adjust configuration files.  First to $CONFIG
  266.  
  267. $ECHO "Adjusting $CONFIG"
  268.  
  269. copy $CONFIG $CONFIG-bak
  270. if [ "$DNS1" = "server" ] ; then
  271.     DNSTYPE=SERVER
  272.     DNS1=""
  273.     PEERDNS=yes
  274. else
  275.     PEERDNS=no
  276.     if [ "$DNS1" = "" ] ; then
  277.     DNSTYPE=NOCHANGE
  278.     else
  279.     DNSTYPE=SPECIFY
  280.     fi
  281. fi
  282.  
  283. # Where is pppd likely to put its pid?
  284. if [ -d /var/run ] ; then
  285.     VARRUN=/var/run
  286. else
  287.     VARRUN=/etc/ppp
  288. fi
  289.  
  290. # Some #$(*& ISP's use a slash in the user name...
  291. sed -e "s&^USER=.*&USER='$U'&" \
  292.     -e "s&^ETH=.*Ð='$E'&" \
  293.     -e "s&^PIDFILE=.*&PIDFILE=\"$VARRUN/\$CF_BASE-adsl.pid\"&" \
  294.     -e "s/^FIREWALL=.*/FIREWALL=$FIREWALL/" \
  295.     -e "s/^DEMAND=.*/DEMAND=$D/" \
  296.     -e "s/^DNSTYPE=.*/DNSTYPE=$DNSTYPE/" \
  297.     -e "s/^DNS1=.*/DNS1=$DNS1/" \
  298.     -e "s/^DNS2=.*/DNS2=$DNS2/" \
  299.     -e "s/^PEERDNS=.*/PEERDNS=$PEERDNS/" \
  300.     < $CONFIG-bak > $CONFIG
  301.  
  302. if [ $? != 0 ] ; then
  303.     $ECHO "** Error modifying $CONFIG"
  304.     $ECHO "** Quitting"
  305.     exit 1
  306. fi
  307.  
  308. if [ "$DNS1" != "" ] ; then
  309.     if [ "$DNS1" != "server" ] ; then
  310.     $ECHO "Adjusting /etc/resolv.conf"
  311.     if [ -r /etc/resolv.conf ] ; then
  312.         grep -s "MADE-BY-RP-PPPOE" /etc/resolv.conf > /dev/null 2>&1
  313.         if [ "$?" != 0 ] ; then
  314.         $ECHO "  (But first backing it up to /etc/resolv.conf-bak)"
  315.         copy /etc/resolv.conf /etc/resolv.conf-bak
  316.         fi
  317.     fi
  318.     $ECHO "# MADE-BY-RP-PPPOE" > /etc/resolv.conf
  319.     $ECHO "nameserver $DNS1" >> /etc/resolv.conf
  320.     if [ "$DNS2" != "" ] ; then
  321.         $ECHO "nameserver $DNS2" >> /etc/resolv.conf
  322.     fi
  323.     fi
  324. fi
  325.  
  326. $ECHO "Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets"
  327. if [ -r /etc/ppp/pap-secrets ] ; then
  328.     $ECHO "  (But first backing it up to /etc/ppp/pap-secrets-bak)"
  329.     copy /etc/ppp/pap-secrets /etc/ppp/pap-secrets-bak
  330. else
  331.     cp /dev/null /etc/ppp/pap-secrets-bak
  332. fi
  333. if [ -r /etc/ppp/chap-secrets ] ; then
  334.     $ECHO "  (But first backing it up to /etc/ppp/chap-secrets-bak)"
  335.     copy /etc/ppp/chap-secrets /etc/ppp/chap-secrets-bak
  336. else
  337.     cp /dev/null /etc/ppp/chap-secrets-bak
  338. fi
  339.  
  340. egrep -v "^$U|^\"$U\"" /etc/ppp/pap-secrets-bak > /etc/ppp/pap-secrets
  341. $ECHO "\"$U\"    *    \"$PWD1\"" >> /etc/ppp/pap-secrets
  342. egrep -v "^$U|^\"$U\"" /etc/ppp/chap-secrets-bak > /etc/ppp/chap-secrets
  343. $ECHO "\"$U\"    *    \"$PWD1\"" >> /etc/ppp/chap-secrets
  344.  
  345. $ECHO ""
  346. $ECHO ""
  347. $ECHO ""
  348. $ECHO "Congratulations, it should be all set up!"
  349. $ECHO ""
  350. $ECHO "Type 'adsl-start' to bring up your ADSL link and 'adsl-stop' to bring"
  351. $ECHO "it down.  Type 'adsl-status' to see the link status."
  352. exit 0
  353.