Annotation of /alx-src/trunk/tinyalxconfig-ng/functions/config_network.sh
Parent Directory | Revision Log
Revision 447 -
(hide 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)
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 | niro | 447 | # $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 | 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 | |||
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 | niro | 392 | 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 | niro | 386 | ;; |
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 |