# $Id$ # configures networking on the host via mysql db settings get_network_settings() { local x i all DB_NETWORK # all arrays: # -> hostname modules domain networking ip netmask dns gateway broadcast all=$(mysqldo "select iface, hostname, module, domain, networking, ip, netmask, dns, gateway, broadcast from cfg_network where serial='${ALX_SERIAL}'") # split'em up and put 'em in an array declare -i i=0 for x in ${all} do DB_NETWORK[${i}]="${x}" ((i++)) done # and now put in usable var names and export them systemwide export ALX_IFACE="${DB_NETWORK[0]:=NULL}" export ALX_HOSTNAME="${DB_NETWORK[1]:=NULL}" export ALX_MODULE="${DB_NETWORK[2]:=NULL}" export ALX_DOMAIN="${DB_NETWORK[3]:=NULL}" export ALX_NETWORKING="${DB_NETWORK[4]:=NULL}" export ALX_IP="${DB_NETWORK[5]:=NULL}" export ALX_NETMASK="${DB_NETWORK[6]:=NULL}" export ALX_DNS="${DB_NETWORK[7]:=NULL}" export ALX_GATEWAY="${DB_NETWORK[8]:=NULL}" export ALX_BROADCAST="${DB_NETWORK[9]:=NULL}" # the new mac address hack 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() { local iface local CONFIG # first of all get the vars get_network_settings # 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/modprobe.d -type f -name 'net.*' | xargs rm # update the preliminary network # set an device alias for modprobe.conf [ ! -d /etc/modprobe.d ] && install -d /etc/modprobe.d # update only if not the same (to speed up bootprocess - no depmod) if [ ! -f /etc/modprobe.d/net.${iface}.conf ] || [[ ${iface} != $(cat /etc/modprobe.d/net.${iface}.conf | cut -d' ' -f2) ]] then CONFIG=/etc/modprobe.d/net.${iface}.conf clearconfig addconfig "alias ${iface} ${ALX_MODULE}" fi # update confd-networking default iface [ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH} CONFIG=${SETTINGSPATH}/confd-networking clearconfig addconfig "${iface}" # hostname && hosts CONFIG=/etc/hostname clearconfig addconfig "${ALX_HOSTNAME}" CONFIG=/etc/hosts clearconfig addconfig -e "127.0.0.1\tlocalhost.${ALX_DOMAIN}\tlocalhost\t${ALX_HOSTNAME}" case ${ALX_NETWORKING} in static|STATIC) # add hostname with valid ip to hosts addconfig -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" ;; esac # network devices # always on boot CONFIG=/etc/conf.d/net.${iface} clearconfig addconfig 'ONBOOT="yes"' addconfig "NETWORKING=\"${ALX_NETWORKING}\"" case ${ALX_NETWORKING} in dhcp|DHCP) addconfig 'DHCP_PROG="/sbin/udhcpc"' addconfig 'DHCP_STOP=""' #timeout after 10 seconds addconfig 'DHCP_START="-t 10"' ;; static|STATIC) addconfig "IP=\"${ALX_IP}\"" addconfig "NETMASK=\"${ALX_NETMASK}\"" addconfig "BROADCAST=\"${ALX_BROADCAST}\"" ;; esac # force mac address override if [[ ${ALX_FORCEMACTO} != NULL ]] then addconfig "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" fi # 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 addconfig "${var/ALX_/}=\"${value}\"" fi # clear value unset value done # FIXME !!! # setup wpa-driver (only zydas atm) if [[ ${ALX_MODULE} = zd1211 ]] then addconfig "WIRELESS_WPA_DRIVER=zydas" fi CONFIG=/etc/conf.d/net.routes clearconfig # gateway or gateway overrides if [[ ${ALX_GATEWAY} != NULL ]] then addconfig "default gw ${ALX_GATEWAY}" fi CONFIG=/etc/resolv.conf clearconfig # nameserver or nameserver overrides if [[ ${ALX_DNS} != NULL ]] then addconfig "nameserver ${ALX_DNS}" fi # unset all vars unset ALX_HOSTNAME unset ALX_MODULE unset ALX_DOMAIN unset ALX_NETWORKING unset ALX_IP unset ALX_NETMASK 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 }