Contents of /alx-src/trunk/tinyalxconfig-ng/functions/config_network.sh
Parent Directory | Revision Log
Revision 392 -
(show annotations)
(download)
(as text)
Wed Jun 4 18:07:24 2008 UTC (16 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 6218 byte(s)
Wed Jun 4 18:07:24 2008 UTC (16 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 6218 byte(s)
-use udhcp as DHCP_PROG
1 | # $Header: /home/cvsd/alx-cvs/alx-src/tinyalxconfig-ng/functions/config_network.sh,v 1.2 2008-06-04 18:07:24 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 | 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 | [ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH} |
91 | echo "${iface}" > ${SETTINGSPATH}/confd-networking |
92 | |
93 | # hostname && hosts |
94 | echo "${ALX_HOSTNAME}" > /etc/hostname |
95 | echo -e "127.0.0.1\tlocalhost.${ALX_DOMAIN}\tlocalhost\t${ALX_HOSTNAME}" > /etc/hosts |
96 | |
97 | # network devices |
98 | |
99 | # always on boot |
100 | echo 'ONBOOT="yes"' > /etc/conf.d/net.${iface} |
101 | echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.${iface} |
102 | |
103 | case ${ALX_NETWORKING} in |
104 | dhcp|DHCP) |
105 | echo 'DHCP_PROG="/sbin/udhcpc"' >> /etc/conf.d/net.${iface} |
106 | # timeout after 10 seconds and quit after retrieving a lease |
107 | echo 'DHCP_START="-t 10 -q"' >> /etc/conf.d/net.${iface} |
108 | ;; |
109 | |
110 | static|STATIC) |
111 | # add hostname with valid ip to hosts |
112 | echo -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" >> /etc/hosts |
113 | echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.${iface} |
114 | echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.${iface} |
115 | echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.${iface} |
116 | ;; |
117 | esac |
118 | |
119 | # gateway or gateway overrides |
120 | if [[ ${ALX_GATEWAY} != NULL ]] |
121 | then |
122 | echo "GATEWAY=\"${ALX_GATEWAY}\"" >> /etc/conf.d/net.${iface} |
123 | echo "GATEWAY_IF=\"${iface}\"" >> /etc/conf.d/net.${iface} |
124 | fi |
125 | |
126 | # force mac address override |
127 | if [[ ${ALX_FORCEMACTO} != NULL ]] |
128 | then |
129 | echo "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" >> /etc/conf.d/net.${iface} |
130 | fi |
131 | |
132 | # nameserver or nameserver overrides |
133 | if [[ ${ALX_DNS} != NULL ]] |
134 | then |
135 | echo "nameserver ${ALX_DNS}" > /etc/resolv.conf |
136 | fi |
137 | |
138 | # setup smb.conf (little sed magic:) |
139 | # first get smb version ! |
140 | local smbconf |
141 | [[ $(smbd --version | cut -d' ' -f2) > 2.999 ]] && smbconf=smb3.conf || smbconf=smb.conf |
142 | |
143 | cat ${ALX_SKELETONS}/samba/${smbconf} > /etc/samba/smb.conf |
144 | sed -i -e "s:\(workgroup = \).*:\1${ALX_DOMAIN}:" /etc/samba/smb.conf |
145 | |
146 | # wireless extensions |
147 | local value |
148 | local var |
149 | for var in ALX_WIRELESS_BITRATE \ |
150 | ALX_WIRELESS_CHANNEL \ |
151 | ALX_WIRELESS_ESSID \ |
152 | ALX_WIRELESS_FREQUENCY \ |
153 | ALX_WIRELESS_MODE \ |
154 | ALX_WIRELESS_NICK \ |
155 | ALX_WIRELESS_AUTH_MODE \ |
156 | ALX_WIRELESS_KEY_LENGTH \ |
157 | ALX_WIRELESS_KEY \ |
158 | ALX_WIRELESS_KEY_ASCII |
159 | do |
160 | # get the value of $var |
161 | eval value=\$$(echo ${var}) |
162 | |
163 | # write it only if not empty |
164 | if [[ -n ${value} ]] && [[ ${value} != NULL ]] |
165 | then |
166 | # remove ALX_ from var |
167 | echo "${var/ALX_/}=\"${value}\"" >> /etc/conf.d/net.${iface} |
168 | fi |
169 | |
170 | # clear value |
171 | unset value |
172 | done |
173 | |
174 | # setup wpa-driver (only zydas atm) |
175 | [[ ${ALX_MODULE} = zd1211 ]] && \ |
176 | echo "WIRELESS_WPA_DRIVER=zydas" >> /etc/conf.d/net.${iface} |
177 | |
178 | # unset all vars |
179 | unset ALX_HOSTNAME |
180 | unset ALX_MODULE |
181 | unset ALX_DOMAIN |
182 | unset ALX_NETWORKING |
183 | unset ALX_IP |
184 | unset ALX_NETMASK |
185 | unset ALX_DNS |
186 | unset ALX_GATEWAY |
187 | unset ALX_BROADCAST |
188 | unset ALX_FORCEMACTO |
189 | unset ALX_IFACE |
190 | unset ALX_WIRELESS_BITRATE |
191 | unset ALX_WIRELESS_CHANNEL |
192 | unset ALX_WIRELESS_ESSID |
193 | unset ALX_WIRELESS_FREQUENCY |
194 | unset ALX_WIRELESS_MODE |
195 | unset ALX_WIRELESS_NICK |
196 | unset ALX_WIRELESS_AUTH_MODE |
197 | unset ALX_WIRELESS_KEY_LENGTH |
198 | unset ALX_WIRELESS_KEY |
199 | unset ALX_WIRELESS_KEY_ASCII |
200 | } |
201 |