#!/bin/bash
MYTH_RUN_STATUS="1"
. /etc/profile
. /etc/systemconfig
shopt -s -o nounset
echo $@ >>  /tmp/wrapper.out
#TEMPLATES="/usr/share/templates/settings"
TEMPLATES="$TEMPLATES/settings"
TABLES="settings keybindings jumppoints"
MYTHDBUSER=mythtv
MYTHTVPASSWD=mythtv
declare -r OPTSTRING="c:e:t:d:h:s:a:z:Ho:n:j:"
Thistemplate=""
declare -i OVERRIDE=0
declare -i EVERYTHING=0

gen_xml="/tmp/generated.xml"

function ARG_ERR()  {
        if [  x$OPTARG = "x" ]
        then
            echo "$SWITCH NEEDS AND ARG"
            exit 11
        fi
}

function ALSADEVICE () {
#ALSA:hw:1,4
    if [ x$Audiotype = xALSA ]
    then
        SoundDevice=ALSA:$SoundDevice
        MixerDevice="ALSA:default"
    else
        MixerDevice="/dev/mixer"
    fi

}

function load_xml(){
    xml_file=$1
    mythutil --import-settings --infile $xml_file
    cat $xml_file
 }

function define_xml() {
xml_data=${1}
xml_hostname=${2}
xml_table=${3}
xml_value=${4}

cat >$gen_xml <<EOF

<!DOCTYPE mythutils_exported_settings>
<exported_xml>
 <record>
  <data>$xml_data</data>
  <hostname>$xml_hostname</hostname>
  <table>$xml_table</table>
  <value>$xml_value</value>
 </record>
</exported_xml>
EOF

}



if [ $# -eq 0 ]
then
    echo "Valid options are:"
    echo "  -c (save|save-default|restore|load|uhostname|BECONFIG|ZIP|ACCESSCONTROL)"
    echo "  -t (syssettings|hostsettings)"
    echo "  -d databasename"
    echo "  -h hostname"
    echo "  -s systemtype (master|slave|standalone|frontendonly)"
    echo "  -a ipaddress"
    echo "  -z zipcode"
    echo "  -o  override (only used upgrade installs)"
    exit 1
fi




while getopts "$OPTSTRING"  SWITCH
do
    case $SWITCH in
        #  \?)  echo "unkown option"
                #       exit 11 ;;
            c)   echo "$SWITCH"  "$OPTARG"
                    ARG_ERR
                    OPERATION=$OPTARG
                    ;;
            t) echo "$SWITCH"  "$OPTARG"
                    ARG_ERR
                    Thistemplate=$OPTARG

                    if  [  x$Thistemplate = x"syssettings"  ]
                    then
                            echo "template is syssettings"
                            loadhost=false

                    elif [  x$Thistemplate = x"hostsettings"  ]
                    then
                            echo "template is hostsettings"
                            Thistemplate=syssettings
                            loadhost=true

                    elif  [  x$Thistemplate = x"distro_default"  ]
                    then
                            echo "template is distro_default"
                            loadhost=false

                    elif [  x$Thistemplate = x"custom"  ]
                    then
                            echo "template is custom"
                    else
                            echo "invalid template name"
                            exit 1
                    fi
                    ;;

            d) echo "$SWITCH"  "$OPTARG"
                    ARG_ERR
                    if [ $OVERRIDE =  1 ]
                    then
                        ovdbhost=$OPTARG
                    else
                        dbhost=$OPTARG
                    fi
                    ;;
            h) echo "$SWITCH"  "$OPTARG"
                    ARG_ERR
                    if [ $OVERRIDE =  1 ]
                    then
                    oldhostname=$hostname
                        hostname=$OPTARG
                    else
                        hostname=$OPTARG
                fi

                                ;;
            s) echo "$SWITCH"  "$OPTARG"
                    ARG_ERR
                    SYSTEMTYPE=$OPTARG
                        ;;
            a) echo "$SWITCH"  "$OPTARG"
                    ARG_ERR
                    IP_ADDRESS=$OPTARG
                    ;;
            z) echo "$SWITCH"  "$OPTARG"
                ARG_ERR
                ZIPCODE=$OPTARG
                    ;;
            n) echo "$SWITCH"  "$OPTARG"
                  newhostname=$OPTARG
                ;;

            j) echo "$SWITCH"  "$OPTARG"
                oldhostname=$OPTARG
                ;;
        o)  OVERRIDE=1
                ;;

            esac
done

echo $OVERRIDE

case $OPERATION in

    restore)
        #used to restore settings from syssettings
        if  [ x$Thistemplate = "xdistro_default" ]
        then
            mythutil --restore-settings --groupname distro_default
        elif   [ -d $TEMPLATES/$Thistemplate ]
        then
            mythutil --import-settings --infile $TEMPLATES/$Thistemplate/syssettings.xml --hostname $hostname
        else
            echo "couldn't find $TEMPLATES/$Thistemplate"
        fi
    ;;

    save)
        #export settings from database to xml file
        if [ ! -d $TEMPLATES/$Thistemplate ]
        then
            mkdir -p $TEMPLATES/$Thistemplate
        fi
        mythutil --export-settings --outfile $TEMPLATES/$Thistemplate/syssettings.xml --generic

        ;;

    save-default)
        #export settings from database to xml file
        Thistemplate="system-default"
        if [ ! -d $TEMPLATES/$Thistemplate ]
        then
            mkdir -p $TEMPLATES/$Thistemplate
        fi
        mythutil --export-settings --outfile $TEMPLATES/$Thistemplate/distro_default.xml --distro-default

        ;;



    load)
        if [ x$Thistemplate = "xcustom" ]
        then
            define_xml $5 $hostname settings $6
            load_xml $gen_xml > /tmp/load_xml_custom.log

        else
            #this loads the distro default file, it's not active by any hosts
            Thistemplate="system-default"
            mythutil --import-settings --infile $TEMPLATES/$Thistemplate/distro_default.xml
        fi
        ;;

    ZMCONFIG)
         define_xml ${IP_ADDRESS} $hostname settings ZoneMinderServerIP
         load_xml $gen_xml
         define_xml "6548" $hostname settings ZoneMinderServerPort
         load_xml $gen_xml
         ;;

    BECONFIG)
            if [ $SYSTEMTYPE = "master" ]
            then
                define_xml ${IP_ADDRESS} $hostname settings BackendServerIP
                load_xml $gen_xml
                define_xml ${IP_ADDRESS} $hostname settings BackendServerAddr
                load_xml $gen_xml
                define_xml ${IP_ADDRESS} '' settings MasterServerIP
                load_xml $gen_xml

            fi

            if [ $SYSTEMTYPE = "slave" ]
            then
                define_xml ${IP_ADDRESS} $hostname settings BackendServerIP
                load_xml $gen_xml
                define_xml ${IP_ADDRESS} $hostname settings BackendServerAddr
                load_xml $gen_xml
            fi


            if [ $SYSTEMTYPE = "standalone" ]
            then
                define_xml "127.0.0.1" $hostname settings BackendServerIP
                load_xml $gen_xml
                define_xml "127.0.0.1" '' settings MasterServerIP
                load_xml $gen_xml
            fi

            if [ $SYSTEMTYPE = "frontendonly" ]
            then
                define_xml '' $hostname settings BackendServerIP
                load_xml $gen_xml
                define_xml '' $hostname settings BackendServerAddr
                load_xml $gen_xml
            fi


            ;;


    ZIP)
        define_xml $ZIPCODE $hostname settings locale
        load_xml $gen_xml
        #$MYSQLCMD_C "delete from settings where  value='locale' and  hostname=\"$hostname\";"
        #$MYSQLCMD_C "REPLACE INTO  settings set data='$ZIPCODE'  ,  value='locale' , hostname=\"$hostname\";"


            ;;
    MUSICFRONT)
            ALSADEVICE
            define_xml $SoundDevice $hostname settings AudioOutputDevice
            load_xml $gen_xml
            define_xml $MixerDevice $hostname settings MixerDevice
            load_xml $gen_xml

            #need to reload the settings.
            systemconfig.sh reloadfe
            ;;
    MUSICMYTH)
        ALSADEVICE
        define_xml $SoundDevice $hostname settings MusicOutputDevice
        load_xml $gen_xml

            ;;
    uhostname)
        #used when the hostname is changed.
        #
        #call myth_util  $oldhostname $hostname
        mythutil --change-hostname --new-host $newhostname  --old-host $oldhostname
        mythutil --import-settings --infile $TEMPLATES/$Thistemplate/syssettings.xml --hostname $newhostname
            ;;
    USERJOBALLOW)
        echo "UserJOBALLOW callremoved"

            ;;

    ACCESSCONTROL)
            LIST="Hostaccessnetwork Hostaccesshostype HostaccesshostypeSystemtype Hostaccessmisc Hostaccesssleep Hostaccessadvanced HostaccessadvancedX Hostaccesssound"

            for i in $LIST
            do
                define_xml 1 $hostname settings $i
                load_xml $gen_xml
            done

            LIST="HostaccesshostypeSystemtype Hostaccessuser"
            for i in $LIST
            do
                define_xml 0 $hostname settings $i
                load_xml $gen_xml
            done
            ;;
esac


