Magellan Linux

Annotation of /alx-src/trunk/tinyalxconfig-ng/functions/config_network.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 398 - (hide annotations) (download) (as text)
Wed Jun 4 18:37:17 2008 UTC (15 years, 11 months ago) by niro
File MIME type: application/x-sh
File size: 6617 byte(s)
-no samba support

1 niro 398 # $Header: /home/cvsd/alx-cvs/alx-src/tinyalxconfig-ng/functions/config_network.sh,v 1.5 2008-06-04 18:37:17 niro Exp $
2 niro 386 # configures networkin on the host via mysql db settings
3    
4     get_network_settings()
5     {
6     local x i all DB_NETWORK
7    
8     # all arrays:
9     # -> hostname modules domain networking ip netmask dns gateway broadcast
10    
11     all=$(mysqldo "select iface,
12     hostname,
13     module,
14     domain,
15     networking,
16     ip,
17     netmask,
18     dns,
19     gateway,
20     broadcast
21     from cfg_network where serial='${ALX_SERIAL}'")
22    
23     # split'em up and put 'em in an array
24     declare -i i=0
25     for x in ${all}
26     do
27     DB_NETWORK[${i}]="${x}"
28     ((i++))
29     done
30    
31     # and now put in usable var names and export them systemwide
32     export ALX_IFACE="${DB_NETWORK[0]:=NULL}"
33     export ALX_HOSTNAME="${DB_NETWORK[1]:=NULL}"
34     export ALX_MODULE="${DB_NETWORK[2]:=NULL}"
35     export ALX_DOMAIN="${DB_NETWORK[3]:=NULL}"
36     export ALX_NETWORKING="${DB_NETWORK[4]:=NULL}"
37     export ALX_IP="${DB_NETWORK[5]:=NULL}"
38     export ALX_NETMASK="${DB_NETWORK[6]:=NULL}"
39     export ALX_DNS="${DB_NETWORK[7]:=NULL}"
40     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 niro 394 check_network_settings()
60     {
61     # sanity checks
62     [[ ${ALX_IFACE} = NULL ]] && return 1
63     [[ ${ALX_HOSTNAME} = NULL ]] && return 1
64     [[ ${ALX_NETWORKING} = NULL ]] && return 1
65    
66     # if we get here, everything is ok
67     return 0
68     }
69    
70 niro 386 config_networking()
71     {
72     local iface
73    
74     # first of all get the vars
75     get_network_settings
76 niro 394 if ! check_network_settings
77     then
78 niro 395 echo -e "${COLYELLOW}Could not retrieve network settings, doing nothing ...${COLDEFAULT}"
79 niro 394 return 1
80     fi
81 niro 386
82     # get the right nic
83     if [[ -z ${ALX_IFACE} ]] || [[ ${ALX_IFACE} = NULL ]]
84     then
85     # default is 'eth0'
86     iface="eth0"
87     else
88     iface="${ALX_IFACE}"
89     fi
90    
91     # remove all old nics and modules configs
92     find /etc/conf.d -type f -name 'net.*' | xargs rm
93     find /etc/modules.d -type f -name 'net.*' | xargs rm
94    
95     # update the preliminary network
96     # set an device alias for modprobe.conf
97     [ ! -d /etc/modules.d ] && install -d /etc/modules.d
98     # update only if not the same (to speed up bootprocess - no depmod)
99     if [ ! -f /etc/modules.d/net.${iface} ] ||
100     [[ ${iface} != $(cat /etc/modules.d/net.${iface} | cut -d' ' -f2) ]]
101     then
102     echo "alias ${iface} ${ALX_MODULE}" > /etc/modules.d/net.${iface}
103     fi
104    
105     # update confd-networking default iface
106     [ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH}
107     echo "${iface}" > ${SETTINGSPATH}/confd-networking
108    
109     # hostname && hosts
110     echo "${ALX_HOSTNAME}" > /etc/hostname
111     echo -e "127.0.0.1\tlocalhost.${ALX_DOMAIN}\tlocalhost\t${ALX_HOSTNAME}" > /etc/hosts
112    
113     # network devices
114    
115     # always on boot
116     echo 'ONBOOT="yes"' > /etc/conf.d/net.${iface}
117     echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.${iface}
118    
119     case ${ALX_NETWORKING} in
120     dhcp|DHCP)
121 niro 392 echo 'DHCP_PROG="/sbin/udhcpc"' >> /etc/conf.d/net.${iface}
122     # timeout after 10 seconds and quit after retrieving a lease
123     echo 'DHCP_START="-t 10 -q"' >> /etc/conf.d/net.${iface}
124 niro 386 ;;
125    
126     static|STATIC)
127     # add hostname with valid ip to hosts
128     echo -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" >> /etc/hosts
129     echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.${iface}
130     echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.${iface}
131     echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.${iface}
132     ;;
133     esac
134    
135     # gateway or gateway overrides
136     if [[ ${ALX_GATEWAY} != NULL ]]
137     then
138     echo "GATEWAY=\"${ALX_GATEWAY}\"" >> /etc/conf.d/net.${iface}
139     echo "GATEWAY_IF=\"${iface}\"" >> /etc/conf.d/net.${iface}
140     fi
141    
142     # force mac address override
143     if [[ ${ALX_FORCEMACTO} != NULL ]]
144     then
145     echo "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" >> /etc/conf.d/net.${iface}
146     fi
147    
148     # nameserver or nameserver overrides
149     if [[ ${ALX_DNS} != NULL ]]
150     then
151     echo "nameserver ${ALX_DNS}" > /etc/resolv.conf
152     fi
153    
154 niro 398 # have no samba anymore
155     # # setup smb.conf (little sed magic:)
156     # # first get smb version !
157     # local smbconf
158     # [[ $(smbd --version | cut -d' ' -f2) > 2.999 ]] && smbconf=smb3.conf || smbconf=smb.conf
159     #
160     # cat ${ALX_SKELETONS}/samba/${smbconf} > /etc/samba/smb.conf
161     # sed -i -e "s:\(workgroup = \).*:\1${ALX_DOMAIN}:" /etc/samba/smb.conf
162 niro 386
163     # wireless extensions
164     local value
165     local var
166     for var in ALX_WIRELESS_BITRATE \
167     ALX_WIRELESS_CHANNEL \
168     ALX_WIRELESS_ESSID \
169     ALX_WIRELESS_FREQUENCY \
170     ALX_WIRELESS_MODE \
171     ALX_WIRELESS_NICK \
172     ALX_WIRELESS_AUTH_MODE \
173     ALX_WIRELESS_KEY_LENGTH \
174     ALX_WIRELESS_KEY \
175     ALX_WIRELESS_KEY_ASCII
176     do
177     # get the value of $var
178     eval value=\$$(echo ${var})
179    
180     # write it only if not empty
181     if [[ -n ${value} ]] && [[ ${value} != NULL ]]
182     then
183     # remove ALX_ from var
184     echo "${var/ALX_/}=\"${value}\"" >> /etc/conf.d/net.${iface}
185     fi
186    
187     # clear value
188     unset value
189     done
190    
191     # setup wpa-driver (only zydas atm)
192     [[ ${ALX_MODULE} = zd1211 ]] && \
193     echo "WIRELESS_WPA_DRIVER=zydas" >> /etc/conf.d/net.${iface}
194    
195     # unset all vars
196     unset ALX_HOSTNAME
197     unset ALX_MODULE
198     unset ALX_DOMAIN
199     unset ALX_NETWORKING
200     unset ALX_IP
201     unset ALX_NETMASK
202     unset ALX_DNS
203     unset ALX_GATEWAY
204     unset ALX_BROADCAST
205     unset ALX_FORCEMACTO
206     unset ALX_IFACE
207     unset ALX_WIRELESS_BITRATE
208     unset ALX_WIRELESS_CHANNEL
209     unset ALX_WIRELESS_ESSID
210     unset ALX_WIRELESS_FREQUENCY
211     unset ALX_WIRELESS_MODE
212     unset ALX_WIRELESS_NICK
213     unset ALX_WIRELESS_AUTH_MODE
214     unset ALX_WIRELESS_KEY_LENGTH
215     unset ALX_WIRELESS_KEY
216     unset ALX_WIRELESS_KEY_ASCII
217     }
218