#!/bin/bash
. /etc/profile

disk=$2
mountpoint=new_boot

#-------------------------------------------
MYTHDBUSER=mythtv
MYTHTVPASSWD=mythtv
CMDLINE=$(cat /proc/cmdline)
hostname=`hostname`
MYSQLCMD_C="mysql -u$MYTHDBUSER  -p$MYTHTVPASSWD mythconverg -B --exec"
BASE=""
found_remote=1

function update_db_settings () {

 printhl "  setting database value $1 to $2 for $hostname"
 $MYSQLCMD_C "delete from settings where value='${1}' and hostname=\"$hostname\";"  2>/dev/null
 $MYSQLCMD_C "REPLACE INTO  settings set value='${1}', data='${2}' , hostname=\"$hostname\";" 2>/dev/null
}

function random_theme () {
THEMES="basic-blue
basic-green
basic-red
basic-purple
basic-amber"

theme=($THEMES)                # Read into array variable.

num_themes=${#theme[*]}        # Count how many elements.

pick=${theme[$((RANDOM%num_themes))]}
printhl "   Selected $pick as the theme"
update_db_settings Theme "$pick"
}

function parse_cmdline_2_db(){
    echo $CMDLINE | grep -q displayres
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*displayres=}
        update_db_settings HostXres $TEMPVAR
    fi

}


function bootsplash_setup (){
    echo $CMDLINE | grep -q splash=silent
    if [ $? -eq 0 ]
    then
        update_db_settings Hostbootsplash 1
    else
        update_db_settings Hostbootsplash 0
    fi
}


function setupremote {
    [ -e $BASE/etc/lircd.conf ] && mv -f $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M`
    if [ -d $TEMPLATES/remotes/$Remotetype ]
    then
            cd $TEMPLATES/remotes/$Remotetype
            for i in lircd*
            do
                    cat $i >> $BASE/etc/lircd.conf
            done
            cp -f lircrc* $BASE/etc/lircrc 2> /dev/null
            [ -e /etc/lircrc ] && chmod 755 /etc/lircrc
            update_db_settings HostRemoteType  "$Remotetype"
        #special case for special remote
        printhl "Starting with support for $Remotetype"
        if [ "$Remotetype" == "dvico" ]
        then
            /usr/sbin/lircd  -d /dev/usb/hiddev0 --driver=dvico
        elif [ "$Remotetype" == "Dvico-Dual-Digital4-rev2" ]
        then
            /usr/sbin/lircd -d /dev/input/irremote --driver=devinput
        else
            /usr/sbin/lircd -d /dev/lirc0
        fi
        [ -e /root/.mythtv ] ||  mkdir /root/.mythtv 2>/dev/null
        ln -s /etc/lircrc /root/.mythtv/lircrc 2>/dev/null
    else
        echo "Couldn't open directory $TEMPLATES/remotes/$Remotetype"
    fi
}

function scan_for_hpg_receiver() {
printhl "   Scanning for Hauppauge receiver"
for hpgid in `lspci -nm  -d4444: |cut -d" " -f6-  |tr -d '"'|tr " " :`
do
    line=`grep $hpgid $TEMPLATES/remotes/i2c.id`
    if [ $? -eq 0 ]
    then
        modprobe lirc_i2c
        FoundReceiverType=`echo "$line"|cut -d"|" -f2`
        Remotetype=`echo "$line"|cut -d"|" -f4`
        statusline=`echo "$line"|cut -d"|" -f2,4`
        #echo "Found $statusline , $Remotetype"
        echo "Found Hauppauge"
        echo "-------------------"
        echo "  1) Hauppauge black"
        echo "  2) Hauppauge silver"
        echo "  3) hauppauge-grey-g3"
        echo ""
        read -p "Which Hauppauge remote (5 sec): " -t 5 ans
        echo
        if [ "$?" != "0" ]; then
        echo
            echo "Using default $Remotetype"
        else
            case $ans in
                1) Remotetype="hauppauge-black";;
                2) Remotetype="hauppauge-silver";;
                3) Remotetype="hauppauge-grey-g3" ;;
                *) echo "Using default $Remotetype";;
             esac
        fi
        update_db_settings  HostReceiverType $FoundReceiverType
        found_remote=0
        setupremote
        break
    fi
done
}


function scan_for_usb_remote () {
#found_remote=1
printhl "   Scanning for usb receiver/remote"
while read line
do
    USBID=`echo "$line"|cut -d"|"  -f1`
    lsusb -d "$USBID" > /dev/null 2>/dev/null
    if [ $? -eq 0 ]
    then
        Remotetype=`echo "$line"|cut -d"|" -f2`
        printhl  "Found $Remotetype"
        setupremote
        found_remote=0
        break
    fi
done <$BASE/$TEMPLATES/remotes/receiver_usb.id
if [ $found_remote -eq 1 ]
then
    scan_for_hpg_receiver
fi
printhl "   Scanning for TatIR"
if lsusb | grep 04d8:0004 > /dev/null 2>/dev/null
then
	/usr/bin/PyroUsb.py > /dev/null 2>&1 &
fi

if [ $found_remote -eq 1  ]
then
#No remote found_remote
     update_db_settings HostRemoteType  "no_remote"
fi

}

function rest_of_network () {
    #netmask
    echo $CMDLINE | grep -q cnetmask
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*cnetmask=}
        NETMASK=${TEMPVAR%% *}
        /sbin/ifconfig eth0 $IP netmask $NETMASK
        nm=`/usr/bin/nmconv.py -obits  $NETMASK`
        NETMASK="/$nm $NETMASK"
        #echo $NETMASK
        update_db_settings HostNETMASK${MYTHDEFAULT} "$NETMASK"
    else
        printhl "   Netmask not found"
    fi
    #gateway
    echo $CMDLINE | grep -q cgateway
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*cgateway=}
        GATEWAY=${TEMPVAR%% *}
        /sbin/route add default  gw $GATEWAY
        update_db_settings HostGW${MYTHDEFAULT} "$GATEWAY"
    else
        printhl  "  Gateway not found"
    fi

    #dns
    echo $CMDLINE | grep -q cdns
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*cdns=}
        DNS=${TEMPVAR%% *}
        echo "nameserver $DNS" >> /etc/resolv.conf
        update_db_settings HostDNS${MYTHDEFAULT} "$DNS"
        else
            printhl "    DNS not found"
    fi
    echo $CMDLINE | grep -q chostname
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*chostname=}
        MYHOST=${TEMPVAR%% *}
        update_db_settings HostMyhostname "$MYHOST"
        else
            printhl "    hostname not found"
    fi
}

function init_network {
    echo $CMDLINE |grep -q cnetdev
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*cnetdev=}
        MYTHDEFAULT=${TEMPVAR%% *}
    else
        MYTHDEFAULT="eth0"
    fi

    echo $CMDLINE | grep -q ip
    if [ $? -eq 0 ]
    then
        update_db_settings HostDefaulteth0 0
        update_db_settings HostDefault${MYTHDEFAULT} 1

        update_db_settings HostActiveonbooteth0 0
        update_db_settings HostActiveonboot${MYTHDEFAULT} 1
        update_db_settings HostNetDevice ${MYTHDEFAULT}

        TEMPVAR=${CMDLINE#*cip=}
        IP=${TEMPVAR%% *}
        if [ "$IP" == "dhcp" ]
        then
            /sbin/dhcpcd $MYTHDEFAULT
            update_db_settings HostUseDHCP${MYTHDEFAULT} 0
        else
            /sbin/ifconfig ${MYTHDEFAULT} $IP
            update_db_settings HostUseDHCP${MYTHDEFAULT} 1
            update_db_settings HostIP${MYTHDEFAULT} "$IP"
            rest_of_network
        fi
    fi




}

function dev_up_check(){
    /sbin/ifconfig $1 1>/dev/null 2>/dev/null
    status=$?
    if [ $status -eq 1 ]
    then
        return 0
    else
        devip=`/sbin/ifconfig  | grep -C1 $1| grep inet|grep -v inet6  | cut -d: -f2 | awk '{ print $1}'`
        if [  "x$devip" = "x" ]
        then
            return 1
        else
            return 0
        fi
    fi
}

function request_dhcp(){
    echo $CMDLINE |grep -q cnetdev
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*cnetdev=}
        MYTHDEFAULT_NET=${TEMPVAR%% *}
    else
        MYTHDEFAULT_NET="eth0"
    fi
    for ndev in eth0 eth1 wlan0 wlan1 ath0
    do
        dev_up_check $ndev
        status=$?
        if [ $status -eq 1 ]
        then
            #interface is down, lets see if dhcp responds
            dhcpcd -Td -t2 $ndev -h "" > /tmp/dhcpinfo.$ndev 2>/dev/null
            #check for hostname here

            TEMPVAR=`grep new_ip_address /tmp/dhcpinfo.$ndev |cut -d\= -f2`
            if [ ! x$TEMPVAR = x ]
            then
                update_db_settings HostIP$ndev "$TEMPVAR"
                TEMPVAR=`grep new_subnet_mask /tmp/dhcpinfo.$ndev |cut -d\= -f2`
                nm=`/usr/bin/nmconv.py -obits  $TEMPVAR`
                TEMPVAR="/$nm    $TEMPVAR"
                update_db_settings HostNETMASK$ndev "$TEMPVAR"
                TEMPVAR=`grep new_routers /tmp/dhcpinfo.$ndev |cut -d\= -f2`
                update_db_settings HostGW$ndev "$TEMPVAR"
                TEMPVAR=`grep new_domain_name_servers /tmp/dhcpinfo.$ndev |cut  -d\= -f2| tr -d \"|tr -d \'|cut -d" " -f 1`
                update_db_settings HostDNS$ndev "$TEMPVAR"
            fi
        fi
    done
    TEMPVAR=`grep new_host_name /tmp/dhcpinfo.$MYTHDEFAULT_NET |cut -d\= -f2`
    if [ ! x$TEMPVAR = x ]
    then
        update_db_settings HostMyhostname "$TEMPVAR"
    fi

}

function init_remote {
    echo $CMDLINE | grep -q remoteport
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*remoteport=}
        REMOTEPORT=${TEMPVAR%% *}
    if [ x"$ReceiverType" = "xSerial" ]
    then
        if [ -e /dev/$REMOTEPORT ]
        then
            /usr/bin/setserial /dev/$REMOTEPORT uart none
            /sbin/modprobe lirc_serial
            update_db_settings HostReceiverType Serial
            update_db_settings HostSerialPortlirc "$REMOTEPORT"
        fi
    fi

    fi

    echo $CMDLINE | grep -q remote
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*remote=}
        Remotetype=${TEMPVAR%% *}
        setupremote
    else
        scan_for_usb_remote
    fi
}

#-----------------------