Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 353 - (show annotations) (download) (as text)
Mon Oct 10 18:43:58 2005 UTC (18 years, 6 months ago) by niro
File MIME type: application/x-sh
File size: 6239 byte(s)
added fix to convert zd1211 to zydas for wpa_supplicant

1 # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_network.sh,v 1.12 2005-10-10 18:43:58 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 hostname,
12 module,
13 domain,
14 networking,
15 ip,
16 netmask,
17 dns,
18 gateway,
19 broadcast,
20 iface
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_HOSTNAME="${DB_NETWORK[0]:=NULL}"
33 export ALX_MODULE="${DB_NETWORK[1]:=NULL}"
34 export ALX_DOMAIN="${DB_NETWORK[2]:=NULL}"
35 export ALX_NETWORKING="${DB_NETWORK[3]:=NULL}"
36 export ALX_IP="${DB_NETWORK[4]:=NULL}"
37 export ALX_NETMASK="${DB_NETWORK[5]:=NULL}"
38 export ALX_DNS="${DB_NETWORK[6]:=NULL}"
39 export ALX_GATEWAY="${DB_NETWORK[7]:=NULL}"
40 export ALX_BROADCAST="${DB_NETWORK[8]:=NULL}"
41 export ALX_IFACE="${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()
60 {
61 local iface
62
63 # first of all get the vars
64 get_network_settings
65
66 # get the right nic
67 if [[ -z ${ALX_IFACE} ]] || [[ ${ALX_IFACE} = NULL ]]
68 then
69 # default is 'eth0'
70 iface="eth0"
71 else
72 iface="${ALX_IFACE}"
73 fi
74
75 # remove all old nics and modules configs
76 find /etc/conf.d -type f -name 'net.*' | xargs rm
77 find /etc/modules.d -type f -name 'net.*' | xargs rm
78
79 # update the preliminary network
80 # set an device alias for modprobe.conf
81 [ ! -d /etc/modules.d ] && install -d /etc/modules.d
82 # update only if not the same (to speed up bootprocess - no depmod)
83 if [ ! -f /etc/modules.d/net.${iface} ] ||
84 [[ ${iface} != $(cat /etc/modules.d/net.${iface} | cut -d' ' -f2) ]]
85 then
86 echo "alias ${iface} ${ALX_MODULE}" > /etc/modules.d/net.${iface}
87 fi
88
89 # update confd-networking default iface
90 echo "${iface}" > ${SETTINGSPATH}/confd-networking
91
92 # hostname && hosts
93 echo "${ALX_HOSTNAME}" > /etc/hostname
94 echo -e "127.0.0.1\tlocalhost.${ALX_DOMAIN}\tlocalhost\t${ALX_HOSTNAME}" > /etc/hosts
95
96 # network devices
97
98 # always on boot
99 echo 'ONBOOT="yes"' > /etc/conf.d/net.${iface}
100 echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.${iface}
101
102 case ${ALX_NETWORKING} in
103 dhcp|DHCP)
104 echo 'DHCP_PROG="/sbin/dhcpcd"' >> /etc/conf.d/net.${iface}
105 # -k kills the dhcp-cache at system shutdown
106 # -z will not
107 echo 'DHCP_STOP="-z"' >> /etc/conf.d/net.${iface}
108 #timeout after 10 seconds
109 echo 'DHCP_START="-t 10"' >> /etc/conf.d/net.${iface}
110 ;;
111
112 static|STATIC)
113 # add hostname with valid ip to hosts
114 echo -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" >> /etc/hosts
115 echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.${iface}
116 echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.${iface}
117 echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.${iface}
118 ;;
119 esac
120
121 # gateway or gateway overrides
122 if [[ ${ALX_GATEWAY} != NULL ]]
123 then
124 echo "GATEWAY=\"${ALX_GATEWAY}\"" >> /etc/conf.d/net.${iface}
125 echo "GATEWAY_IF=\"${iface}\"" >> /etc/conf.d/net.${iface}
126 fi
127
128 # force mac address override
129 if [[ ${ALX_FORCEMACTO} != NULL ]]
130 then
131 echo "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" >> /etc/conf.d/net.${iface}
132 fi
133
134 # nameserver or nameserver overrides
135 if [[ ${ALX_DNS} != NULL ]]
136 then
137 echo "nameserver ${ALX_DNS}" > /etc/resolv.conf
138 fi
139
140 # setup smb.conf (little sed magic:)
141 # first get smb version !
142 local smbconf
143 [[ $(smbd --version | cut -d' ' -f2) > 2.999 ]] && smbconf=smb3.conf || smbconf=smb.conf
144
145 cat ${ALX_SKELETONS}/samba/${smbconf} > /etc/samba/smb.conf
146 sed -i -e "s:\(workgroup = \).*:\1${ALX_DOMAIN}:" /etc/samba/smb.conf
147
148 # wireless extensions
149 local value
150 local var
151 for var in ALX_WIRELESS_BITRATE \
152 ALX_WIRELESS_CHANNEL \
153 ALX_WIRELESS_ESSID \
154 ALX_WIRELESS_FREQUENCY \
155 ALX_WIRELESS_MODE \
156 ALX_WIRELESS_NICK \
157 ALX_WIRELESS_AUTH_MODE \
158 ALX_WIRELESS_KEY_LENGTH \
159 ALX_WIRELESS_KEY \
160 ALX_WIRELESS_KEY_ASCII
161 do
162 # get the value of $var
163 eval value=\$$(echo ${var})
164
165 # write it only if not empty
166 if [[ -n ${value} ]] && [[ ${value} != NULL ]]
167 then
168 # remove ALX_ from var
169 echo "${var/ALX_/}=\"${value}\"" >> /etc/conf.d/net.${iface}
170 fi
171
172 # clear value
173 unset value
174 done
175
176 # setup wpa-driver (only zydas atm)
177 [[ ${ALX_MODULE} = zd1211 ]] && \
178 echo "WIRELESS_WPA_DRIVER=zydas" >> /etc/conf.d/net.${iface}
179
180 # unset all vars
181 unset ALX_HOSTNAME
182 unset ALX_MODULE
183 unset ALX_DOMAIN
184 unset ALX_NETWORKING
185 unset ALX_IP
186 unset ALX_NETMASK
187 unset ALX_DNS
188 unset ALX_GATEWAY
189 unset ALX_BROADCAST
190 unset ALX_FORCEMACTO
191 unset ALX_IFACE
192 unset ALX_WIRELESS_BITRATE
193 unset ALX_WIRELESS_CHANNEL
194 unset ALX_WIRELESS_ESSID
195 unset ALX_WIRELESS_FREQUENCY
196 unset ALX_WIRELESS_MODE
197 unset ALX_WIRELESS_NICK
198 unset ALX_WIRELESS_AUTH_MODE
199 unset ALX_WIRELESS_KEY_LENGTH
200 unset ALX_WIRELESS_KEY
201 unset ALX_WIRELESS_KEY_ASCII
202 }
203