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



function kill_dhcp ()
{
#for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid
for i in ${BASE}/var/run/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 kill_dhcp_chroot ()
{
#for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid
for i in ${mountpoint}/var/run/dhcpcd-*.pid
do
    if [ -f ${i} ]
    then
        pid=`cat ${i}`
        kill -9 $pid
        rm -f ${i}
    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 change_iface_state () {
    if [  x$2 =  xenabled ]
    then
            echo "setting $1 to active"
            sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
            sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options
    else
            echo "setting $1 to inactive"
            if [ -e $ETCNETDIR/$1/options ]
            then
                sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
                sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options
            fi
            /sbin/ifconfig $1 down
            ip address flush $1
    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
  local MTU
  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}

  TEMPNET=HOST_iswireless$1
  eval wireless=\$${TEMPNET}

  TEMPNET=HostMTU$1
  eval MTU=\$${TEMPNET}



  if [ x$wireless = x1  ]
  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 =  x1 ]
    then
            change_iface_state $1 enabled
            #echo "setting $1 to active"
            #sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
            #sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options
    else
            change_iface_state $1 disabled
            #echo "setting $1 to inactive"
            #sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
            #sed -i -e 's/^DISABLED=.*$/DISABLED=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 [ x$UseDHCP = x0 ]
    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

    if [  x$MTU = x ]
    then
        echo "MTU is blank, card will use default values"
        sed -i '/^mtu.*$/d' /etc/net/ifaces/$1/iplink
    else
        echo "setting mtu for $1 to $MTU"
        sed -i '/^mtu.*$/d' /etc/net/ifaces/$1/iplink
        echo "mtu $MTU  " >> /etc/net/ifaces/$1/iplink
    fi
}


function find_active () {
#HostActiveeth1="1"
if [ !  x$USEVNC = x0  ]
then
    rm -f ${BASE}/etc/resolv.conf
fi

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}
    echo $IFSTATE "---"
        echo $i
    if [ x$IFSTATE = x1 ]
    then
        setup_interfaces $i
    else
        change_iface_state $i disabled
    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 start_network {
if [ ! $USEVNC = 0 ]
then
    /etc/net/scripts/network.init reload
    /etc/net/scripts/network.init restart
else
    echo "VNC/NETBOOT in use, will NOT restart network"
fi

}

function setup_network {
    setup_MYTH_vars
    setup_hostname
    find_active
}


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

}







