#!/bin/sh

PKGSTATUSFILE=/etc/zyxel/pkg_conf/status
PKGNAME=myZyXELcloud-Agent
PKGPATH=$(grep ${PKGNAME} ${PKGSTATUSFILE} | grep "Installed-Rule" | awk -F":" '{print $2}' | sed 's/\/$//g' | sed 's/ //g')

if [ -z "$PKGPATH" ];then
	PKGPATH="/i-data/sysvol/.PKG/myZyXELcloud-Agent"
fi

CONTROLFILE="${PKGPATH}/zypkg_conf/info/${PKGNAME}.control"
THUMBNAIL_STATUSFILE=${PKGPATH}/share/thumb_status
export CLOUDAGENT_INSTALL_DIR=$PKGPATH

# thumbnail_status is a global variable
get_thumbnail_status() {
	thumbnail_status="disable"
	if [ -f ${THUMBNAIL_STATUSFILE} ]; then
		thumbnail_status=$(cat ${THUMBNAIL_STATUSFILE})
	else
		# status file not exists, assume enable
		thumbnail_status="enable"
	fi
}

start_thumbnail() {
	$PKGPATH/bin/start_to_monitor_share.py &	
}

stop_thumbnail() {
	pgrep -f start_to_monitor_share.py | xargs kill -9
	pgrep -f create_thumbnail_under_dir.py | xargs kill -9
	pgrep -f create_thumbnail.py | xargs kill -9
	killall zyxel_file_monitor
	killall zyxel_thumb_creator
	killall identify
	killall ffmpeg
}

enable_thumbnail() {
	get_thumbnail_status
	if [ "$thumbnail_status" == "disable" ]; then
		start_thumbnail
		echo "enable" > ${THUMBNAIL_STATUSFILE}
	fi
}

disable_thumbnail() {
	get_thumbnail_status
	if [ "$thumbnail_status" == "enable" ]; then
		stop_thumbnail
		echo "disable" > ${THUMBNAIL_STATUSFILE}
	fi
}

# add pkg status flag file
STATUS_FILE=${PKGPATH}/share/pkg_status

if [ "$1" == "startup" ]; then
	# write agent status flag to enable
	echo "Enabled" > $STATUS_FILE

	mkdir -p /tmp/.cloudagent
	cp $PKGPATH/share/zyxel_cloud_agent_configure.conf -a /tmp
	cp $PKGPATH/share/zyxel_cloud_agent_cert.conf -a /tmp
	restful_server_url=$(cat /tmp/zyxel_cloud_agent_configure.conf | awk -F'=' '{print $2}')
	echo $PKGPATH > /tmp/.cloudagent/agent_path
	server_url=$(echo $restful_server_url | cut -d'/' -f1,2,3)
	# set token validation url
	echo $server_url/user/1/token > /tmp/.cloudagent/validate_api
	
	# set mail mapping url
	echo $server_url/user/1/email > /tmp/.cloudagent/mail_api

	# set delete user binding url
	echo $server_url/resource/1/permission > /tmp/.cloudagent/delete_binding_api

	# set update online status url
	echo $server_url/device/1/online_status > /tmp/.cloudagent/online_status_api

	# start thumbnail generator if thumbnail is enabled
	get_thumbnail_status
	if [ "$thumbnail_status" == "enable" ]; then
		start_thumbnail
	fi

	$PKGPATH/bin/start_cloudagent.sh &
	monitor_process=$(pgrep -f xmpp_client_monitor)
	if [ -z "$monitor_process" ];then
		$PKGPATH/bin/xmpp_client_monitor.sh &
	fi
	
elif [ "$1" == "shutdown" ]; then
	# add wake on lan status check and send status to portal
	WOL_STATUS=$(zyshclient -p 150 -e "configure terminal wol getWolStatus" | awk '{print $2}')
	# g => WOL enabled, d: WOL disabled
	if [ "$WOL_STATUS" == "d" ];then
		$PKGPATH/bin/zyxel_update_online_status 0 0
	else
		$PKGPATH/bin/zyxel_update_online_status 0 1
	fi

	killall -9 xmpp_client_monitor.sh
	killall -9 start_cloudagent.sh
	killall -9 set_upnp_to_router.sh
	killall -9 get_xmpp_info.sh
	killall -9 zyxel_device_register	
    killall -9 zyxel_xmpp_client
	killall -9 zyxel_enet_bridge

	stop_thumbnail

	killall -9 check_binding_failed_list.sh
	killall -9 delete_user_binding_has_no_share.sh
	killall -9 delete_user_binding
	
elif [ "$1" == "getlink" ]; then
        echo "https://mycloud.zyxel.com"
elif [ "$1" == "status" ]; then
	if [ -f $STATUS_FILE ]; then
		echo `cat $STATUS_FILE`
	else
		echo "Enabled"
	fi	
elif [ "$1" == "enable" ]; then
	echo "Enabled" > $STATUS_FILE
elif [ "$1" == "disable" ]; then
	echo "Disabled" > $STATUS_FILE
elif [ "$1" == "version" ]; then
	VERSION=`grep "Version:" ${CONTROLFILE} | awk -F "zypkg" '{print $2}'`
	return ${VERSION}
elif [ "$1" == "enable_thumbnail" ]; then
	enable_thumbnail
elif [ "$1" == "disable_thumbnail" ]; then
	disable_thumbnail
fi


exit 0

