#!/bin/bash
MYTH_RUN_STATUS="1"
. /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
    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`
    remotepath="$TEMPLATES/remotes/$remotebucket/$Remotetype"
    if [ -d ${remotepath} ]
    then
            cd ${remotepath}
            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"
            update_db_settings HostRemotebucket "$remotebucket"
            update_db_settings HostRemoteType_${remotebucket}  "$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 ${remotepath}"
    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`
        remotebucket=`echo "$line"|cut -d"|" -f5`
        #echo $remotebucket
        #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`
        remotebucket=`echo "$line"|cut -d"|" -f4`
        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"
     update_db_settings HostRemotebucket "favorites"
     update_db_settings HostRemoteType_favorites  "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 -t5 $ndev -h " " > /tmp/dhcpinfo.$ndev 2>&1
            #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 in_kernel_support() {
    #lifted from mythbuntu
    #For disabling other protocols, adjust to the new location in 2.6.37.    91
    if [ -d /sys/class/rc ] && [ "$(ls -A /sys/class/rc)" ]
    then
        LCDDSTOP=0
        if [ -d /service/lcdd ]; then
            sv stop lcdd
            LCDDSTOP=1
        fi
        for file in `find /sys/class/rc/*/ -name protocols`
        do
            if [ "$1" = "disable" ]
            then
                echo "lirc" > $file
            else
                echo "none" > $file
                for protocol in `cat $file`; do
                echo "+${protocol}" > $file
                done
            fi
        done
        if [ $LCDDSTOP -eq 1 ]; then
            sv start lcdd
        fi
    fi
}



function init_remote {
    mkdir -p /var/run/lirc

    echo $CMDLINE | grep -q remoteport
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*remoteport=}
        REMOTEPORT=${TEMPVAR%% *}
        #port was given assume we are using a serial receiver
        ReceiverType="Serial"
    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
    in_kernel_support "disable"

    echo $CMDLINE | grep -q remotebucket
    if [ $? -eq 0 ]
    then
        TEMPVAR=${CMDLINE#*remotebucket=}
        remotebucket=${TEMPVAR%% *}
    else
        remotebucket="favorites"
    fi



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

        setupremote
    else
        scan_for_usb_remote
    fi
}

function home_check(){
    #This bit of code is used to determine where mythhome is located
    if [ x$MYTHHOME = x ]
    then
    . /etc/profile.d/MythVantage.sh
    fi

    if [ x$MYTHHOME = x ]
    then
        echo "MYTHHOME not defined!"
        exit 1
    fi

    }

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


