#!/bin/bash
# startkiosk.sh

source /etc/openkiosk.conf

function check_conf() {
    debuglog "Checking configuration file for changes."
    new_conf_md5=`md5sum /etc/openkiosk.conf|cut -d " " -f1`
    debuglog "New config file checksum: $new_conf_md5"
    curr_conf_md5=`cat /home/customer/curr_conf_md5.txt`
    debuglog "Current config file checksum: $curr_conf_md5"
    diff <(echo $new_conf_md5) <(echo $curr_conf_md5) >/dev/null 2>&1
    if [ "$?" -eq "1" ]
    then
        debuglog "Config file has changed!"
        echo $new_conf_md5 > /home/customer/curr_conf_md5.txt
        debuglog "Killing browser"
        $KILL_CMD
        return 1
    else
        return 0
    fi
}

function check_url() {
    debuglog "Checking URL for changes"
    new_url_md5=`wget -q -o /dev/null -O - $TGT_URL|md5sum|cut -d " " -f1`
    debuglog "New URL checksum: $new_url_md5"
    curr_url_md5=`cat /home/customer/curr_url_md5.txt`
    debuglog "Current URL checksum: $curr_url_md5"
    diff <(echo $new_url_md5) <(echo $curr_url_md5) >/dev/null 2>&1
    if [ "$?" -eq "1" ]
    then
        debuglog "URL has changed!"
        echo $new_url_md5>/home/customer/curr_url_md5.txt
        debuglog "Killing browser"
        $KILL_CMD
        return 1
    else
        return 0
    fi
}

function debuglog() {
    if [ "$DEBUG" -eq "1" ]
    then
        if [ ! -e "/home/customer/startkiosk.log" ]
        then
            echo "startkiosk log started : "`date +%Y-%m-%d %H:%M:%S` > /home/customer/startkiosk.log
        fi
        echo `date +%H:%M:%S` "$1">>/home/customer/startkiosk.log
    fi
}

function set_blank_params() {
    if [ "$INHIBIT_BLANK" -eq "1" ]
    then
        xset s off
        xset -dpms
    else
        xset s off
        xset +dpms
        xset dpms $DSP_STBY_SEC $DSP_SUSP_SEC $DSP_OFF_SEC
    fi
}

function set_rot_params() {
    output_name=`xrandr --listactivemonitors|grep 0:|rev|cut -d " " -f1|rev`
    xrandr --output $output_name --rotate $ROTATION
}

openbox-session &
sleep 1
set_blank_params
$KILL_CMD
$CLEANUP_CMD

# start application
$APP_CMD &

sleep 3

new_url_md5=`wget -q -o /dev/null -O - $TGT_URL|md5sum|cut -d " " -f1`
echo $new_url_md5>/home/customer/curr_url_md5.txt
new_conf_md5=`md5sum /etc/openkiosk.conf|cut -d " " -f1`
echo $new_conf_md5 > /home/customer/curr_conf_md5.txt

while true
do

debuglog "Monitoring for URL and config file changes..."
# Pull in changes in the configuration file
debuglog "Reading config file"
source /etc/openkiosk.conf

if ! pgrep $ALIVE_STRING
then
     # relaunch application if it terminates
     debuglog "Restarting browser"
     $APP_CMD &
fi

if [ "$POLL_INTERVAL" -eq "0" ]
then
    sleep 1
    debuglog "Polling not enabled"
    if ! check_conf; then set_blank_params;set_rot_params;fi
else
    sleep $POLL_INTERVAL
    debuglog "Polling enabled"
    if ! check_conf; then set_blank_params;set_rot_params;fi
    check_url
fi
done

exit 0
