#!/bin/bash
#. /etc/profile
#. /etc/systemconfig
#BASE=/tmp
ETCNETDIR=$BASE/etc/net/ifaces



function kill_dhcp () 
{
for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid
do
    if [ -f ${i} ]
    then
        pid=`cat ${i}`
        kill -9 $pid
        rm -f ${i}
    fi
    if [ x$1 = xflush ]
    then
        for ifdev in eth0 wlan0 eth1 wlan1
        do 
           echo ${i} |grep $ifdev
           status=$?
           if [ $status = 1 ]
           then
             ip address flush $ifdev   
           fi
        done
    fi

done

}

function setup_nameserver(){
grep -q $1 ${BASE}/etc/resolv.conf
status=$?
if [ ! $status = 0 ]
then
    echo "nameserver $1" >> ${BASE}/etc/resolv.conf
fi

}

function setup_interfaces() {
  local IS_WIRELESS
  local ip
  local netmask
  local isactive
  local dns
  local UseDHCP
  local GW
  local ESSID
  local KEY
  local ENCRYPT
  local TEMPNET
  IS_WIRELESS=false

  #local ip
  TEMPNET="Hostip"$1
  echo $TEMPNET
  eval ip=\$${TEMPNET}

  TEMPNET=Hostnetmask$1
  eval netmask=\$${TEMPNET}
  netmask=`echo "$netmask" | cut -d " " -f1`
  
  TEMPNET=HostActive$1
  eval isactive=\$${TEMPNET}

  TEMPNET=HostDNS$1
  eval dns=\$${TEMPNET}

  TEMPNET="HostUSEDHCP"$1
  eval UseDHCP=\$${TEMPNET}

  TEMPNET=HostGW$1
  eval GW=\$${TEMPNET}



  if [ $1 = wlan0 -o  $1 = wlan1 ]
  then
    IS_WIRELESS=TRUE
    TEMPNET=HostESSID$1
    eval ESSID=\$${TEMPNET}
    
    TEMPNET="HostKey"$1
    eval KEY=\$${TEMPNET}
    
    TEMPNET=HostUseEncryption$1
    eval ENCRYPT=\$${TEMPNET}
  fi
  

  echo "Setup $1 in progress, wireless: $IS_WIRELESS"
    
    if [ ! -d $ETCNETDIR/$1 ]
    then
        mkdir -p $ETCNETDIR/$1
    fi

    if  [ ! -f  $ETCNETDIR/$1/options ]
    then
        cp -f  $TEMPLATES/etcnet/eth/options $ETCNETDIR/$1/options
    fi

    if [ x$isactive =  x0 ]
    then
            echo "setting $1 to inactive"
            sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
            
    else
            echo "setting $1 to active"
            sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
    fi

    if [ x$IS_WIRELESS =  xTRUE ]
    then
            echo "setting $1 wireless"
            sed -i -e 's/^CONFIG_WIRELESS=.*$/CONFIG_WIRLESS=yes/g' $ETCNETDIR/$1/options
            #set the key and essid
            echo "essid  $ESSID" > $ETCNETDIR/$1/iwconfig
            if  [ x$ENCRYPT = x1 ]
            then
                echo "key $KEY" >>  $ETCNETDIR/$1/iwconfig
            fi
            
    else
            echo "disabling wireless"
            sed -i -e 's/^CONFIG_WIRLESS=.*$/CONFIG_WIRLESS=no/g' $ETCNETDIR/$1/options
    fi




    if [ $UseDHCP = 0 ]
    then
            echo using dhcp
            sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' $ETCNETDIR/$1/options
            
    else
        echo "using static ip"
        sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=static/g' $ETCNETDIR/$1/options
        echo "default via $GW" > $ETCNETDIR/$1/ipv4route
        echo "$ip$netmask" > $ETCNETDIR/$1/ipv4address
        setup_nameserver $dns
    fi
}


function find_active () {
#HostActiveeth1="1"
rm -f ${BASE}/etc/resolv.conf
if [ x$MYTHDHCP =  x1 ]
           then
            #add 127.0.0.1 to /etc/resolv.conf
                 echo "search lan" > ${BASE}/etc/resolv.conf
                 echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf
 fi

for i in eth0 eth1 wlan0 wlan1 
do
    CURRENTIF="HostActive"$i
    eval IFSTATE=\$${CURRENTIF}
    if [ x$IFSTATE = x1 ]
    then
        setup_interfaces $i
    fi
done
}

function setup_hostname {
#set the hostname
if [ !  x$hostname = x ]
then
    echo $hostname > ${BASE}/etc/hostname
    cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname  > /tmp/hosts
    #cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname | grep -v $ip > /tmp/hosts

    if [ x$MYTHDHCP =  x1 ]
    then
        echo "127.0.0.1  localhost " >  ${BASE}/etc/hosts
        echo "$MYTHIP $hostname   " >>  ${BASE}/etc/hosts
    else
        echo "127.0.0.1 $hostname  localhost " >  ${BASE}/etc/hosts
    fi
    cat /tmp/hosts >> ${BASE}/etc/hosts
fi

kill_dhcp
}

function vnc_check() {
    CMDLINE=$(cat /proc/cmdline)
    echo $CMDLINE |grep -q vnc
    USEVNC=$?
    echo $CMDLINE |grep -q nfsroot
     NETBOOT=$?
    echo $USEVNC
    if [ !  x$USEVNC = x0  ]
    then
        echo "not using vnc"
        if [ !  x$NETBOOT = x0  ]
        then
            echo "not using netboot"
        else
            echo "using netboot"
            USEVNC=0
        fi

    else
        echo " using vnc"
    fi
}

function setup_MYTH_vars {
    TEMPMYTH="Hostip"$default_interface
    #echo $TEMPMYTH
    eval MYTHIP=\$${TEMPMYTH}
    
    TEMPMYTH="HostUSEDHCP"$default_interface
    eval MYTHDHCP=\$${TEMPMYTH}

    

}



function setup_network {
    setup_MYTH_vars
    setup_hostname
    find_active
}

function start_network {
if [ ! $USEVNC = 0 ]
then
    /etc/net/scripts/network.init restart

else
    echo "VNC/NETBOOT in use, will NOT restart network"
fi

}

function stop_network {
if [ ! $USEVNC = 0 ]
then
    echo "stopping the network"
    kill_dhcp flush
    ip address flush dev eth0 2>&1 >/dev/null
    ip address flush dev eth1 2>&1 >/dev/null
    ip address flush dev wlan0 2>&1 >/dev/null
    ip address flush dev wlan1 2>&1 >/dev/null
else
    echo "VNC/NETBOOT in use, will NOT restart network"
fi

}


#this is used by the install process to start the network
function install_network_setup {
    setup_MYTH_vars
    setup_hostname
    stop_network
    find_active
    start_network

}