Magellan Linux

Diff of /alx-src/trunk/tinyalxconfig-ng/functions/config_network.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 417 by niro, Wed Jun 4 20:37:50 2008 UTC revision 456 by niro, Thu Jun 5 19:10:14 2008 UTC
# Line 1  Line 1 
1  # $Header: /home/cvsd/alx-cvs/alx-src/tinyalxconfig-ng/functions/config_network.sh,v 1.6 2008-06-04 20:37:50 niro Exp $  # $Header: /home/cvsd/alx-cvs/alx-src/tinyalxconfig-ng/functions/config_network.sh,v 1.10 2008-06-05 19:10:14 niro Exp $
2  # configures networkin on the host via mysql db settings  # configures networkin on the host via mysql db settings
3    
4  get_network_settings()  # needs exported iface variable!
5    add_iface_cfg()
6  {  {
7   local x i all DB_NETWORK   echo "$@" >> /etc/conf.d/net.${iface}
   
  # 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}'")  
 }  
   
 check_network_settings()  
 {  
  # sanity checks  
  [[ ${ALX_IFACE} = NULL ]] && return 1  
  [[ ${ALX_HOSTNAME} = NULL ]] && return 1  
  [[ ${ALX_NETWORKING} = NULL ]] && return 1  
   
  # if we get here, everything is ok  
  return 0  
8  }  }
9    
10  config_networking()  config_networking()
11  {  {
12   local iface   local iface
13    
14   # first of all get the vars   # retrieve informations about hostname and co
15   get_network_settings   evaluate_table cfg_network
16   if ! check_network_settings  
17   then   # configure hostname and domain settings:
18   echo -e "${COLYELLOW}Could not retrieve network settings, doing nothing ...${COLDEFAULT}"   echo "${cfg_network_hostname}" > /etc/hostname
19   return 1   echo -e "127.0.0.1\tlocalhost.${cfg_network_domain}\tlocalhost\t${cfg_network_hostname}" > /etc/hosts
20   fi  
21    # if ! check_network_settings
22   # get the right nic  # then
23   if [[ -z ${ALX_IFACE} ]] || [[ ${ALX_IFACE} = NULL ]]  # echo -e "${COLYELLOW}Could not retrieve network settings, doing nothing ...${COLDEFAULT}"
24   then  # return 1
25   # default is 'eth0'  # fi
  iface="eth0"  
  else  
  iface="${ALX_IFACE}"  
  fi  
26    
27   # remove all old nics and modules configs   # remove all old nics and modules configs
28   find /etc/conf.d -type f -name 'net.*' | xargs rm   find /etc/conf.d -type f -name 'net.*' | xargs rm
29    
30   # update confd-networking default iface  # # update confd-networking default iface
31   [ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH}  # [ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH}
32   echo "${iface}" > ${SETTINGSPATH}/confd-networking  # echo "${iface}" > ${SETTINGSPATH}/confd-networking
33    
34   # hostname && hosts   # configure all available interfaces but activate only the default_iface!
35   echo "${ALX_HOSTNAME}" > /etc/hostname   iface_list=$(mysqldo "select iface from cfg_interfaces where serial='${ALX_SERIAL}'")
36   echo -e "127.0.0.1\tlocalhost.${ALX_DOMAIN}\tlocalhost\t${ALX_HOSTNAME}" > /etc/hosts  
37     for iface in ${iface_list}
  # network devices  
   
  # always on boot  
  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/udhcpc"' >> /etc/conf.d/net.${iface}  
  # timeout after 10 seconds and quit after retrieving a lease  
  echo 'DHCP_START="-t 10 -q"' >> /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.${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.${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.${iface}  
  fi  
   
  # nameserver or nameserver overrides  
  if [[ ${ALX_DNS} != NULL ]]  
  then  
  echo "nameserver ${ALX_DNS}" > /etc/resolv.conf  
  fi  
   
 # have no samba anymore  
 # # setup smb.conf (little sed magic:)  
 # # first get smb version !  
 # local smbconf  
 # [[ $(smbd --version | cut -d' ' -f2) > 2.999 ]] && smbconf=smb3.conf || smbconf=smb.conf  
 #  
 # 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  
38   do   do
39   # get the value of $var   # initialize the config
40   eval value=\$$(echo ${var})   :> /etc/conf.d/net.${iface}
41    
42     # retrieve information from mysql
43     evaluate_table cfg_interfaces "where serial='${ALX_SERIAL}' and iface='${iface}'"
44    
45   # write it only if not empty   if [[ ${iface} = ${cfg_network_default_iface} ]]
  if [[ -n ${value} ]] && [[ ${value} != NULL ]]  
46   then   then
47   # remove ALX_ from var   add_iface_cfg "ONBOOT=yes"
48   echo "${var/ALX_/}=\"${value}\"" >> /etc/conf.d/net.${iface}   else
49     add_iface_cfg "ONBOOT=no"
50   fi   fi
51    
52   # clear value   add_iface_cfg NETWORKING=${cfg_interfaces_networking}
  unset value  
  done  
53    
54   # setup wpa-driver (only zydas atm)   case ${cfg_interfaces_networking} in
55   [[ ${ALX_MODULE} = zd1211 ]] && \   dhcp|DHCP)
56   echo "WIRELESS_WPA_DRIVER=zydas" >> /etc/conf.d/net.${iface}   add_iface_cfg "DHCP_PROG=/sbin/udhcpc"
57     # timeout after 10 seconds and quit after retrieving a lease
58   # unset all vars   add_iface_cfg 'DHCP_START="-t 10 -q"'
59   unset ALX_HOSTNAME   ;;
60   unset ALX_MODULE  
61   unset ALX_DOMAIN   static|STATIC)
62   unset ALX_NETWORKING   # add hostname with valid ip to hosts
63   unset ALX_IP   echo -e "${cfg_interfaces_ip}\t${cfg_interfaces_hostname}.${cfg_interfaces_domain}\t${cfg_interfaces_hostname}" >> /etc/hosts
64   unset ALX_NETMASK   add_iface_cfg "IP=${cfg_interfaces_ip}"
65   unset ALX_DNS   add_iface_cfg "NETMASK=${cfg_interfaces_netmask}"
66   unset ALX_GATEWAY   add_iface_cfg "BROADCAST=${cfg_interfaces_broadcast}"
67   unset ALX_BROADCAST   ;;
68   unset ALX_FORCEMACTO   esac
  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  
 }  
69    
70     # gateway or gateway overrides
71     if [[ ${cfg_interfaces_gateway} != NULL ]]
72     then
73     add_iface_cfg "GATEWAY=${cfg_interfaces_gateway}"
74     fi
75    
76     # nameserver or nameserver overrides
77     if [[ ${cfg_interfaces_dns} != NULL ]]
78     then
79     add_iface_cfg "NAMESERVER="${cfg_interfaces_dns}""
80     fi
81    
82     # force mac address override
83     if [[ ${cfg_interfaces_forcemacto} != NULL ]]
84     then
85     add_iface_cfg FORCE_MAC_TO=${cfg_interfaces_forcemacto}
86     fi
87    
88     # wireless extensions
89     local value
90     local var
91     for var in cfg_interfaces_wireless_bitrate \
92     cfg_interfaces_wireless_channel \
93     cfg_interfaces_wireless_essid \
94     cfg_interfaces_wireless_frequency \
95     cfg_interfaces_wireless_mode \
96     cfg_interfaces_wireless_nick \
97     cfg_interfaces_wireless_auth_mode \
98     cfg_interfaces_wireless_key_length \
99     cfg_interfaces_wireless_key \
100     cfg_interfaces_wireless_key_ascii
101     do
102     # get the value of $var
103     eval value=\$$(echo ${var})
104    
105     # write it only if not empty
106     if [[ -n ${value} ]] && [[ ${value} != NULL ]]
107     then
108     # remove cfg_interfaces_from var and convert to upcase
109     add_iface_cfg "$(echo ${var/cfg_network_/} | tr '[:lower:]' '[:upper:]')=${value}"
110     fi
111    
112     # clear value
113     unset value
114     done
115    
116     # setup wpa-driver (only zydas atm)
117     case ${cfg_interfaces_module} in
118     zd1211) add_iface_cfg "WIRELESS_WPA_DRIVER=zydas" ;;
119     esac
120     done
121    }

Legend:
Removed from v.417  
changed lines
  Added in v.456