Magellan Linux

Diff of /alx-src/branches/alxconf-060/functions/config_network.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

alx-src/trunk/alxconfig-ng/functions/config_network.sh revision 218 by niro, Tue Mar 8 20:29:46 2005 UTC alx-src/branches/alxconf-060/functions/config_network.sh revision 2033 by niro, Wed May 11 09:10:33 2011 UTC
# Line 1  Line 1 
1  # configures networkin on the host via mysql db settings  # $Id$
2    # configures networking on the host via mysql db settings
 #delme settings  
 SQL_USER=alx_install  
 SQL_PASS=@lx  
 SQL_HOST=128.20.41.110  
 SQL_DB=alx_web  
 ALX_SERIAL=10  
3    
4  get_network_settings()  get_network_settings()
5  {  {
6   local x i all DB_NETWORK   local x i all DB_NETWORK
7    
8   #all arrays:   # all arrays:
9   # ->  hostname modules domain networking ip netmask dns gateway broadcast   # ->  hostname modules domain networking ip netmask dns gateway broadcast
10    
11   all=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \   all=$(mysqldo "select iface,
12   "select hostname,   hostname,
13   module,   module,
14   domain,   domain,
15   networking,   networking,
16   ip,   ip,
17   netmask,   netmask,
18   dns,   dns,
19   gateway,   gateway,
20   broadcast   broadcast
21   from cfg_network where serial='${ALX_SERIAL}'")   from cfg_network where serial='${ALX_SERIAL}'")
22    
23   #split'em up and put 'em in an array   # split'em up and put 'em in an array
24   declare -i i=0   declare -i i=0
25   for x in ${all}   for x in ${all}
26   do   do
# Line 34  get_network_settings() Line 28  get_network_settings()
28   ((i++))   ((i++))
29   done   done
30    
31   # and now put them in usable var names and export them systemwide   # and now put in usable var names and export them systemwide
32   export ALX_HOSTNAME="${DB_NETWORK[0]:=NULL}"   export ALX_IFACE="${DB_NETWORK[0]:=NULL}"
33   export ALX_MODULE="${DB_NETWORK[1]:=NULL}"   export ALX_HOSTNAME="${DB_NETWORK[1]:=NULL}"
34   export ALX_DOMAIN="${DB_NETWORK[2]:=NULL}"   export ALX_MODULE="${DB_NETWORK[2]:=NULL}"
35   export ALX_NETWORKING="${DB_NETWORK[3]:=NULL}"   export ALX_DOMAIN="${DB_NETWORK[3]:=NULL}"
36   export ALX_IP="${DB_NETWORK[4]:=NULL}"   export ALX_NETWORKING="${DB_NETWORK[4]:=NULL}"
37   export ALX_NETMASK="${DB_NETWORK[5]:=NULL}"   export ALX_IP="${DB_NETWORK[5]:=NULL}"
38   export ALX_DNS="${DB_NETWORK[6]:=NULL}"   export ALX_NETMASK="${DB_NETWORK[6]:=NULL}"
39   export ALX_GATEWAY="${DB_NETWORK[7]:=NULL}"   export ALX_DNS="${DB_NETWORK[7]:=NULL}"
40   export ALX_BROADCAST="${DB_NETWORK[8]:=NULL}"   export ALX_GATEWAY="${DB_NETWORK[8]:=NULL}"
41     export ALX_BROADCAST="${DB_NETWORK[9]:=NULL}"
42    
43     # the new mac address hack
44     export ALX_FORCEMACTO=$(mysqldo "select forcemacto from cfg_network where serial='${ALX_SERIAL}'")
45    
46     # wireless extensions
47     export ALX_WIRELESS_BITRATE=$(mysqldo "select wireless_bitrate from cfg_network where serial='${ALX_SERIAL}'")
48     export ALX_WIRELESS_CHANNEL=$(mysqldo "select wireless_channel from cfg_network where serial='${ALX_SERIAL}'")
49     export ALX_WIRELESS_ESSID=$(mysqldo "select wireless_essid from cfg_network where serial='${ALX_SERIAL}'")
50     export ALX_WIRELESS_FREQUENCY=$(mysqldo "select wireless_frequency from cfg_network where serial='${ALX_SERIAL}'")
51     export ALX_WIRELESS_MODE=$(mysqldo "select wireless_mode from cfg_network where serial='${ALX_SERIAL}'")
52     export ALX_WIRELESS_NICK=$(mysqldo "select wireless_nick from cfg_network where serial='${ALX_SERIAL}'")
53     export ALX_WIRELESS_AUTH_MODE=$(mysqldo "select wireless_auth_mode from cfg_network where serial='${ALX_SERIAL}'")
54     export ALX_WIRELESS_KEY_LENGTH=$(mysqldo "select wireless_key_length from cfg_network where serial='${ALX_SERIAL}'")
55     export ALX_WIRELESS_KEY=$(mysqldo "select wireless_key from cfg_network where serial='${ALX_SERIAL}'")
56     export ALX_WIRELESS_KEY_ASCII=$(mysqldo "select wireless_key_ascii from cfg_network where serial='${ALX_SERIAL}'")
57  }  }
58    
59  config_networking()  config_networking()
60  {  {
61   #first of all get the vars   local iface
62     local CONFIG
63    
64     # first of all get the vars
65   get_network_settings   get_network_settings
66    
67   # debug   # get the right nic
68   echo "0: ${ALX_HOSTNAME}"   if [[ -z ${ALX_IFACE} ]] || [[ ${ALX_IFACE} = NULL ]]
69   echo "1: ${ALX_MODULE}"   then
70   echo "2: ${ALX_DOMAIN}"   # default is 'eth0'
71   echo "3: ${ALX_NETWORKING}"   iface="eth0"
72   echo "4: ${ALX_IP}"   else
73   echo "5: ${ALX_NETMASK}"   iface="${ALX_IFACE}"
74   echo "6: ${ALX_DNS}"   fi
75   echo "7: ${ALX_GATEWAY}"  
76   echo "8: ${ALX_BROADCAST}"   # remove all old nics and modules configs
77     find /etc/conf.d -type f -name 'net.*' | xargs rm
78     find /etc/modules.d -type f -name 'net.*' | xargs rm
79    
80     # update the preliminary network
81     # set an device alias for modprobe.conf
82     [ ! -d /etc/modules.d ] && install -d /etc/modules.d
83     # update only if not the same (to speed up bootprocess - no depmod)
84     if [ ! -f /etc/modules.d/net.${iface} ] ||
85     [[ ${iface} != $(cat /etc/modules.d/net.${iface} | cut -d' ' -f2) ]]
86     then
87     CONFIG=/etc/modules.d/net.${iface}
88     clearconfig
89     addconfig "alias ${iface} ${ALX_MODULE}"
90     fi
91    
92     # update confd-networking default iface
93     [ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH}
94     CONFIG=${SETTINGSPATH}/confd-networking
95     clearconfig
96     addconfig "${iface}"
97    
98   # hostname && hosts   # hostname && hosts
99   echo "${ALX_HOSTNAME}" > /etc/hostname   CONFIG=/etc/hostname
100   echo -e "127.0.0.1\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" > /etc/hosts   clearconfig
101     addconfig "${ALX_HOSTNAME}"
102     CONFIG=/etc/hosts
103     clearconfig
104     addconfig -e "127.0.0.1\tlocalhost.${ALX_DOMAIN}\tlocalhost\t${ALX_HOSTNAME}"
105     case ${ALX_NETWORKING} in
106     static|STATIC)
107     # add hostname with valid ip to hosts
108     addconfig -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}"
109     ;;
110     esac
111    
112   # network devices   # network devices
113    
114   # always on boot   # always on boot
115   echo 'ONBOOT="yes"' > /etc/conf.d/net.eth0   CONFIG=/etc/conf.d/net.${iface}
116   echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.eth0   clearconfig
117    
118     addconfig 'ONBOOT="yes"'
119     addconfig "NETWORKING=\"${ALX_NETWORKING}\""
120   case ${ALX_NETWORKING} in   case ${ALX_NETWORKING} in
121   dhcp|DHCP)   dhcp|DHCP)
122   echo 'DHCP_PROG="/sbin/dhcpcd"' >> /etc/conf.d/net.eth0   addconfig 'DHCP_PROG="/sbin/udhcpc"'
123   # -k kills the dhcp-cache at system shutdown   addconfig 'DHCP_STOP=""'
  # -z will not  
  echo 'DHCP_STOP="-z"' >> /etc/conf.d/net.eth0  
124   #timeout after 10 seconds   #timeout after 10 seconds
125   echo 'DHCP_START="-t 10"' >> /etc/conf.d/net.eth0   addconfig 'DHCP_START="-t 10"'
126   ;;   ;;
127    
128   static|STATIC)   static|STATIC)
129   # add hostname with valid ip to hosts   addconfig "IP=\"${ALX_IP}\""
130   echo -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" >> /etc/hosts   addconfig "NETMASK=\"${ALX_NETMASK}\""
131   echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.eth0   addconfig "BROADCAST=\"${ALX_BROADCAST}\""
  echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.eth0  
  echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.eth0  
132   ;;   ;;
133   esac   esac
134    
135     # force mac address override
136     if [[ ${ALX_FORCEMACTO} != NULL ]]
137     then
138     addconfig "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\""
139     fi
140    
141     # wireless extensions
142     local value
143     local var
144     for var in ALX_WIRELESS_BITRATE \
145     ALX_WIRELESS_CHANNEL \
146     ALX_WIRELESS_ESSID \
147     ALX_WIRELESS_FREQUENCY \
148     ALX_WIRELESS_MODE \
149     ALX_WIRELESS_NICK \
150     ALX_WIRELESS_AUTH_MODE \
151     ALX_WIRELESS_KEY_LENGTH \
152     ALX_WIRELESS_KEY \
153     ALX_WIRELESS_KEY_ASCII
154     do
155     # get the value of $var
156     eval value=\$$(echo ${var})
157    
158     # write it only if not empty
159     if [[ -n ${value} ]] && [[ ${value} != NULL ]]
160     then
161     # remove ALX_ from var
162     addconfig "${var/ALX_/}=\"${value}\""
163     fi
164    
165     # clear value
166     unset value
167     done
168    
169     # FIXME !!!
170     # setup wpa-driver (only zydas atm)
171     if [[ ${ALX_MODULE} = zd1211 ]]
172     then
173     addconfig "WIRELESS_WPA_DRIVER=zydas"
174     fi
175    
176     CONFIG=/etc/conf.d/net.routes
177     clearconfig
178   # gateway or gateway overrides   # gateway or gateway overrides
179   if [[ ${ALX_GATEWAY} != NULL ]]   if [[ ${ALX_GATEWAY} != NULL ]]
180   then   then
181   echo "GATEWAY=\"${ALX_GATEWAY}\"" >> /etc/conf.d/net.eth0   addconfig "default gw ${ALX_GATEWAY}"
  echo 'GATEWAY_IF="eth0"' >> /etc/conf.d/net.eth0  
182   fi   fi
183    
184     CONFIG=/etc/resolv.conf
185     clearconfig
186   # nameserver or nameserver overrides   # nameserver or nameserver overrides
187   if [[ ${ALX_DNS} != NULL ]]   if [[ ${ALX_DNS} != NULL ]]
188   then   then
189   echo "nameserver ${ALX_DNS}" > /etc/resolv.conf   addconfig "nameserver ${ALX_DNS}"
190   fi   fi
191    
192   # unset all vars   # unset all vars
# Line 114  config_networking() Line 199  config_networking()
199   unset ALX_DNS   unset ALX_DNS
200   unset ALX_GATEWAY   unset ALX_GATEWAY
201   unset ALX_BROADCAST   unset ALX_BROADCAST
202     unset ALX_FORCEMACTO
203     unset ALX_IFACE
204     unset ALX_WIRELESS_BITRATE
205     unset ALX_WIRELESS_CHANNEL
206     unset ALX_WIRELESS_ESSID
207     unset ALX_WIRELESS_FREQUENCY
208     unset ALX_WIRELESS_MODE
209     unset ALX_WIRELESS_NICK
210     unset ALX_WIRELESS_AUTH_MODE
211     unset ALX_WIRELESS_KEY_LENGTH
212     unset ALX_WIRELESS_KEY
213     unset ALX_WIRELESS_KEY_ASCII
214  }  }

Legend:
Removed from v.218  
changed lines
  Added in v.2033