--- alx-src/trunk/alxconfig-ng/functions/config_network.sh 2005/10/09 21:32:55 345 +++ alx-src/trunk/alxconfig-ng/functions/config_network.sh 2005/10/09 21:34:47 346 @@ -1,26 +1,26 @@ -# $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_network.sh,v 1.10 2005-08-28 19:28:58 niro Exp $ +# $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_network.sh,v 1.11 2005-10-09 21:34:47 niro Exp $ # configures networkin on the host via mysql db settings get_network_settings() { local x i all DB_NETWORK - #all arrays: + # all arrays: # -> hostname modules domain networking ip netmask dns gateway broadcast - all=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select hostname, - module, - domain, - networking, - ip, - netmask, - dns, - gateway, - broadcast + all=$(mysqldo "select hostname, + module, + domain, + networking, + ip, + netmask, + dns, + gateway, + broadcast, + iface from cfg_network where serial='${ALX_SERIAL}'") - #split'em up and put 'em in an array + # split'em up and put 'em in an array declare -i i=0 for x in ${all} do @@ -38,27 +38,56 @@ export ALX_DNS="${DB_NETWORK[6]:=NULL}" export ALX_GATEWAY="${DB_NETWORK[7]:=NULL}" export ALX_BROADCAST="${DB_NETWORK[8]:=NULL}" + export ALX_IFACE="${DB_NETWORK[9]:=NULL}" # the new mac address hack - export ALX_FORCEMACTO=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select forcemacto from cfg_network where serial='${ALX_SERIAL}'") + export ALX_FORCEMACTO=$(mysqldo "select forcemacto from cfg_network where serial='${ALX_SERIAL}'") + + # wireless extensions + export ALX_WIRELESS_BITRATE=$(mysqldo "select wireless_bitrate from cfg_network where serial='${ALX_SERIAL}'") + export ALX_WIRELESS_CHANNEL=$(mysqldo "select wireless_channel from cfg_network where serial='${ALX_SERIAL}'") + export ALX_WIRELESS_ESSID=$(mysqldo "select wireless_essid from cfg_network where serial='${ALX_SERIAL}'") + export ALX_WIRELESS_FREQUENCY=$(mysqldo "select wireless_frequency from cfg_network where serial='${ALX_SERIAL}'") + export ALX_WIRELESS_MODE=$(mysqldo "select wireless_mode from cfg_network where serial='${ALX_SERIAL}'") + export ALX_WIRELESS_NICK=$(mysqldo "select wireless_nick from cfg_network where serial='${ALX_SERIAL}'") + export ALX_WIRELESS_AUTH_MODE=$(mysqldo "select wireless_auth_mode from cfg_network where serial='${ALX_SERIAL}'") + export ALX_WIRELESS_KEY_LENGTH=$(mysqldo "select wireless_key_length from cfg_network where serial='${ALX_SERIAL}'") + export ALX_WIRELESS_KEY=$(mysqldo "select wireless_key from cfg_network where serial='${ALX_SERIAL}'") + export ALX_WIRELESS_KEY_ASCII=$(mysqldo "select wireless_key_ascii from cfg_network where serial='${ALX_SERIAL}'") } config_networking() { - #first of all get the vars + local iface + + # first of all get the vars get_network_settings - # debug -# echo "0: ${ALX_HOSTNAME}" -# echo "1: ${ALX_MODULE}" -# echo "2: ${ALX_DOMAIN}" -# echo "3: ${ALX_NETWORKING}" -# echo "4: ${ALX_IP}" -# echo "5: ${ALX_NETMASK}" -# echo "6: ${ALX_DNS}" -# echo "7: ${ALX_GATEWAY}" -# echo "8: ${ALX_BROADCAST}" + # get the right nic + if [[ -z ${ALX_IFACE} ]] || [[ ${ALX_IFACE} = NULL ]] + then + # default is 'eth0' + iface="eth0" + else + iface="${ALX_IFACE}" + fi + + # remove all old nics and modules configs + find /etc/conf.d -type f -name 'net.*' | xargs rm + find /etc/modules.d -type f -name 'net.*' | xargs rm + + # update the preliminary network + # set an device alias for modprobe.conf + [ ! -d /etc/modules.d ] && install -d /etc/modules.d + # update only if not the same (to speed up bootprocess - no depmod) + if [ ! -f /etc/modules.d/net.${iface} ] || + [[ ${iface} != $(cat /etc/modules.d/net.${iface} | cut -d' ' -f2) ]] + then + echo "alias ${iface} ${ALX_MODULE}" > /etc/modules.d/net.${iface} + fi + + # update confd-networking default iface + echo "${iface}" > ${SETTINGSPATH}/confd-networking # hostname && hosts echo "${ALX_HOSTNAME}" > /etc/hostname @@ -67,39 +96,39 @@ # network devices # always on boot - echo 'ONBOOT="yes"' > /etc/conf.d/net.eth0 - echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.eth0 + echo 'ONBOOT="yes"' > /etc/conf.d/net.${iface} + echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.${iface} case ${ALX_NETWORKING} in dhcp|DHCP) - echo 'DHCP_PROG="/sbin/dhcpcd"' >> /etc/conf.d/net.eth0 + echo 'DHCP_PROG="/sbin/dhcpcd"' >> /etc/conf.d/net.${iface} # -k kills the dhcp-cache at system shutdown # -z will not - echo 'DHCP_STOP="-z"' >> /etc/conf.d/net.eth0 + echo 'DHCP_STOP="-z"' >> /etc/conf.d/net.${iface} #timeout after 10 seconds - echo 'DHCP_START="-t 10"' >> /etc/conf.d/net.eth0 + echo 'DHCP_START="-t 10"' >> /etc/conf.d/net.${iface} ;; static|STATIC) # add hostname with valid ip to hosts echo -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" >> /etc/hosts - echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.eth0 - echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.eth0 - echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.eth0 + echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.${iface} + echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.${iface} + echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.${iface} ;; esac # gateway or gateway overrides if [[ ${ALX_GATEWAY} != NULL ]] then - echo "GATEWAY=\"${ALX_GATEWAY}\"" >> /etc/conf.d/net.eth0 - echo 'GATEWAY_IF="eth0"' >> /etc/conf.d/net.eth0 + echo "GATEWAY=\"${ALX_GATEWAY}\"" >> /etc/conf.d/net.${iface} + echo "GATEWAY_IF=\"${iface}\"" >> /etc/conf.d/net.${iface} fi # force mac address override if [[ ${ALX_FORCEMACTO} != NULL ]] then - echo "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" >> /etc/conf.d/net.eth0 + echo "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" >> /etc/conf.d/net.${iface} fi # nameserver or nameserver overrides @@ -116,6 +145,34 @@ cat ${ALX_SKELETONS}/samba/${smbconf} > /etc/samba/smb.conf sed -i -e "s:\(workgroup = \).*:\1${ALX_DOMAIN}:" /etc/samba/smb.conf + # wireless extensions + local value + local var + for var in ALX_WIRELESS_BITRATE \ + ALX_WIRELESS_CHANNEL \ + ALX_WIRELESS_ESSID \ + ALX_WIRELESS_FREQUENCY \ + ALX_WIRELESS_MODE \ + ALX_WIRELESS_NICK \ + ALX_WIRELESS_AUTH_MODE \ + ALX_WIRELESS_KEY_LENGTH \ + ALX_WIRELESS_KEY \ + ALX_WIRELESS_KEY_ASCII + do + # get the value of $var + eval value=\$$(echo ${var}) + + # write it only if not empty + if [[ -n ${value} ]] && [[ ${value} != NULL ]] + then + # remove ALX_ from var + echo "${var/ALX_/}=\"${value}\"" >> /etc/conf.d/net.${iface} + fi + + # clear value + unset value + done + # unset all vars unset ALX_HOSTNAME unset ALX_MODULE @@ -126,5 +183,17 @@ unset ALX_DNS unset ALX_GATEWAY unset ALX_BROADCAST + unset ALX_FORCEMACTO + unset ALX_IFACE + unset ALX_WIRELESS_BITRATE + unset ALX_WIRELESS_CHANNEL + unset ALX_WIRELESS_ESSID + unset ALX_WIRELESS_FREQUENCY + unset ALX_WIRELESS_MODE + unset ALX_WIRELESS_NICK + unset ALX_WIRELESS_AUTH_MODE + unset ALX_WIRELESS_KEY_LENGTH + unset ALX_WIRELESS_KEY + unset ALX_WIRELESS_KEY_ASCII }