mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

160 lines
5.1 KiB

  1. # --- ROCK-COPYRIGHT-NOTE-BEGIN ---
  2. #
  3. # This copyright note is auto-generated by ./scripts/Create-CopyPatch.
  4. # Please add additional copyright information _after_ the line containing
  5. # the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by
  6. # the ./scripts/Create-CopyPatch script. Do not edit this copyright text!
  7. #
  8. # ROCK Linux: rock-src/package/base/iproute2/stone_mod_network.sh
  9. # ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf
  10. #
  11. # This program is free software; you can redistribute it and/or modify
  12. # it under the terms of the GNU General Public License as published by
  13. # the Free Software Foundation; either version 2 of the License, or
  14. # (at your option) any later version. A copy of the GNU General Public
  15. # License can be found at Documentation/COPYING.
  16. #
  17. # Many people helped and are helping developing ROCK Linux. Please
  18. # have a look at http://www.rocklinux.org/ and the Documentation/TEAM
  19. # file for details.
  20. #
  21. # --- ROCK-COPYRIGHT-NOTE-END ---
  22. #
  23. # [MAIN] 20 network Network (TCP/IP v4) Configuration
  24. HOSTNAME="`hostname`"
  25. DOMAINNAME="`hostname -d 2> /dev/null`"
  26. DHCP="X" ; IF="X" ; IPADDR="X" ; GATEWAY="X" ; tmp="`mktemp`"
  27. egrep '^(DHCP|IF|IPADDR|GATEWAY)=' /etc/conf/network > $tmp ; . $tmp
  28. grep '^nameserver ' /etc/resolv.conf | tr '\t' ' ' | tr -s ' ' | \
  29. sed 's,^nameserver *\([^ ]*\),DNSSRV="$DNSSRV \1",' > $tmp
  30. DNSSRV='' ; . $tmp ; DNSSRV="`echo $DNSSRV`"
  31. [ -z "$DNSSRV" ] && DNSSRV="none" ; rm -f $tmp
  32. set_name() {
  33. old1="$HOSTNAME" old2="$HOSTNAME.$DOMAINNAME" old3="$DOMAINNAME"
  34. if [ $1 = HOSTNAME ] ; then
  35. gui_input "Set a new hostname (without domain part)" \
  36. "${!1}" "$1"
  37. else
  38. gui_input "Set a new domainname (without host part)" \
  39. "${!1}" "$1"
  40. fi
  41. new="$HOSTNAME.$DOMAINNAME $HOSTNAME"
  42. echo "$HOSTNAME" > /etc/HOSTNAME ; hostname "$HOSTNAME"
  43. ip="`echo $IPADDR | sed 's,[/ ].*,,'`"
  44. if grep -q "^$ip\\b" /etc/hosts ; then
  45. tmp="`mktemp`"
  46. sed -e "/^$ip\\b/ s,\\b$old2\\b[ ]*,,g" \
  47. -e "/^$ip\\b/ s,\\b$old1\\b[ ]*,,g" \
  48. -e "/^$ip\\b/ s,[ ]\\+,&$new ," < /etc/hosts > $tmp
  49. cat $tmp > /etc/hosts ; rm -f $tmp
  50. else
  51. echo -e "$ip\\t$new" >> /etc/hosts
  52. fi
  53. if [ $1 = DOMAINNAME ] ; then
  54. tmp="`mktemp`"
  55. grep -vx "search $old3" /etc/resolv.conf > $tmp
  56. [ -n "$DOMAINNAME" ] && echo "search $DOMAINNAME" >> $tmp
  57. cat $tmp > /etc/resolv.conf
  58. rm -f $tmp
  59. fi
  60. }
  61. set_dns() {
  62. gui_input "Set a new (space seperated) list of DNS Servers" "$DNSSRV" "DNSSRV"
  63. DNSSRV="`echo $DNSSRV`" ; [ -z "$DNSSRV" ] && DNSSRV="none"
  64. tmp="`mktemp`" ; grep -v '^nameserver\b' /etc/resolv.conf > $tmp
  65. for x in $DNSSRV ; do
  66. [ "$x" != "none" ] && echo "nameserver $x" >> $tmp
  67. done
  68. cat $tmp > /etc/resolv.conf
  69. rm -f $tmp
  70. }
  71. set_dhcp() {
  72. DHCP=$1 ; tmp="`mktemp`"
  73. sed "s,^DHCP=.*,DHCP=\"$1\"," < /etc/conf/network > $tmp
  74. cat $tmp > /etc/conf/network ; rm -f $tmp
  75. }
  76. set_if() {
  77. gui_input "Set a new network interface" "$IF" IF ; tmp="`mktemp`"
  78. sed "s,^IF=.*,IF=\"$IF\"," < /etc/conf/network > $tmp
  79. cat $tmp > /etc/conf/network ; rm -f $tmp
  80. }
  81. set_ip() {
  82. oldip="`echo $IPADDR | sed 's,[/ ].*,,'`"
  83. if [ $1 = IPADDR ] ; then
  84. gui_input "Set a new IP address or a whitespace seperated list
  85. of IP addresses in the format A.B.C.D/NM (e.g. 192.168.20.17/24)" "$IPADDR" IPADDR
  86. else
  87. gui_input "Set a new gateway IP address (e.g. 192.168.20.1)" \
  88. "$GATEWAY" GATEWAY
  89. fi
  90. newip="`echo $IPADDR | sed 's,[/ ].*,,'`"
  91. sed -e "s,^IPADDR=.*,IPADDR=\"$IPADDR\"," \
  92. -e "s,^GATEWAY=.*,GATEWAY=\"$GATEWAY\"," \
  93. < /etc/conf/network > $tmp
  94. cat $tmp > /etc/conf/network ; rm -f $tmp
  95. if [ "$newip" != "$oldip" ] ; then
  96. tmp="`mktemp`"
  97. sed -e "s,^$oldip\\b,$newip," < /etc/hosts > $tmp
  98. cat $tmp > /etc/hosts ; rm -f $tmp
  99. fi
  100. }
  101. edit() {
  102. gui_edit "Edit file $1" "$1"
  103. exec $STONE network
  104. }
  105. main() {
  106. while
  107. cmd="gui_menu network 'Network Configuration - Select an item to"
  108. cmd="$cmd change the value
  109. WARNING: This script tries to adapt /etc/conf/network, /etc/hosts,
  110. /etc/resolv.conf and /etc/HOSTNAME according to your changes. You
  111. better be carefull if you also change this files by hand.'"
  112. cmd="$cmd 'Hostname: $HOSTNAME' 'set_name HOSTNAME'"
  113. cmd="$cmd 'Domainname: $DOMAINNAME' 'set_name DOMAINNAME'"
  114. cmd="$cmd 'DNS-Server: $DNSSRV' 'set_dns' '' ''"
  115. if [ "$DHCP" = "X" ] ; then
  116. cmd="$cmd 'File /etc/conf/network has been changed.' ''"
  117. cmd="$cmd 'So no IP configuration is available here.' ''"
  118. elif [ "$DHCP" = "on" ] ; then
  119. cmd="$cmd '[*] Use DHCP for IP configuration' 'set_dhcp off'"
  120. cmd="$cmd 'Network Interface: $IF' 'set_if'"
  121. else
  122. cmd="$cmd '[ ] Use DHCP for IP configuration' 'set_dhcp on'"
  123. cmd="$cmd 'Network Interface: $IF' 'set_if'"
  124. cmd="$cmd 'Host IP Addresses: $IPADDR' 'set_ip IPADDR'"
  125. cmd="$cmd 'Gateway IP Address: $GATEWAY' 'set_ip GATEWAY'"
  126. fi
  127. cmd="$cmd '' '' 'Configure runlevels for network service'"
  128. cmd="$cmd '$STONE runlevel edit_srv network'"
  129. cmd="$cmd '(Re-)Start network init script'"
  130. cmd="$cmd '$STONE runlevel restart network'"
  131. cmd="$cmd '' ''"
  132. cmd="$cmd 'View/Edit /etc/conf/network file' 'edit /etc/conf/network'"
  133. cmd="$cmd 'View/Edit /etc/hosts file' 'edit /etc/hosts'"
  134. cmd="$cmd 'View/Edit /etc/resolv.conf file' 'edit /etc/resolv.conf'"
  135. eval "$cmd"
  136. do : ; done
  137. }