#!/bin/bash
###################################################################
#Script to configure your system based off the values in /etc/systemconfig
#Any changes made to config files will be removed when systemconfig.sh is run
#
#JM
###################################################################
#set -x
. /etc/profile
#MVRELEASE=`cat /etc/mythvantage-release  |cut -d" " -f -2`
MVRELEASE=`cat /etc/LinHES-release  `
echo $@ >/tmp/systemconfig.call
echo "----------------------start of systemconfig $@ ----------------------"
BASE=""

#TEMPLATES="/usr/share/templates"
. /etc/profile
MYTHHOME=$BASE/home/mythtv
. $MV_ROOT/bin/networkconfig.sh
PACMAN="pacman --noconfirm"
postfix=`cat ${BASE}/usr/local/share/mythtv/.releasetype`
PKGBLACKLIST=$BASE/etc/blacklist.package

if [ x$1 = x"Mysql_only" ]
    then
    rm -f /tmp/mysql.txt
        sed -e "s/^DBHostName=.*$/DBHostName=$2/" $TEMPLATES/mysql.txt > /tmp/mysql.txt
        exit 0
    fi


if [ -f /etc/systemconfig ]
then
    . /etc/systemconfig
    setup_MYTH_vars
TEMPNET="Hostip"$default_interface
echo $TEMPNET
eval MYTHIP=\$${TEMPNET}
else
    echo "could not find /etc/systemconfig"
    exit 1
fi


function cp_and_log () {
    if [ -e $1 ]
    then
        echo "copying $1 to $2"
        cp -rfp "$1" "$2"
    else
        echo "$1 is not present, skipping..."
    fi

}


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


function setupmysql  {
#setup mysql.txt to find the database servers
echo "running setup mysql"
        if [ $SystemType = "Master_backend" ]
        then
            if [ $MYTHDHCP = 0 ]
            then
                #this grabs eth0, as that is all thats supported.
#                dbhost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
                dbhost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'`
                sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old
                cp_and_log /tmp/systemconfig.old ${BASE}/etc/systemconfig
                ##logic to change master_serverip and backend_serverip  in db

                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s master -a $dbhost
            else

                dbhost=$MYTHIP
                sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old
                cp_and_log /tmp/systemconfig.old ${BASE}/etc/systemconfig
                #logic to change dbhost in db
                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost
            fi
        fi

        if [ $SystemType = "Slave_backend" ]
        then
            if [ $MYTHDHCP = 0 ]
            then
                #this grabs eth0, as that is all thats supported.
                #slavehost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
                slavehost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'`
                ##logic to change backend_serverip in db
                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s slave  -a $slavehost
            else
                slavehost=$MYTHIP

                #logic to change backend_serverif in db
                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s slave  -a $slavehost
            fi
        fi

        MYSQLTXT=${BASE}/usr/share/mythtv/mysql.txt
        if [ $SystemType = "Standalone" ]
        then
            sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" $TEMPLATES/mysql.txt > $MYSQLTXT
        else
            sed -e "s/^DBHostName=.*$/DBHostName=$dbhost/" $TEMPLATES/mysql.txt > $MYSQLTXT
        fi
        rm ${BASE}/home/mythtv/.mythtv/mysql.txt
        rm ${BASE}${MV_ROOT}/bin/mythtv/.mythtv/mysql.txt
        if [ -f ${BASE}/home/mythtv/templates/mysql.txt ]
        then
            cp_and_log ${BASE}/home/mythtv/templates/mysql.txt $MYSQLTXT
        fi

        chmod 755 $MYSQLTXT
        chown mythtv $MYSQLTXT

}

function setupmysqlnetwork(){
MFILE=etc/my.cnf
grep "#skip-networking" $BASE/$MFILE
status=$?



    if [ $SystemType = "Standalone" ]
        then
            sed -ie "s/^#skip-networking/skip-networking/g" $BASE/$MFILE
            if [ $status = 0 ]
            then
                sudo sv restart mysql
            echo "restarting mysql with   no network"
            fi

        fi

    if [ $SystemType = "Master_backend" ]
    then
        sed -ie "s/^skip-networking/#skip-networking/g" $BASE/$MFILE
            if [ $status = 1 ]
            then
                sudo sv restart mysql
                echo "restarting mysql with  network"
            fi

    fi


}


function settimezone {
#set the timezone
if [  x"$timezone" = x ]
then
    timezone="unknown"
fi
rm ${BASE}/etc/localtime
echo $timezone
ln -s "/usr/share/zoneinfo/$timezone"  ${BASE}/etc/localtime
        sed -e "s~^TIMEZONE=.*$~TIMEZONE=\"${timezone}\"~" ${BASE}/etc/rc.conf > $TEMPLATES/rc.conf


if [ -f ${BASE}/etc/php/php.ini ]
then
    echo "changing timezone in php.ini"
    sed -i "s/^.*date.timezone.*$/date.timezone=${timezone}/" ${BASE}/etc/php/php.ini
fi



cp_and_log $TEMPLATES/rc.conf ${BASE}/etc/rc.conf
#Check for Atomic Ant
if grep disablemodules=agpart,intel_agp /proc/cmdline >/dev/null
then
    cat /etc/rc.conf |  sed -e '/MOD_BLACKLIST/ c\MOD_BLACKLIST=($ALSABLACKLIST agpart intel_agp)' > /etc/rc.conf.aa
    mv /etc/rc.conf /etc/rc.conf.preaa
    mv /etc/rc.conf.aa /etc/rc.conf
# else
# 	exit 1
fi

}


# function setupreceiver {
# case $ReceiverType in
#     tinker) echo "do nothing"
#             ;;
#     Serial) echo "setup serial lirc"
#             sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
#             echo "lirc_serial   #lirc" >> ${BASE}/etc/modules.mythvantage
#             load-modules-mythvantage.sh
#             ;;
#     Usb-imon) echo "setup receiver-usb-imon"
#             sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
#             echo "lirc_imon     #lirc" >> ${BASE}/etc/modules.mythvantage
#             load-modules-mythvantage.sh
#             ;;
# Hauppauge) echo "setup hauppauge reciever (lirc_i2c)"
#             sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
#             echo "lirc_i2c   #lirc" >> ${BASE}/etc/modules.mythvantage
#             cp_and_log $TEMPLATES/modules/lirc_i2c.conf ${BASE}/etc/modprobe.d/lirc_i2c.conf
#             rmmod lirc_i2c 2>/dev/null
#             load-modules-mythvantage.sh
#             ;;
#         *)   sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
#             ;;
#     esac
#
#
# }


function setupevrouter {
    if [  x$UseEvrouter  = x1 ]
    then
        case x$EvrouterConfig in
            xtinker )
                    echo "do nothing for evrouter"
                    ;;
                x ) echo "empty evrouter"
                    ;;
                * ) echo "setup evrouter for $EvrouterConfig "
                    cp_and_log $TEMPLATES/evrouter/$EvrouterConfig /etc/evrouter.cfg
                    daemon_add="evrouter Xvfb $daemon_add"

                    ;;
        esac
    else
    # disable evrouter
    daemon_remove="evrouter Xvfb $daemon_remove"
    fi




}



function scrubnfs {
    cp_and_log /etc/fstab $TEMPLATES/fstab.conf.template

   sed '/^#STARTSCRUB.*$/,/^#ENDSCRUB.*$/d'  $TEMPLATES/fstab.conf.template > ${BASE}/etc/fstab
}

function setupfstab () {
#    	setupfstab $NFSserver $NFSshare $NFSmount
        echo "#STARTSCRUB --------------anything in this block will be scrubbed" >>  ${BASE}/etc/fstab
        echo "$1 $2  nfs" >> ${BASE}/etc/fstab
        if [ ! -e "$2" ]
        then
        mkdir -p "$2"
        chown mythtv:mythtv "$2"
        fi
        if [ x$DCONFIG = x  ]
        then
            mount $2 &
        fi
        echo "#ENDSCRUB" >> ${BASE}/etc/fstab
}

function setupncidclient
{
    sed -e "s/^set Host.*$/set Host $dbhost /" $TEMPLATES/ncid.conf.template >${BASE}/etc/ncid/ncid.conf
}

function setupnciddaemon {
    if [ x$Runncidd = x1 ]
    then
        cp_and_log /etc/ncid/ncidd.conf $TEMPLATES/ncidd.conf.template
        sed -e "s/.*set ttyport.*$/set ttyport =  \/dev\/$nciddSerialPort /" $TEMPLATES/ncidd.conf.template >${BASE}/etc/ncid/ncidd.conf
    fi

}

function setupntp () {
        #this is used for backend or standlone types
        if [  $1 = "1" ]
                then
                        #MBE/STD use deafult
                        echo "Not changing ntp config"
                else
                        #echo "server $dbhost" >> ${BASE}/etc/ntp.conf
                        echo "setting ntp to $dbhost"
                        sed -i "s/pool.ntp.org/$dbhost/g" ${BASE}/etc/ntp.conf
                fi


}

function setupplugins (){

pkglistinstall=""
pkglistremove=""
#default enabled
for i in mythcontrols mythgallery mythmovies mythmusic mythsmolt mythvideo
do
    eval pkgvalue=\$${i}
    if [ x$pkgvalue = x ]
    then
        pkglistinstall="$pkglistinstall $i$postfix"
    else
        if [ x$pkgvalue = x1 ]
        then
            pkglistinstall="$pkglistinstall $i$postfix"
        else
            pkglistremove="$pkglistremove $i$postfix"
        fi
    fi
done

#default disabled
for i in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather mythappletrailers mythstream mythvodka
do
    eval pkgvalue=\$${i}
    if [ x$pkgvalue = x ]
    then
        pkglistremove="$pkglistremove $i$postfix"
    else
        if [ x$pkgvalue = x1 ]
        then
            pkglistinstall="$pkglistinstall $i$postfix"
        else
            pkglistremove="$pkglistremove $i$postfix"
        fi
    fi
done
#everything else
for i in  miro xe romdb xine dvdcss webmin
do
    eval pkgvalue=\$${i}
    case $i in
        xine)
                if [ x$pkgvalue = x1 ]
                then
                    pkglistinstall="$pkglistinstall xine-ui"
                else
                    pkglistremove="$pkglistremove xine-ui"
                fi
            ;;
        dvdcss)
                if [ x$pkgvalue = x1 ]
                then
                    pkglistinstall="$pkglistinstall libdvdcss"
                else
                    pkglistremove="$pkglistremove libdvdcss"
                fi
            ;;
        webmin)
                ##Daemon_add is here because webmin is on the software page instead of the advanced screen
                if [ x$pkgvalue = x1 ]
                then
                    pkglistinstall="$pkglistinstall webmin"
                    daemon_add="webmin $daemon_add"
                else
                    pkglistremove="$pkglistremove webmin"
                    daemon_remove="webmin $daemon_remove"
                fi
                ;;
        *)
            if [ x$pkgvalue = x1 ]
            then
                pkglistinstall="$pkglistinstall $i"
            else
                pkglistremove="$pkglistremove $i"
            fi
        ;;
esac

done


install="$pkglistinstall $install"
remove="$pkglistremove $remove"

}

function LCDcheck () {
case x$LCDtype in
    xtinker) echo "do nothing lcd "
            ;;
    xno_lcd) echo "no  lcd "
                    ;;
    xxosd) install="xosd lcdproc $install"
            ;;
        x) echo "lcd empty "
        ;;
*)
    install="lcdproc $install"
    ;;
esac
}


function packages () {
#see which plugins need to be installed
echo "  Starting to install Packages"
setupplugins
LCDcheck
if [ ! -f $PKGBLACKLIST ]
then
    touch $PKGBLACKLIST
fi
    for i in $remove
    do
    if [ ! x$i = xnone ]
    then
        echo "-----------$i --------------"
        grep -q $i $PKGBLACKLIST
        if [ $? = 1 ]
        then
            pacman -Q $i 2>/dev/null
            #VAR=`pacman -Q $i  2>&1 `
            if [ $? = 0 ]
            then
                    if [ $i = "mythweb$postfix" ]
                    then
                    pacman --noconfirm -R mythweb$postfix
                    echo removed $i
                    else
                    pacman --noconfirm -Rs $i
                    echo removed $i
                    fi
            fi
        else
            echo "$i is black listed"
        fi
    fi
    done


    for i in $install
    do
    if [ ! x$i = xnone ]
    then
        echo "-----------$i --------------"
        grep -q $i $PKGBLACKLIST
        if [ $? = 1 ]
        then
                pacman -Q $i 2>/dev/null
                #VAR=`pacman -Q $i  2>&1 `
    #            echo $VAR |grep -vq error:

                if [ ! $? = 0 ]
                then
                        pacman --noconfirm -Sf $i
                        echo installed $i
            else
                echo "$i already installed"
                fi
        else
        echo "$i is black listed"
        fi
    fi
    done
}

function daemons {
echo "Daemons on boot"

    for i in $daemon_remove
    do
        sv check $i 1>/dev/null
            status=$?
    if [ $status -eq 0 ]
    then
        sv down $i
    fi
            remove_service.sh $i
    done


    for i in $daemon_add
    do
        sv check $i 1>/dev/null
        status=$?
        add_service.sh $i

        if [ $status -eq 0 ]
        then
                    case $i in
                        mysql*) sv hup $i
                                        ;;
                        mythback*) sv hup $i
                                        ;;
                        lirc* ) sv hup $i
                                        ;;
                        frontend) sv check frontend 1>/dev/null
                                        ;;

                        smbd ) sv hup $i
                                        ;;
                        nmbd ) sv hup $i
                                        ;;
                        evrouter) sv restart $i
                                    ;;
                    *)     sv down $i
                            sleep 1
                            sv up $i
                        ;;
            esac
                fi

        done

}


function services
{
ser_install=""
ser_daemon_add=""
ser_remove=""
ser_daemon_remove=""
if [ x$UseEvrouter = x1 ]
then
    ser_daemon_add="evrouter Xvfb $ser_daemon_add"
else
    ser_daemon_remove="evrouter Xvfb $ser_remove"
fi

if [ x$RunDHCP = x1 ]
then
        ser_daemon_add="dnsmasq  $ser_daemon_add"
        ser_install="dnsmasq mvpmc  $ser_install"

else
        ser_daemon_remove="dnsmasq  $ser_daemon_remove"
        ser_remove="dnsmasq mvpmc  $ser_remove"
fi

if [ x$RunFrontend = x1 ]
then
        ser_daemon_add="frontend hal   $ser_daemon_add"
        ser_install=" $ser_install"
        showX=true
else
        ser_daemon_remove="frontend hal  $ser_daemon_remove"
        ser_remove="$ser_remove"
fi

if [ x$UseMythWEB = x1 ]
then
            ser_install="lighttpd  mythweb$postfix $ser_install"
            ser_daemon_add="lighttpd $ser_daemon_add"
else
        ser_remove="mythweb$postfix $ser_remove"
        ser_daemon_remove="$ser_daemon_remove"
fi

#samba
if [ x$UseSamba = x1 ]
then
        ser_install="samba $ser_install"
        ser_daemon_add="nmbd smbd $ser_daemon_add "
        if [ x$Samba_mediareadonly = x1 ]
            then
                smreadonly="no"
                else
                smreadonly="yes"
        fi

        if [ x$Samba_homereadonly = x1 ]
            then
                shreadonly="no"
                else
                shreadonly="yes"
        fi

        if [ ! -d ${BASE}/etc/samba ]
        then
            mkdir ${BASE}/etc/samba
        fi

        if [  -f ${MYTHHOME}/templates/smb.conf  ]
        then
            install -D -m755  ${MYTHHOME}/templates/smb.conf   ${BASE}/etc/samba/smb.conf
        else
            sed -e "s/^.*workgroup =.*$/ workgroup = $Samba_domain/g " \
                -e "s/^.*server string = .*$/ server string = $hostname/g" $TEMPLATES/samba/smb.conf.template > ${BASE}/etc/samba/smb.conf

            if [ x$Samba_media = "x1" ]
            then
                echo "include =  /etc/samba/smb.conf.media" >> ${BASE}/etc/samba/smb.conf
                sed -e "s/^.*writeable.*$/writeable = $smreadonly/g" $TEMPLATES/samba/smb.conf.media > ${BASE}/etc/samba/smb.conf.media
            fi

            if [ x$Samba_home = "x1" ]
            then
                echo "include =  /etc/samba/smb.conf.home" >> ${BASE}/etc/samba/smb.conf
                sed -e "s/^.*writeable.*$/writeable = $shreadonly/g" $TEMPLATES/samba/smb.conf.home > ${BASE}/etc/samba/smb.conf.home

            fi

        fi
else
        ser_remove="samba $ser_remove"
        ser_install="smbclient $ser_install"
        ser_daemon_remove="smbd nmbd  $ser_daemon_remove"
fi


if [ x$UseNFS = x1 ]
then
    ser_install="nfs-utils portmap $ser_install"
    ser_daemon_add="nfsd nfs-utils portmap $ser_daemon_add"
    sed -e "s/REPLACEME/*/g" $TEMPLATES/exports.template > ${BASE}/etc/exports

else
    ser_remove="$ser_remove"
    ser_daemon_remove="nfsd  $ser_daemon_remove"
fi

if [ x$Runncidd = x1 ]
then
        ser_daemon_add="ncidd ncid $ser_daemon_add"
        ser_install="ncid $ser_install"
else
        ser_daemon_remove="ncidd ncid $ser_daemon_remove"
        ser_remove="ncid $ser_remove"
fi


if [ x$UseEvrouter = x1 ]
then
        ser_install="evrouter Xvfb $ser_install"
else
        ser_remove="evrouter $ser_remove"
fi


if [ x$DDnsEnable = x1 ]
then
        ser_daemon_add="inadyn $ser_daemon_add"
        ser_install="inadyn $ser_install"
else
        ser_daemon_remove="inadyn $ser_daemon_remove"
        ser_remove="inadyn $ser_remove"
fi

case x$Screensavertype in
    xxscreensaver)   ser_install="xscreensaver $ser_install"
                    ser_remove="gnome-screensaver $ser_remove"
                ;;
    xgscreensaver)  ser_install="xscreensaver gnome-screensaver $ser_install"

                ;;
    xnone) ser_remove="gnome-screensaver xscreensaver $ser_remove"
                ;;

    xtinker) echo "tinker mode for screensaver"
    ;;

    esac



#Setting the default, just to avoid the or statement..
#if [ x$UseHobbit = x ]
#then
#    UseHobbit=0
#fi

#if [ x$UseHobbit = x1 ]
#then
#    case $SystemType in
#        Standalone|Master_backend )
#           ser_daemon_add="hobbit $ser_daemon_add"
#           ser_install="hobbitserver $ser_install"
#        ;;
#
#        *)   ser_daemon_add="hobbit-client $ser_daemon_add"
#              ser_install="hobbit-client $ser_install"
#        ;;
#        esac
#else
#           ser_daemon_remove="hobbit hobbit-client $ser_daemon_remove"
#           ser_remove="hobbit-client hobbitserver $ser_remove"
#            rm -f /data/srv/httpd/htdocs/hobbit/index.html
#
# fi



}



function setupsleep {
if [ x$AutoShutdown = x1  ]
then
    cronshutdowntime=""
    if  [ x$Shutdowntime != x-1 ]
    then
        cronshutdowntime=$Shutdowntime
    fi
    if [ x$Shutdowntime2 != x-1 ]
    then
        if [ x$cronshutdowntime = x ]
        then
            cronshutdowntime=$Shutdowntime2
        else
            cronshutdowntime="${cronshutdowntime},${Shutdowntime2}"
        fi
    fi

    sed -e "s/HOUR/$cronshutdowntime/g" $TEMPLATES/cron.template | crontab - -u mythtv
else
    sed -e "/00 HOUR.*/d" $TEMPLATES/cron.template | crontab - -u mythtv
fi

}


function setuppacman () {
#setup link to httpd dir
echo "Configuring pacman"
if [ ! x$1 = x ]
    then
        ln -s ${BASE}/data/var ${BASE}/data/srv/httpd/htdocs/repo
        echo "creating the link for the pacman repo mirror"
    fi

    for i in mv-core mv-core-testing mv-extra mv-extra-testing
    do
        echo "[$i]"  > ${BASE}/etc/pacman.d/$i
        #add mirror if needed
        if [ x$PKG_MIRROR = x1 ]
        then
            echo " Server = http://$dbhost/repo/$i " >> ${BASE}/etc/pacman.d/$i
        fi
        #add user templates
        USERTEMPLATES="/data/home/mythtv/templates"
        if [ -f $USERTEMPLATES/sources/$i ]
        then
            echo "Adding user  $i"
            cat $USERTEMPLATES/sources/$i  >> ${BASE}/etc/pacman.d/$i
        fi
        cat $TEMPLATES/sources/$i  >> ${BASE}/etc/pacman.d/$i
        echo "setting local mirror to $dbhost for $i "
    done

    #sed -e "s/REPLACEME/$dbhost/g"  $TEMPLATES/sources/svc_pkg > /etc/pacman.d/svc_pkg


}


function setupzipcode () {
    if [ ! x$zipcode = x ]
    then
        ${MV_ROOT}/bin/restore_default_settings.sh -c ZIP  -z $zipcode
    #Let's also speed things up for those in North America
    mkdir /usr/bin/perlbin/vendor/tv_grabbers_non_na
    mv /usr/bin/perlbin/vendor/tv_grab_*  /usr/bin/perlbin/vendor/tv_grabbers_non_na
    mv  /usr/bin/perlbin/vendor/tv_grabbers_non_na/tv_grab_na*  /usr/bin/perlbin/vendor/
    fi
}

function process_nfsmap () {
#first look for a local copy of nfsmap
if [ $1 = noip ]
then
    if [ -f /data/home/mythtv/templates/nfsmap ]
    then
        NFSMAP="/data/home/mythtv/templates/nfsmap"
    else
        mv -f /tmp/nfsmap /tmp/nfsmap.old
        wget -O /tmp/nfsmap http://$dbhost:1337/templates/nfsmap
        if [ $? = 0 ]
        then
            NFSMAP="/tmp/nfsmap"
        fi
    fi
else
        mv -f /tmp/nfsmap /tmp/nfsmap.old
        wget -O /tmp/nfsmap http://$1:1337/templates/nfsmap
        if [ $? = 0 ]
        then
            NFSMAP="/tmp/nfsmap"
        fi
fi

    if [ -f $NFSMAP ]
    then
        #read in file
        while read line
        do
            NFSserver=`echo "$line"|cut -d" " -f1`
            NFSmount=`echo "$line"|cut  -d" " -f2`
            setupfstab $NFSserver $NFSmount
        done <$NFSMAP
    else
        echo "couldn't find nfsmap"

    fi
}

function setupcnfs () {
    scrubnfs
        if [ $HaveCentralNFS = "yes" ]
    then
            case x$NFSserver in
                xfile:nfsmap )
                                process_nfsmap noip
                                ;;
            *:nfsmap )
                                nfsmapip=`echo "$NFSserver" | cut -d: -f1 `
                                process_nfsmap $nfsmapip
                                ;;
                *)  setupfstab $NFSserver $NFSmount
                esac

        #if [ ! x"$NFSserver" = "xfile:nfsmap" ]
            #then
            #    setupfstab $NFSserver $NFSmount
            #else
            #    process_nfsmap
            #fi
        else
            echo "fe_nfs"
            #if no central nfs found, then use the mbe.
            if [ $SystemType = "Frontend_only" ]
            then
                setupfstab ${dbhost}:/myth /myth
            fi
    fi

}

function setupbootsplash () {

if  [ x$Usebootsplash = x1 ]
then
    COMMAND="%s/^default.*0/default 1/g"
else
    COMMAND="%s/^default.*1/default 0/g"
fi

ex ${BASE}/boot/grub/menu.lst <<EOF
:$COMMAND
:wq
EOF

}

function setuphobbitclient () {
COMMAND="%s/^BBDISP=.*$/BBDISP=$dbhost/g"


ex ${BASE}/data/srv/hobbit/client/etc/hobbitclient.cfg <<EOF
:$COMMAND
:wq
EOF

}

function setupSyslog () {
COMMAND="%s/^destination d_remote.*$/destination d_remote \{tcp\(\"${dbhost}\" port\(514\)\) \;\} \;/"
ex ${BASE}/etc/syslog-ng.conf <<EOF
:$COMMAND
:wq
EOF




}

function setupfuncminion () {
COMMAND="%s/^certmaster.*$/certmaster = ${dbhost}/"
ex ${BASE}/etc/func/minion.conf <<EOF
:$COMMAND
:wq
EOF
}

function setupDNSMASQ(){
if [ x$RunDHCP = x1   ]
then
    echo "DNSMASQ setup"

#set default route to my GW
COMMAND="%s/^dhcp-option=3.*$/dhcp-option=3,${route}/"
ex ${BASE}/etc/dnsmasq.conf <<EOF
:$COMMAND
:wq
EOF

#setup dns to my ip
COMMAND="%s/^dhcp-option=6.*$/dhcp-option=6,${ip}/"
ex ${BASE}/etc/dnsmasq.conf <<EOF
:$COMMAND
:wq
EOF


#change nfsroot to my ip
COMMAND="%s/nfsroot=.*:/nfsroot=${ip}:/"
ex ${BASE}/data/srv/tftp/pxelinux.cfg/default <<EOF
:$COMMAND
:wq
EOF

#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
        echo "nameserver $nameserver" >> ${BASE}/etc/resolv.conf
fi

#setup dongle.config
COMMAND="%s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s ${ip} \& /"
ex ${BASE}/data/srv/tftp/dongle.bin.config <<EOF
:$COMMAND
:wq
EOF



#setup dongle.config

}

function reloadfe(){
PID=`ps -ef |grep mythfrontend|grep -v grep |awk  '{print $2 }'`
/usr/bin/backend_control.sh  clearcache  behost $dbhost
if [ x$RESTART_LCD = xtrue ]
then
    killall -9 mythlcdserver
fi
if [  x = x$PID ]
then
    echo "Mythfrontend not running, will not reload"
else
        kill -s USR1 $PID
fi
exit 0

}


function setup_db (){

            install="mysql avahi"
            daemon_add="mysql"
            packages
            daemons
status=1
mysqlstatus=1
while [ ! $status = 0  ]
do
    sv stop mysql
    sleep 1
    sv  start mysql
    mysqlstatus=$?
    if [ $mysqlstatus = 0 ]
    then
    mysql -e "show databases;"
        showstatus=$?
        if [ $showstatus = 0 ]
        then
            pacman --noconfirm -R mythdb-initial
            pacman --noconfirm  -S mythdb-initial
            $MV_ROOT/bin/restore_default_settings.sh -c load
            if [ $SystemType = "Master_backend" ]
            then
                $MV_ROOT/bin/restore_default_settings.sh  -c  BECONFIG  -s master  -a $dbhost
            fi
            #update database to allow user jobs on this host.
            $MV_ROOT/bin/restore_default_settings.sh  -c  USERJOBALLOW
            $MV_ROOT/bin/restore_default_settings.sh  -c  ACCESSCONTROL
    if [ -d /data/srv/mysql/mythconverg ]
    then
        pacman --noconfirm -R webcalendar
            pacman --noconfirm --nodeps  -S webcalendar
        status=0
    fi
    fi
    fi
done
}

function setup_web_auth {
    if [ x$UseMythWEB_auth = x1 ]
    then
        #enable auth
        sed -ie "s/^.*include.*auth-inc.conf.*$/include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf
    else
        #disable auth
        sed -ie "s/^.*include.*auth-inc.conf.*$/#include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf
    fi
    sudo sv restart lighttpd

}


function mplayer_saver_check () {
    if [ ! -f $BASE/etc/mplayer/mplayer.conf ]
    then
        mkdir -p $BASE/etc/mplayer
        touch $BASE/etc/mplayer/mplayer.conf
        #cp -f $TEMPLATES/mplayer.conf.template $BASE/etc/mplayer/mplayer.conf
    fi
    grep -q stop-xscreensaver  $BASE/etc/mplayer/mplayer.conf
    if [ $? = 0 ]
    then
        sed -i "s/^.*stop-xscreensaver.*$/stop-xscreensaver = 1 / g" $BASE/etc/mplayer/mplayer.conf
    else
        echo  stop-xscreensaver = 1 >> $BASE/etc/mplayer/mplayer.conf
    fi
    grep -q heartbeat-cmd  $BASE/etc/mplayer/mplayer.conf
    if [ $? = 0 ]
    then
       sed -i '/^.*heartbeat-cmd.*$/d' $BASE/etc/mplayer/mplayer.conf
       #sed -i "s/^.*heartbeat-cmd.*$/heartbeat-cmd=\"$1\"/ g" $BASE/etc/mplayer/mplayer.conf
    fi
    echo  "heartbeat-cmd = \"$1\"" >> $BASE/etc/mplayer/mplayer.conf
}



function killxscreensaver {
    xscreensaver-command --exit &
    killall xscreensaver &
}

function killgscreensaver(){
    gnome-screensaver-command --exit &
    killall gnome-screensaver &
}


function setupscreensaver {
#copy in template

case x$Screensavertype in
    xxscreensaver)
                killgscreensaver
                #why can't it have a nice conf tool like gconf
                if [ ! -f  $MYTHHOME/.xscreensaver ]
                then
                    #copy in template
                    cp -f $TEMPLATES/xscreensaver.template $MYTHHOME/.xscreensaver
                fi
                #change the idle
                    sed -i "s/^timeout.*$/timeout:    0:$Screensaveridle:00/g" $MYTHHOME/.xscreensaver

                #set the mode
                    case x$Screensavertheme in
                    xRandom)
                      sed -i "s/^mode.*$/mode:     random/g" $MYTHHOME/.xscreensaver
                    ;;
                    xBlank)
                        sed -i "s/^mode.*$/mode:    blank/g" $MYTHHOME/.xscreensaver
                    ;;
                    *)  sed -i "s/^mode.*$/mode:    one/g" $MYTHHOME/.xscreensaver
                        #set the theme
                        start=`awk '/programs/{print NR" "}' $MYTHHOME/.xscreensaver`
                        ss=`awk  '/'$Screensavertheme'/{print NR" "}' $MYTHHOME/.xscreensaver`
                        sspos=$((ss-start-1))
                        sed -i "s/^selected.*$/selected:   $sspos/g" $MYTHHOME/.xscreensaver

                    ;;
                 esac
                mplayer_saver_check "/usr/bin/xscreensaver-command -deactivate &"
                ;;
    xgscreensaver)
                gconftool-2 --direct   --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory  --type bool   --set /apps/gnome-screensaver/lock_enabled false
                gconftool-2 --direct  --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory  --type int -s "/apps/gnome-screensaver/idle_delay" $Screensaveridle
                gconftool-2 --direct  --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory  --type string -s "/apps/gnome-screensaver/mode" single

                case x$Screensavertheme in
                    xRandom)
                        gconftool-2 --direct  --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory  --type string -s "/apps/gnome-screensaver/mode" random

                    ;;
                    xBlank)
                        gconftool-2 --direct  --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory  --type string -s "/apps/gnome-screensaver/themes" blank
                    ;;

                    *)
                     gconftool-2  --direct  --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --set --type list --list-type=string /apps/gnome-screensaver/themes [screensavers-$Screensavertheme]
                     ;;
                 esac
                mplayer_saver_check "/usr/bin/gnome-screensaver-command -p &"
                killxscreensaver
                ;;
    xnone)       killgscreensaver
                killxscreensaver
                ;;

    xtinker) echo "tinker mode for setupscreensaver"
    ;;

    esac

#
# #start it if not already running.
#     if [ x$XScreensaver = x1 ]
#     then
#         #check if it's running, it not start it.
#         if [ ! x$MV_NEW_INSTALL = "xtrue" ]
#         then
#             su - mythtv -c "/usr/bin/gnome-screensaver "
#         fi
#     else
#         #kill it
#         gnome-screensaver-command --exit &
#         killall gnome-screensaver &
#     fi



}
#----------------------------------------------------MAIN PROGRAM-------------------------------------------
#misc,sleep,hostype,advanced,audio
eval LAST=\$$#
LIST=`echo $LAST | tr , " " `

hosttypechange="false"


for i in  $LIST
do
echo $i
case $i in
    misc) showmisc="true"
        ;;
    sleep) showsleep="true"
        ;;
    hostype) showhost="true"
            showX="true"
        ;;
    hostypec) hosttypechange="true"
            ;;
    advanced) showadvanced="true"
        ;;
    audio) showaudio="true"
        ;;
    network) shownetwork="true"
        ;;
    advancedX)  showX="true"
        ;;
    webuser)  setup_web_auth
        ;;
    restartfe)  killall -9 mythfrontend
                killall -9 mythwelcome
                exit 0
        ;;
    reloadfe)  reloadfe
        ;;
    ddns) services
        install=$ser_install
        remove=$ser_remove
        daemon_add=$ser_daemon_add
        daemon_remove=$ser_daemon_remove
        ;;
     screensaver)
        services
        install=$ser_install
        remove=$ser_remove
        daemon_add=$ser_daemon_add
        daemon_remove=$ser_daemon_remove
        showscreensaver="true"
        ;;
     ir)
        showir="true"
        ;;

    this_is_install) MV_NEW_INSTALL="true"
        ;;
    user)
            if [ x$rootSSH = "x1" ]
            then
                sed -i "s/^.*PermitRootLogin.*$/PermitRootLogin yes/" $BASE/etc/ssh/sshd_config
            else
                sed -i "s/^.*PermitRootLogin.*$/PermitRootLogin no/" $BASE/etc/ssh/sshd_config
            fi
            sv hup sshd
        ;;
    esac
done

if [ x$MV_NEW_INSTALL = xtrue ]
then
    hosttypechange="false"
fi



#  exit 1

#network
if [ x"$shownetwork" = xtrue ]
then
    OLDHOSTNAME=`hostname`
    NEWHOSTNAME=$hostname
    if [ ! $OLDHOSTNAME = $NEWHOSTNAME ]
    then

    ${MV_ROOT}/bin/restore_default_settings.sh  -cuhostname -o -h$OLDHOSTNAME
    RESTART_FE="true"
    hostname $NEWHOSTNAME
    if [ $SystemType != "Frontend_only" ]
    then
        sv restart mythbackend
    fi

    fi

    setup_network
    CMDLINE=$(cat /proc/cmdline)
    echo $CMDLINE |grep -q netboot
    NETBOOT=$?
    if [   x$NETBOOT = x1  ]
        then
            echo "loading network"
            ${BASE}/etc/net/scripts/network.init reload
            ${BASE}/etc/net/scripts/network.init restart
        else
            echo "netboot, will not start network"
        fi
fi


if [ x$showhost = "xtrue" ]
then
    . $MV_ROOT/bin/ir_config.sh
    setupir
    case $SystemType in
        Standalone)
                setupntp 1
                services

                if [ x$hosttypechange = "xtrue" ]
                then
                    setup_db
                fi
                if [ -f   ${BASE}/etc/avahi/services/mysql.service     ]
                then
                            rm -f ${BASE}/etc/avahi/services/mysql.service
                            sudo sv restart avahi
                fi

                install="mysql mythdb-initial  avahi portmap nfs-utils local-website $ser_install"
                remove="none $ser_remove"

                daemon_add="mysql  mythbackend  avahi portmap nfs-utils netfs lighttpd $ser_daemon_add"
                daemon_remove="none $ser_daemon_remove"

                ;;
        Master_backend)
                setupntp 1
                services

                if [  !  -f   ${BASE}/etc/avahi/services/mysql.service     ]
                then
                            mkdir  ${BASE}/etc/avahi/services
                            cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service
                            sudo sv restart  avahi
                fi

                install="mysql  mythdb-initial avahi portmap nfs-utils local-website myth2ipod mythtv-status $ser_install  "
                remove="$ser_remove"

                daemon_add="mysql mythbackend  avahi   portmap nfs-utils netfs lighttpd $ser_daemon_add"
                daemon_remove="$ser_daemon_remove"
                ;;
        Slave_backend)
                setupntp 0
                services
                if [ x$hosttypechange = "xtrue" ]
                then
                setup_db
                fi
                if [    -f   ${BASE}/etc/avahi/services/mysql.service     ]
                then
                            rm -f ${BASE}/etc/avahi/services/mysql.service
                            sudo sv restart  avahi
                fi

                #cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service
                install="mysql  avahi  local-website portmap nfs-utils $ser_install  "
                remove=" $ser_remove"

                daemon_add="mythbackend avahi portmap nfs-utils netfs lighttpd $ser_daemon_add"
                daemon_remove="$ser_daemon_remove"
                ;;
        Frontend_only)
            #Add values for services
            setupntp 0
            services
            if [  -f   ${BASE}/etc/avahi/services/mysql.service     ]
                then
                            rm -f ${BASE}/etc/avahi/services/mysql.service
                            sudo sv restart  avahi
                fi

            install="libmysqlclient mysql-clients portmap nfs-utils avahi local-website $ser_install"
            remove="mysql mythweb$postfix $ser_remove"

            daemon_add="avahi portmap nfs-utils netfs lighttpd $ser_daemon_add "
            daemon_remove="mysql   mythbackend  $ser_daemon_remove"
    ;;
    esac
    #setupSyslog

fi

#apply these to ALL types




#systemtype

if [ x$showhost = "xtrue" ]
then
    setupmysqlnetwork
    setupmysql

    #setupremote
    #REMOTE FIND ME JM

    #grab the new dbhost key
    #/usr/bin/grabkey.py
fi

#audio

if [ x$showaudio = "xtrue" ]
then
    #setupsoundtype
    if [ ! x$Audiotype = xtinker  ]
    then
        ${MV_ROOT}/bin/soundconfig.sh -t real -i $Audiotype -d $SoundDevice
    fi
fi

#should always run
packages

#misc

if [ x$showmisc = "xtrue" ]
then
    setupzipcode
    settimezone
    setupcnfs
fi

#sleep
if [ x$showsleep = "xtrue" ]
then
    setupsleep
fi

if [ x$showX = "xtrue" ]
then
    ${MV_ROOT}/bin/xconfig.sh
fi

#advanced
if [ x$showadvanced = "xtrue" ]
then
    if [ ! x$showhost = "xtrue" ]
    then
        services
        install="none $ser_install"
        remove="none $ser_remove"
        daemon_add=" none $ser_daemon_add"
        daemon_remove="none $ser_daemon_remove"
        packages


        if [ x$SystemType = xMaster_backend ]
        then
            setuppacman link
            else
            setuppacman
        fi
    fi
    setupncidclient
    setupnciddaemon
    setupbootsplash
    setuphobbitclient
    #setupreceiver
    setupevrouter
    #setupblaster
    #setupLCD
    setupDNSMASQ



fi

if [ x$showscreensaver  = xtrue ]
then
     setupscreensaver
fi

if [ x$showir = xtrue ]
then
    . $MV_ROOT/bin/ir_config.sh
    setupir
fi

daemons
#add check for lcd, and restart if needed.

if [ x$RESTART_FE = xtrue ]
then
    reloadfe
fi





case $SystemType in
    Standalone)  smoltsystem=6
                    MVRELEASE="$MVRELEASE  (Standalone)"
                    ;;
Master_backend)
            if [ x$RunFrontend = x1 ]
            then
                smoltsystem=2
                MVRELEASE="$MVRELEASE  (MBE with Frontend)"
            else
                smoltsystem=1
                MVRELEASE="$MVRELEASE  (MBE)"
            fi
            ;;
Slave_backend)
            if [ x$RunFrontend = x1 ]
            then
                smoltsystem=5
                MVRELEASE="$MVRELEASE  (SLAVE  with Frontend)"
            else
                smoltsystem=5
                MVRELEASE="$MVRELEASE  (SLAVE)"
            fi
            ;;
    Frontend_only)
        smoltsystem=3
        MVRELEASE="$MVRELEASE  ( Frontend only)"
            ;;
esac
echo $MVRELEASE > /etc/os_myth_release
echo "systemtype=$smoltsystem" > /home/mythtv/.mythtv/smolt.info 2>/dev/null
echo "remote=$Remotetype" >> /home/mythtv/.mythtv/smolt.info 2>/dev/null