#!/bin/bash
## dragino provision service

. /usr/local/share/libubox/jshn.sh

PWD=`pwd`

#### funtion #############

##### dragino auto provision

auto_provision() {
    sleep 15
    local PROVISION_SERVER="$(uci get -q system.@system[0].provision_server)"
    local CONFIG_ORIG=`uci get system.@system[0].config_ver`
    local PROVISION_KEY=`dragino-sid | grep OPTION | awk '{print $2}'`

    eval $(ifconfig eth0 | grep "inet " | awk -F "[ :.]+" '{printf("a=%s;b=%s;c=%s",$3,$4,$5);}')

    if [ "$PROVISION_SERVER" = "auto_net" ];then
            PROVISION_SERVER=http://$a.$b.$c.254
    fi

    local PROVISION_FILE=`eval cat /sys/class/net/eth0/address | awk -F':' '{print $1$2$3$4$5$6}'`
    local PROVISION_PATH="$PROVISION_SERVER/hp0c/provision/$PROVISION_FILE"

    #Get provision file
    cd /tmp

    curl -fsSL -o  $PROVISION_FILE $PROVISION_PATH

    [[ -n ${PROVISION_FILE} ]] || return

    #parse the provision file
    jshn -R $PROVISION_FILE

    json_load "$(cat $PROVISION_FILE)"
    json_get_var script "script"
    json_get_var config_ver "config_ver"
    json_get_var update_file "update_file"
    json_get_var key "key"

    # config version of the contrast
if [[ $PROVISION_KEY = $key ]]; then
	if [[ $CONFIG_ORIG -lt $config_ver ]]; then
	        uci set system.@system[0].config_ver=$config_ver
	        uci commit system
		echo 789
	        # if [ ! -z $update_file ]; then
	                # cd /tmp;wget $PROVISION_PATH/auto_update.tar.gz
	                # tar -xvpzf /tmp/auto_update.tar.gz -C /
	                # echo 123
	        # fi

	        # check the script
        	if [ ! -z $script ]; then
        	    local PROVISION_SCRIPT="$PROVISION_SERVER/hp0c/script/$script"
        	    curl -fsSL -o $script  $PROVISION_SCRIPT
        	    chmod +x $script
        	    ./$script
        	fi
    	else
		echo "Remote version is less than or equal to local version" > /tmp/provision.log
	fi

else
	echo "key error" > /tmp/provision.log
fi

    rm -f /tmp/$PROVISION_FILE /tmp/$script &> /dev/null

    #touch /root/.auto_done
    logger -t "Dragino-provision" "RUN auto provision service."
}

###### do someting ######

auto_provision

cd $PWD

exit

