#!/bin/bash # kiosk_startkiosk source /etc/openkiosk.conf function set_commands() { source /etc/openkiosk.conf if [[ $TGT_URL == "test" ]] then # Enter test mode APP_CMD="xterm" ALIVE_STRING="xterm" KILL_CMD="pkill xterm" CLEANUP_CMD="sleep 1" debuglog "Entering test mode" elif echo "$TGT_URL" | grep -q '\.pdf$' then # The URL is a pdf file APP_CMD="viewpdf.sh $TGT_URL" ALIVE_STRING="xpdf" KILL_CMD="pkill xpdf" CLEANUP_CMD="kiosk_cleanup.sh" debuglog "URL is a pdf file. Command is $PDF_APP_CMD" else # Assume the URL returns HTML APP_CMD="viewhtml.sh $TGT_URL" ALIVE_STRING="chromium" KILL_CMD="pkill chromium" CLEANUP_CMD="kiosk_cleanup.sh" debuglog "URL is an HTML file. Command is $HTML_APP_CMD" fi } 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 /dev/shm/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 > /dev/shm/curr_conf_md5.txt debuglog "Killing application" $KILL_CMD $CLEANUP_CMD return 1 else return 0 fi } function check_url() { debuglog "Checking URL for changes" if [[ $TGT_URL == "test" ]] then return 0 fi if echo "$TGT_URL"|grep -q '^http' then new_url_md5=`wget -q -o /dev/null -O - $TGT_URL|md5sum|cut -d " " -f1` elif echo "$TGT_URL"|grep -q '^file' then filepath=$(echo "$TGT_URL"|cut -d":" -f2-) new_url_md5=`md5sum $filepath|cut -d " " -f1` else new_url_md5="" fi debuglog "New URL checksum: $new_url_md5" curr_url_md5=`cat /dev/shm/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>/dev/shm/curr_url_md5.txt debuglog "Killing application" $KILL_CMD $CLEANUP_CMD return 1 else return 0 fi } function debuglog() { if [ "$DEBUG" -eq "1" ] then if [ ! -e "/home/kioskuser/startkiosk.log" ] then echo "startkiosk log started : "`date +%Y-%m-%d %H:%M:%S` > /home/kioskuser/startkiosk.log fi echo `date +%H:%M:%S` "$1">>/home/kioskuser/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 "normal" sleep 1 xrandr --output $output_name --rotate $ROTATION } set_commands openbox-session & sleep 1 set_blank_params pkill xpdf pkill chromium pkill xterm kiosk_cleanup.sh # start application $APP_CMD & sleep 3 if echo "$TGT_URL"|grep -q '^http' then new_url_md5=`wget -q -o /dev/null -O - $TGT_URL|md5sum|cut -d " " -f1` elif echo "$TGT_URL"|grep -q '^file' then filepath=$(echo "$TGT_URL"|cut -d":" -f2-) new_url_md5=`md5sum $filepath|cut -d " " -f1` else new_url_md5="" fi echo $new_url_md5>/dev/shm/curr_url_md5.txt new_conf_md5=`md5sum /etc/openkiosk.conf|cut -d " " -f1` echo $new_conf_md5 > /dev/shm/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 with command $APP_CMD" $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 set_commands fi else sleep $POLL_INTERVAL debuglog "Polling enabled" if ! check_conf then set_blank_params set_rot_params set_commands fi check_url fi done exit 0