1 |
# $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_network.sh,v 1.10 2005-08-28 19:28:58 niro Exp $ |
# $Id$ |
2 |
# configures networkin on the host via mysql db settings |
# configures networking on the host via mysql db settings |
3 |
|
|
4 |
get_network_settings() |
get_network_settings() |
5 |
{ |
{ |
6 |
local x i all DB_NETWORK |
local x i all DB_NETWORK |
7 |
|
|
8 |
#all arrays: |
# all arrays: |
9 |
# -> hostname modules domain networking ip netmask dns gateway broadcast |
# -> hostname modules domain networking ip netmask dns gateway broadcast |
10 |
|
|
11 |
all=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
all=$(mysqldo "select iface, |
12 |
"select hostname, |
hostname, |
13 |
module, |
module, |
14 |
domain, |
domain, |
15 |
networking, |
networking, |
16 |
ip, |
ip, |
17 |
netmask, |
netmask, |
18 |
dns, |
dns, |
19 |
gateway, |
gateway, |
20 |
broadcast |
broadcast |
21 |
from cfg_network where serial='${ALX_SERIAL}'") |
from cfg_network where serial='${ALX_SERIAL}'") |
22 |
|
|
23 |
#split'em up and put 'em in an array |
# split'em up and put 'em in an array |
24 |
declare -i i=0 |
declare -i i=0 |
25 |
for x in ${all} |
for x in ${all} |
26 |
do |
do |
29 |
done |
done |
30 |
|
|
31 |
# and now put in usable var names and export them systemwide |
# and now put in usable var names and export them systemwide |
32 |
export ALX_HOSTNAME="${DB_NETWORK[0]:=NULL}" |
export ALX_IFACE="${DB_NETWORK[0]:=NULL}" |
33 |
export ALX_MODULE="${DB_NETWORK[1]:=NULL}" |
export ALX_HOSTNAME="${DB_NETWORK[1]:=NULL}" |
34 |
export ALX_DOMAIN="${DB_NETWORK[2]:=NULL}" |
export ALX_MODULE="${DB_NETWORK[2]:=NULL}" |
35 |
export ALX_NETWORKING="${DB_NETWORK[3]:=NULL}" |
export ALX_DOMAIN="${DB_NETWORK[3]:=NULL}" |
36 |
export ALX_IP="${DB_NETWORK[4]:=NULL}" |
export ALX_NETWORKING="${DB_NETWORK[4]:=NULL}" |
37 |
export ALX_NETMASK="${DB_NETWORK[5]:=NULL}" |
export ALX_IP="${DB_NETWORK[5]:=NULL}" |
38 |
export ALX_DNS="${DB_NETWORK[6]:=NULL}" |
export ALX_NETMASK="${DB_NETWORK[6]:=NULL}" |
39 |
export ALX_GATEWAY="${DB_NETWORK[7]:=NULL}" |
export ALX_DNS="${DB_NETWORK[7]:=NULL}" |
40 |
export ALX_BROADCAST="${DB_NETWORK[8]:=NULL}" |
export ALX_GATEWAY="${DB_NETWORK[8]:=NULL}" |
41 |
|
export ALX_BROADCAST="${DB_NETWORK[9]:=NULL}" |
42 |
|
|
43 |
# the new mac address hack |
# the new mac address hack |
44 |
export ALX_FORCEMACTO=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
export ALX_FORCEMACTO=$(mysqldo "select forcemacto from cfg_network where serial='${ALX_SERIAL}'") |
45 |
"select forcemacto from cfg_network where serial='${ALX_SERIAL}'") |
|
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() |
config_networking() |
60 |
{ |
{ |
61 |
#first of all get the vars |
local iface |
62 |
|
|
63 |
|
# first of all get the vars |
64 |
get_network_settings |
get_network_settings |
65 |
|
|
66 |
# debug |
# get the right nic |
67 |
# echo "0: ${ALX_HOSTNAME}" |
if [[ -z ${ALX_IFACE} ]] || [[ ${ALX_IFACE} = NULL ]] |
68 |
# echo "1: ${ALX_MODULE}" |
then |
69 |
# echo "2: ${ALX_DOMAIN}" |
# default is 'eth0' |
70 |
# echo "3: ${ALX_NETWORKING}" |
iface="eth0" |
71 |
# echo "4: ${ALX_IP}" |
else |
72 |
# echo "5: ${ALX_NETMASK}" |
iface="${ALX_IFACE}" |
73 |
# echo "6: ${ALX_DNS}" |
fi |
74 |
# echo "7: ${ALX_GATEWAY}" |
|
75 |
# echo "8: ${ALX_BROADCAST}" |
# 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 |
# hostname && hosts |
94 |
echo "${ALX_HOSTNAME}" > /etc/hostname |
echo "${ALX_HOSTNAME}" > /etc/hostname |
97 |
# network devices |
# network devices |
98 |
|
|
99 |
# always on boot |
# always on boot |
100 |
echo 'ONBOOT="yes"' > /etc/conf.d/net.eth0 |
echo 'ONBOOT="yes"' > /etc/conf.d/net.${iface} |
101 |
echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.eth0 |
echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.${iface} |
102 |
|
|
103 |
case ${ALX_NETWORKING} in |
case ${ALX_NETWORKING} in |
104 |
dhcp|DHCP) |
dhcp|DHCP) |
105 |
echo 'DHCP_PROG="/sbin/dhcpcd"' >> /etc/conf.d/net.eth0 |
echo 'DHCP_PROG="/sbin/dhcpcd"' >> /etc/conf.d/net.${iface} |
106 |
# -k kills the dhcp-cache at system shutdown |
# -k kills the dhcp-cache at system shutdown |
107 |
# -z will not |
# -z will not |
108 |
echo 'DHCP_STOP="-z"' >> /etc/conf.d/net.eth0 |
echo 'DHCP_STOP="-z"' >> /etc/conf.d/net.${iface} |
109 |
#timeout after 10 seconds |
#timeout after 10 seconds |
110 |
echo 'DHCP_START="-t 10"' >> /etc/conf.d/net.eth0 |
echo 'DHCP_START="-t 10"' >> /etc/conf.d/net.${iface} |
111 |
;; |
;; |
112 |
|
|
113 |
static|STATIC) |
static|STATIC) |
114 |
# add hostname with valid ip to hosts |
# add hostname with valid ip to hosts |
115 |
echo -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" >> /etc/hosts |
echo -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" >> /etc/hosts |
116 |
echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.eth0 |
echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.${iface} |
117 |
echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.eth0 |
echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.${iface} |
118 |
echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.eth0 |
echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.${iface} |
119 |
;; |
;; |
120 |
esac |
esac |
121 |
|
|
122 |
# gateway or gateway overrides |
# gateway or gateway overrides |
123 |
if [[ ${ALX_GATEWAY} != NULL ]] |
if [[ ${ALX_GATEWAY} != NULL ]] |
124 |
then |
then |
125 |
echo "GATEWAY=\"${ALX_GATEWAY}\"" >> /etc/conf.d/net.eth0 |
echo "GATEWAY=\"${ALX_GATEWAY}\"" >> /etc/conf.d/net.${iface} |
126 |
echo 'GATEWAY_IF="eth0"' >> /etc/conf.d/net.eth0 |
echo "GATEWAY_IF=\"${iface}\"" >> /etc/conf.d/net.${iface} |
127 |
fi |
fi |
128 |
|
|
129 |
# force mac address override |
# force mac address override |
130 |
if [[ ${ALX_FORCEMACTO} != NULL ]] |
if [[ ${ALX_FORCEMACTO} != NULL ]] |
131 |
then |
then |
132 |
echo "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" >> /etc/conf.d/net.eth0 |
echo "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" >> /etc/conf.d/net.${iface} |
133 |
fi |
fi |
134 |
|
|
135 |
# nameserver or nameserver overrides |
# nameserver or nameserver overrides |
146 |
cat ${ALX_SKELETONS}/samba/${smbconf} > /etc/samba/smb.conf |
cat ${ALX_SKELETONS}/samba/${smbconf} > /etc/samba/smb.conf |
147 |
sed -i -e "s:\(workgroup = \).*:\1${ALX_DOMAIN}:" /etc/samba/smb.conf |
sed -i -e "s:\(workgroup = \).*:\1${ALX_DOMAIN}:" /etc/samba/smb.conf |
148 |
|
|
149 |
|
# wireless extensions |
150 |
|
local value |
151 |
|
local var |
152 |
|
for var in ALX_WIRELESS_BITRATE \ |
153 |
|
ALX_WIRELESS_CHANNEL \ |
154 |
|
ALX_WIRELESS_ESSID \ |
155 |
|
ALX_WIRELESS_FREQUENCY \ |
156 |
|
ALX_WIRELESS_MODE \ |
157 |
|
ALX_WIRELESS_NICK \ |
158 |
|
ALX_WIRELESS_AUTH_MODE \ |
159 |
|
ALX_WIRELESS_KEY_LENGTH \ |
160 |
|
ALX_WIRELESS_KEY \ |
161 |
|
ALX_WIRELESS_KEY_ASCII |
162 |
|
do |
163 |
|
# get the value of $var |
164 |
|
eval value=\$$(echo ${var}) |
165 |
|
|
166 |
|
# write it only if not empty |
167 |
|
if [[ -n ${value} ]] && [[ ${value} != NULL ]] |
168 |
|
then |
169 |
|
# remove ALX_ from var |
170 |
|
echo "${var/ALX_/}=\"${value}\"" >> /etc/conf.d/net.${iface} |
171 |
|
fi |
172 |
|
|
173 |
|
# clear value |
174 |
|
unset value |
175 |
|
done |
176 |
|
|
177 |
|
# setup wpa-driver (only zydas atm) |
178 |
|
[[ ${ALX_MODULE} = zd1211 ]] && \ |
179 |
|
echo "WIRELESS_WPA_DRIVER=zydas" >> /etc/conf.d/net.${iface} |
180 |
|
|
181 |
# unset all vars |
# unset all vars |
182 |
unset ALX_HOSTNAME |
unset ALX_HOSTNAME |
183 |
unset ALX_MODULE |
unset ALX_MODULE |
188 |
unset ALX_DNS |
unset ALX_DNS |
189 |
unset ALX_GATEWAY |
unset ALX_GATEWAY |
190 |
unset ALX_BROADCAST |
unset ALX_BROADCAST |
191 |
|
unset ALX_FORCEMACTO |
192 |
|
unset ALX_IFACE |
193 |
|
unset ALX_WIRELESS_BITRATE |
194 |
|
unset ALX_WIRELESS_CHANNEL |
195 |
|
unset ALX_WIRELESS_ESSID |
196 |
|
unset ALX_WIRELESS_FREQUENCY |
197 |
|
unset ALX_WIRELESS_MODE |
198 |
|
unset ALX_WIRELESS_NICK |
199 |
|
unset ALX_WIRELESS_AUTH_MODE |
200 |
|
unset ALX_WIRELESS_KEY_LENGTH |
201 |
|
unset ALX_WIRELESS_KEY |
202 |
|
unset ALX_WIRELESS_KEY_ASCII |
203 |
} |
} |
204 |
|
|