Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 447 - (show annotations) (download) (as text)
Thu Jun 5 17:21:37 2008 UTC (15 years, 11 months ago) by niro
File MIME type: application/x-sh
File size: 5829 byte(s)
-removed samba support

1 # $Header: /home/cvsd/alx-cvs/alx-src/tinyalxconfig-ng/functions/config_network.sh,v 1.7 2008-06-05 17:21:37 niro Exp $
2 # 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 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 config_networking()
71 {
72 local iface
73
74 # first of all get the vars
75 get_network_settings
76 if ! check_network_settings
77 then
78 echo -e "${COLYELLOW}Could not retrieve network settings, doing nothing ...${COLDEFAULT}"
79 return 1
80 fi
81
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
94 # update confd-networking default iface
95 [ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH}
96 echo "${iface}" > ${SETTINGSPATH}/confd-networking
97
98 # hostname && hosts
99 echo "${ALX_HOSTNAME}" > /etc/hostname
100 echo -e "127.0.0.1\tlocalhost.${ALX_DOMAIN}\tlocalhost\t${ALX_HOSTNAME}" > /etc/hosts
101
102 # network devices
103
104 # always on boot
105 echo 'ONBOOT="yes"' > /etc/conf.d/net.${iface}
106 echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.${iface}
107
108 case ${ALX_NETWORKING} in
109 dhcp|DHCP)
110 echo 'DHCP_PROG="/sbin/udhcpc"' >> /etc/conf.d/net.${iface}
111 # timeout after 10 seconds and quit after retrieving a lease
112 echo 'DHCP_START="-t 10 -q"' >> /etc/conf.d/net.${iface}
113 ;;
114
115 static|STATIC)
116 # add hostname with valid ip to hosts
117 echo -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" >> /etc/hosts
118 echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.${iface}
119 echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.${iface}
120 echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.${iface}
121 ;;
122 esac
123
124 # gateway or gateway overrides
125 if [[ ${ALX_GATEWAY} != NULL ]]
126 then
127 echo "GATEWAY=\"${ALX_GATEWAY}\"" >> /etc/conf.d/net.${iface}
128 echo "GATEWAY_IF=\"${iface}\"" >> /etc/conf.d/net.${iface}
129 fi
130
131 # force mac address override
132 if [[ ${ALX_FORCEMACTO} != NULL ]]
133 then
134 echo "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" >> /etc/conf.d/net.${iface}
135 fi
136
137 # nameserver or nameserver overrides
138 if [[ ${ALX_DNS} != NULL ]]
139 then
140 echo "nameserver ${ALX_DNS}" > /etc/resolv.conf
141 fi
142
143 # wireless extensions
144 local value
145 local var
146 for var in ALX_WIRELESS_BITRATE \
147 ALX_WIRELESS_CHANNEL \
148 ALX_WIRELESS_ESSID \
149 ALX_WIRELESS_FREQUENCY \
150 ALX_WIRELESS_MODE \
151 ALX_WIRELESS_NICK \
152 ALX_WIRELESS_AUTH_MODE \
153 ALX_WIRELESS_KEY_LENGTH \
154 ALX_WIRELESS_KEY \
155 ALX_WIRELESS_KEY_ASCII
156 do
157 # get the value of $var
158 eval value=\$$(echo ${var})
159
160 # write it only if not empty
161 if [[ -n ${value} ]] && [[ ${value} != NULL ]]
162 then
163 # remove ALX_ from var
164 echo "${var/ALX_/}=\"${value}\"" >> /etc/conf.d/net.${iface}
165 fi
166
167 # clear value
168 unset value
169 done
170
171 # setup wpa-driver (only zydas atm)
172 [[ ${ALX_MODULE} = zd1211 ]] && \
173 echo "WIRELESS_WPA_DRIVER=zydas" >> /etc/conf.d/net.${iface}
174
175 # unset all vars
176 unset ALX_HOSTNAME
177 unset ALX_MODULE
178 unset ALX_DOMAIN
179 unset ALX_NETWORKING
180 unset ALX_IP
181 unset ALX_NETMASK
182 unset ALX_DNS
183 unset ALX_GATEWAY
184 unset ALX_BROADCAST
185 unset ALX_FORCEMACTO
186 unset ALX_IFACE
187 unset ALX_WIRELESS_BITRATE
188 unset ALX_WIRELESS_CHANNEL
189 unset ALX_WIRELESS_ESSID
190 unset ALX_WIRELESS_FREQUENCY
191 unset ALX_WIRELESS_MODE
192 unset ALX_WIRELESS_NICK
193 unset ALX_WIRELESS_AUTH_MODE
194 unset ALX_WIRELESS_KEY_LENGTH
195 unset ALX_WIRELESS_KEY
196 unset ALX_WIRELESS_KEY_ASCII
197 }
198