Magellan Linux

Diff of /alx-src/branches/alxconf-060/functions/config_network.sh

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

alx-src/trunk/alxconfig-ng/functions/config_network.sh revision 353 by niro, Mon Oct 10 18:43:58 2005 UTC alx-src/branches/alxconf-060/functions/config_network.sh revision 4835 by niro, Mon May 13 11:13:20 2013 UTC
# Line 1  Line 1 
1  # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_network.sh,v 1.12 2005-10-10 18:43:58 niro Exp $  # $Id$
2  # configures networkin on the host via mysql db settings  # 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 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  
  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_HOSTNAME="${DB_NETWORK[0]:=NULL}"  
  export ALX_MODULE="${DB_NETWORK[1]:=NULL}"  
  export ALX_DOMAIN="${DB_NETWORK[2]:=NULL}"  
  export ALX_NETWORKING="${DB_NETWORK[3]:=NULL}"  
  export ALX_IP="${DB_NETWORK[4]:=NULL}"  
  export ALX_NETMASK="${DB_NETWORK[5]:=NULL}"  
  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=$(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}'")  
 }  
3    
4  config_networking()  config_networking()
5  {  {
6   local iface   local iface
7     local CONFIG
8    
9   # first of all get the vars   # first of all get the vars
10   get_network_settings   evaluate_table cfg_network
11    
12   # get the right nic   # get the right nic
13   if [[ -z ${ALX_IFACE} ]] || [[ ${ALX_IFACE} = NULL ]]   if [[ -z ${cfg_network_iface} ]] || [[ ${cfg_network_iface} = NULL ]]
14   then   then
15   # default is 'eth0'   # default is 'eth0'
16   iface="eth0"   iface="eth0"
17   else   else
18   iface="${ALX_IFACE}"   iface="${cfg_network_iface}"
19   fi   fi
20    
21     # never ever overwrite network settings, if NETWORKING is unknown
22     case ${cfg_network_networking} in
23     static|STATIC|dhcp|DHCP) ;;
24     *)
25     echo -e "${COLRED}Received network-settings are not complete, aborting ...${COLDEFAULT}"
26     return 1
27     ;;
28     esac
29    
30   # remove all old nics and modules configs   # remove all old nics and modules configs
31   find /etc/conf.d -type f -name 'net.*' | xargs rm   find /etc/conf.d -type f -name 'net.*' | xargs rm
32   find /etc/modules.d -type f -name 'net.*' | xargs rm   find /etc/modprobe.d -type f -name 'net.*' | xargs rm
33    
34   # update the preliminary network   # update the preliminary network
35   # set an device alias for modprobe.conf   # set an device alias for modprobe.conf
36   [ ! -d /etc/modules.d ] && install -d /etc/modules.d   [ ! -d /etc/modprobe.d ] && install -d /etc/modprobe.d
37   # update only if not the same (to speed up bootprocess - no depmod)   # update only if not the same (to speed up bootprocess - no depmod)
38   if [ ! -f /etc/modules.d/net.${iface} ] ||   if [ ! -f /etc/modprobe.d/net.${iface}.conf ] ||
39   [[ ${iface} != $(cat /etc/modules.d/net.${iface} | cut -d' ' -f2) ]]   [[ ${iface} != $(cat /etc/modprobe.d/net.${iface}.conf | cut -d' ' -f2) ]]
40   then   then
41   echo "alias ${iface} ${ALX_MODULE}" > /etc/modules.d/net.${iface}   CONFIG="/etc/modprobe.d/net.${iface}.conf"
42     clearconfig
43     addconfig "alias ${iface} ${cfg_network_module}"
44   fi   fi
45    
46   # update confd-networking default iface   # update confd-networking default iface
47   echo "${iface}" > ${SETTINGSPATH}/confd-networking   [ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH}
48     CONFIG="${SETTINGSPATH}/confd-networking"
49     clearconfig
50     addconfig "${iface}"
51    
52   # hostname && hosts   # hostname && hosts
53   echo "${ALX_HOSTNAME}" > /etc/hostname   CONFIG="/etc/hostname"
54   echo -e "127.0.0.1\tlocalhost.${ALX_DOMAIN}\tlocalhost\t${ALX_HOSTNAME}" > /etc/hosts   clearconfig
55     addconfig "${cfg_network_hostname}"
56     CONFIG="/etc/hosts"
57     clearconfig
58     addconfig -e "127.0.0.1\tlocalhost.${cfg_network_domain}\tlocalhost\t${cfg_network_hostname}"
59     case ${cfg_network_networking} in
60     static|STATIC)
61     # add hostname with valid ip to hosts
62     addconfig -e "${ALX_IP}\t${cfg_network_hostname}.${cfg_network_domain}\t${cfg_network_hostname}"
63     ;;
64     esac
65    
66   # network devices   # network devices
67    
68   # always on boot   # always on boot
69   echo 'ONBOOT="yes"' > /etc/conf.d/net.${iface}   CONFIG="/etc/conf.d/net.${iface}"
70   echo "NETWORKING=\"${ALX_NETWORKING}\"" >> /etc/conf.d/net.${iface}   clearconfig
71    
72   case ${ALX_NETWORKING} in   addconfig 'ONBOOT="yes"'
73     addconfig "NETWORKING=\"${cfg_network_networking}\""
74     case ${cfg_network_networking} in
75   dhcp|DHCP)   dhcp|DHCP)
76   echo 'DHCP_PROG="/sbin/dhcpcd"' >> /etc/conf.d/net.${iface}   addconfig "DHCP_PROG=\"${ALX_DHCP_PROG}\""
77   # -k kills the dhcp-cache at system shutdown   addconfig "DHCP_STOP=\"${ALX_DHCP_STOP}\""
78   # -z will not   addconfig "DHCP_START=\"${ALX_DHCP_START}\""
  echo 'DHCP_STOP="-z"' >> /etc/conf.d/net.${iface}  
  #timeout after 10 seconds  
  echo 'DHCP_START="-t 10"' >> /etc/conf.d/net.${iface}  
79   ;;   ;;
80    
81   static|STATIC)   static|STATIC)
82   # add hostname with valid ip to hosts   addconfig "IP=\"${cfg_network_ip}\""
83   echo -e "${ALX_IP}\t${ALX_HOSTNAME}.${ALX_DOMAIN}\t${ALX_HOSTNAME}" >> /etc/hosts   addconfig "NETMASK=\"${cfg_network_netmask}\""
84   echo "IP=\"${ALX_IP}\"" >> /etc/conf.d/net.${iface}   addconfig "BROADCAST=\"${cfg_network_broadcast}\""
  echo "NETMASK=\"${ALX_NETMASK}\"" >> /etc/conf.d/net.${iface}  
  echo "BROADCAST=\"${ALX_BROADCAST}\"" >> /etc/conf.d/net.${iface}  
85   ;;   ;;
86   esac   esac
87    
  # 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  
   
88   # force mac address override   # force mac address override
89   if [[ ${ALX_FORCEMACTO} != NULL ]]   if [[ ${cfg_network_forcemacto} != NULL ]] && [[ ! -z ${cfg_network_forcemacto} ]]
  then  
  echo "FORCE_MAC_TO=\"${ALX_FORCEMACTO}\"" >> /etc/conf.d/net.${iface}  
  fi  
   
  # nameserver or nameserver overrides  
  if [[ ${ALX_DNS} != NULL ]]  
90   then   then
91   echo "nameserver ${ALX_DNS}" > /etc/resolv.conf   addconfig "FORCE_MAC_TO=\"${cfg_network_forcemacto}\""
92   fi   fi
93    
  # 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  
   
94   # wireless extensions   # wireless extensions
95   local value   local value
96   local var   local var
97   for var in ALX_WIRELESS_BITRATE \   for var in bitrate \
98   ALX_WIRELESS_CHANNEL \   channel \
99   ALX_WIRELESS_ESSID \   essid \
100   ALX_WIRELESS_FREQUENCY \   frequency \
101   ALX_WIRELESS_MODE \   mode \
102   ALX_WIRELESS_NICK \   nick \
103   ALX_WIRELESS_AUTH_MODE \   auth_mode \
104   ALX_WIRELESS_KEY_LENGTH \   key_length \
105   ALX_WIRELESS_KEY \   key \
106   ALX_WIRELESS_KEY_ASCII   key_ascii
107   do   do
108   # get the value of $var   # get the value of $var
109   eval value=\$$(echo ${var})   eval value="\${cfg_network_wireless_$(echo ${var})}"
110    
111   # write it only if not empty   # write it only if not empty
112   if [[ -n ${value} ]] && [[ ${value} != NULL ]]   if [[ ! -z ${value} ]] && [[ ${value} != NULL ]]
113   then   then
114   # remove ALX_ from var   # add WIRELESS and use uppercases
115   echo "${var/ALX_/}=\"${value}\"" >> /etc/conf.d/net.${iface}   addconfig "WIRELESS_$(echo ${var} | tr [[:lower:] [[:upper:]])=\"${value}\""
116   fi   fi
117    
118   # clear value   # clear value
119   unset value   unset value
120   done   done
121    
122     # FIXME !!!
123   # setup wpa-driver (only zydas atm)   # setup wpa-driver (only zydas atm)
124   [[ ${ALX_MODULE} = zd1211 ]] && \   if [[ ${cfg_network_module} = zd1211 ]]
125   echo "WIRELESS_WPA_DRIVER=zydas" >> /etc/conf.d/net.${iface}   then
126     addconfig "WIRELESS_WPA_DRIVER=zydas"
127     fi
128    
129   # unset all vars   CONFIG="/etc/conf.d/net.routes"
130   unset ALX_HOSTNAME   clearconfig
131   unset ALX_MODULE   # gateway or gateway overrides
132   unset ALX_DOMAIN   if [[ ${cfg_network_gateway} != NULL ]] && [[ ! -z ${cfg_network_gateway} ]]
133   unset ALX_NETWORKING   then
134   unset ALX_IP   addconfig "default gw ${cfg_network_gateway}"
135   unset ALX_NETMASK   fi
136   unset ALX_DNS  
137   unset ALX_GATEWAY   CONFIG="/etc/resolv.conf"
138   unset ALX_BROADCAST   clearconfig
139   unset ALX_FORCEMACTO   # nameserver or nameserver overrides
140   unset ALX_IFACE   if [[ ${cfg_network_dns} != NULL ]] && [[ ! -z ${cfg_network_dns} ]]
141   unset ALX_WIRELESS_BITRATE   then
142   unset ALX_WIRELESS_CHANNEL   addconfig "nameserver ${cfg_network_dns}"
143   unset ALX_WIRELESS_ESSID   fi
  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  
 }  
144    
145     # netbios daemon
146     if [[ -x /usr/sbin/nmbd ]]
147     then
148     CONFIG="/etc/samba/smb.conf"
149     clearconfig
150     addconfig "[global]"
151     addconfig "workgroup = ${cfg_network_domain}"
152     addconfig "netbios name = ${cfg_network_hostname}"
153     addconfig "dns proxy = no"
154    
155     rc-config add nmbd  &> /dev/null
156     else
157     rc-config del nmbd  &> /dev/null
158     fi
159    }

Legend:
Removed from v.353  
changed lines
  Added in v.4835