From 5e6154a7d89b5a6d6749cdc5aac375b347f4f501 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Mon, 9 May 2005 13:49:08 +0000 Subject: [PATCH] Clifford Wolf: Removed semi-inteligent magic from stone network config (... as discussed at 21C3 BOF session) [2005042010341520679] (https://www.rocklinux.net/submaster) git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@5954 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- package/base/sysfiles/stone_mod_network.sh | 260 ++------------------- 1 file changed, 21 insertions(+), 239 deletions(-) diff --git a/package/base/sysfiles/stone_mod_network.sh b/package/base/sysfiles/stone_mod_network.sh index bc96a4bb5..d4e76926e 100644 --- a/package/base/sysfiles/stone_mod_network.sh +++ b/package/base/sysfiles/stone_mod_network.sh @@ -22,201 +22,6 @@ # # [MAIN] 20 network Network Configuration -### DYNAMIC NEW-STYLE CONFIG ### - -rocknet_base="/etc/network" - -edit() { - gui_edit "Edit file $1" "$1" - exec $STONE network -} - -read_section() { - local globals=1 - local readit=0 - local i=0 - - unset tags - unset interfaces - - - [ "$1" = "" ] && readit=1 - while read netcmd para - do - if [ -n "$netcmd" ]; then - netcmd="${netcmd//-/_}" - para="$( echo "$para" | sed 's,[\*\?],\\&,g' )" - if [ "$netcmd" = "interface" ] ; then - prof="$( echo "$para" | sed 's,[(),],_,g' )" - [ "$prof" = "$1" ] && readit=1 || readit=0 - globals=0 - interfaces="$interfaces $prof" - fi - if [ $readit = 1 ] ; then - tags[$i]="$netcmd $para" - i=$((i+1)) - fi - fi - done < <( sed 's,\(^\|[ \t]\)#.*$,,' < "$rocknet_base"/config ) -} - -write_tags() { - for (( i=0 ; $i < ${#tags[@]} ; i=i+1 )) ; do - local netcmd="${tags[$i]}" - [ "$netcmd" ] || continue - [ $1 = 0 ] && [[ "$netcmd" != interface* ]] && \ - echo -en "\t" - echo "${tags[$i]}" - done -} - -write_section() { - local globals=1 - local passit=1 - local dumped=0 - - [ "$1" = "" ] && passit=0 - - echo -n > $rocknet_base/config.new - - while read netcmd para ; do - [ "$netcmd" ] || continue - netcmd="${netcmd//-/_}" - para="$( echo "$para" | sed 's,[\*\?],\\&,g' )" - - # when we reached the matching section dump the - # mew tags ... - if [ $passit = 0 -a $dumped = 0 ] ; then - write_tags $globals >> $rocknet_base/config.new - dumped=1 - fi - - # if we reached a new interface section maybe change - # the state - if [ "$netcmd" = "interface" ] ; then - prof="$( echo "$para" | sed 's,[(),],_,g' )" - [ "$prof" = "$1" ] && passit=0 || passit=1 - - # write out a separating newline - echo "" >> $rocknet_base/config.new - - globals=0 - fi - - # just pass the line thru? - if [ $passit = 1 ] ; then - [ $globals = 0 -a "$netcmd" != "interface" ] && \ - echo -en "\t" >> $rocknet_base/config.new - echo "$netcmd $para" >> $rocknet_base/config.new - fi - done < <( cat < "$rocknet_base"/config ) - - # if the config file was empty, for an not yet present or last - # we had no change to match the existing position - so write them - # out now ... - [ $globals = 0 ] && echo "" >> $rocknet_base/config.new - [ "$1" ] && globals=0 - [ $dumped = 0 ] && write_tags $globals >> $rocknet_base/config.new - - mv $rocknet_base/config{.new,} -} - -edit_tag() { - tag="${tags[$1]}" - name="$tag" - gui_input "Set new value for tag '$name'" \ - "$tag" "tag" - - tags[$1]="$tag" -} - -edit_global_tag() { - edit_tag $@ - write_section "" -} - -add_tag() { - tta="$@" - if [ "$tta" = "" ] ; then - cmd="gui_menu add_tag 'Add tag of from module'" - - while read module ; do - cmd="$cmd "$module" module='$module'" - done < <( cd /etc/network/modules/ ; grep public_ * | sed -e \ - 's/\.sh//' -e 's/:.*//' | sort -u ) - module="" - eval $cmd - - cmd="gui_menu add_tag 'Add tag of type'" - while read tag ; do - cmd="$cmd "$tag" 'tta=$tag'" - done < <( cd /etc/network/modules/ ; grep -h public_ $module.sh \ - | sed -e 's/public_\([^(]*\).*/\1/' | sort ) - eval "$cmd" - fi - - if [ "$tta" ] ; then - tagno=${#tags[@]} - tags[$tagno]="$tta" - edit_tag $tagno - fi -} - -add_global_tag() { - add_tag $@ - write_section "" -} - -edit_if() { - read_section "$1" - - quit=0 - while - cmd="gui_menu if_edit 'Configure interface ${1//_/ }'" - for (( i=0 ; $i < ${#tags[@]} ; i=i+1 )) ; do - [ "${tags[$i]}" ] || continue - cmd="$cmd '${tags[$i]}' 'edit_tag $i'" - done - - cmd="$cmd '' '' 'Add new tag' 'add_tag'" - cmd="$cmd 'Delete this interface/profile' 'del_interface $1 && quit=1'" - - # tiny hack since gui_menu return 0 or 1 depending on the exec - # status of e.g. dialog - and thus a del_interface && false - # cannot be used ... - - eval "$cmd" || quit=1 - [ $quit = 0 ] - do : ; done - write_section "$1" -} - -add_interface() { - if="$1" - - gui_input "The new interface name (and profile)" \ - "$if" "if" - unset tags - tags[0]="interface $if" - - if gui_yesno "Use DHCP to obtain the configuration?" ; then - add_tag "dhcp" - else - add_tag "ip 192.168.5.1/24" - add_tag "gw 192.168.5.1" - add_tag "nameserver 192.168.5.1" - fi - - write_section "$if" -} - -del_interface() { - unset tags - write_section "$1" -} - -### STATIC OLD-STYLE CONFIG ### - set_name() { old1="$HOSTNAME" old2="$HOSTNAME.$DOMAINNAME" old3="$DOMAINNAME" if [ $1 = HOSTNAME ] ; then @@ -271,62 +76,39 @@ grep '^nameserver ' /etc/resolv.conf | tr '\t' ' ' | tr -s ' ' | \ DNSSRV='' ; . $tmp ; DNSSRV="`echo $DNSSRV`" [ -z "$DNSSRV" ] && DNSSRV="none" ; rm -f $tmp -main() { - first_run=1 +main_detailed() { while - - # read global section and interface list ... - read_section "" - - p_interfaces=$(ip link | egrep '[^:]*: .*' | \ - sed 's/[^:]*: \([a-z0-9]*\): .*/\1/' | \ - grep -v -e lo -e sit) - - if [ $first_run = 1 ] ; then - first_run=0 - # check if a section for the interface is already present - for x in $p_interfaces ; do - if [[ $interfaces != *$x* ]] ; then - if gui_yesno "Unconfigured interface $x detected. \ -Do you want to create an interface section?" ; then - add_interface "$x" - fi - fi - done - read_section "" - fi - - cmd="gui_menu network 'Network Configuration - Select an item to -change the value - -WARNING: This script tries to adapt /etc/network/config and /etc/hosts -according to your changes. Changes only take affect the next time -rocknet is executed.'" + cmd="gui_menu network 'Network Configuration'" cmd="$cmd 'Static hostname: $HOSTNAME' 'set_name HOSTNAME'" cmd="$cmd 'Static domainname: $DOMAINNAME' 'set_name DOMAINNAME'" cmd="$cmd 'Static DNS-Server: $DNSSRV' 'set_dns' '' ''" - for (( i=0 ; $i < ${#tags[@]} ; i=i+1 )) ; do - cmd="$cmd '${tags[$i]}' 'edit_global_tag $i'" - done - cmd="$cmd 'Add new global tag' 'add_global_tag' '' ''" - - for if in $interfaces ; do - cmd="$cmd 'Edit interface ${if//_/ }' 'edit_if $if'" - done - - cmd="$cmd 'Add new interface/profile' 'add_interface' '' ''" - cmd="$cmd 'Configure runlevels for network service'" cmd="$cmd '$STONE runlevel edit_srv network'" cmd="$cmd '(Re-)Start network init script'" cmd="$cmd '$STONE runlevel restart network'" cmd="$cmd '' ''" - cmd="$cmd 'View/Edit /etc/resolv.conf file' 'edit /etc/resolv.conf'" - cmd="$cmd 'View/Edit /etc/hosts file' 'edit /etc/hosts'" - cmd="$cmd 'View/Edit $rocknet_base/config file' 'edit $rocknet_base/config'" + cmd="$cmd 'View/Edit /etc/resolv.conf file' 'gui_edit /etc/resolv.conf /etc/resolv.conf'" + cmd="$cmd 'View/Edit /etc/hosts file' 'gui_edit /etc/hosts /etc/hosts'" + cmd="$cmd 'View/Edit /etc/network/config file' 'gui_edit /etc/network/config /etc/network/config'" + + cmd="$cmd '' ''" + + cmd="$cmd 'Read the /etc/network/README file' 'gui_edit /etc/network/README /etc/network/README'" + + eval "$cmd" + do : ; done +} + +main() { + while + cmd="gui_menu network 'Network Configuration'" + + cmd="$cmd 'Just edit /etc/network/config' 'gui_edit /etc/network/config /etc/network/config'" + cmd="$cmd 'Read the /etc/network/README file' 'gui_edit /etc/network/README /etc/network/README'" + cmd="$cmd 'Detailed Networking configuration' 'exec $0 network main_detailed'" eval "$cmd" do : ; done