#!/bin/sh
. /var/packages/VideoStation/scripts/start-conflict-check
PACKAGE_DIR="/var/packages/${SYNOPKG_PKGNAME}"
PKG_APP_PATH="${PACKAGE_DIR}/target/ui"
PKG_INDEXDB_PATH="${PACKAGE_DIR}/target/indexdb"
APP_PATH="/usr/syno/synoman/webman/3rdparty/$SYNOPKG_PKGNAME"

DSM_INDEX_ADD="/usr/syno/bin/pkgindexer_add"
DSM_INDEX_DEL="/usr/syno/bin/pkgindexer_del"
SYNO_SERVICE_TOOL="/usr/syno/sbin/synoservice"

SYSTEM_WEBAPI_DIR="/usr/syno/synoman/webapi"
SYSTEM_REWRITE_RULE_DIR="/etc/httpd/sites-enabled"
PACKAGE_WEBAPI_DIR="${PACKAGE_DIR}/target/ui/webapi"
PACKAGE_WEBAPI5_DIR="${PACKAGE_DIR}/target/webapi5"
VIDEO_STATION_WEBAPI5_DESC="SYNO.VideoStation.lib"
PACKAGE_API_FILE="VideoStation.api"
PACKAGE_AUTH_FILE="videostation.auth"
REWRITE_RULE_DIR="${PACKAGE_DIR}/target/etc"
REWRITE_RULE_SUBTITLE_FILE="SYNO.SDS.VideoStation.Application.Subtitle.legacy.conf"
REWRITE_RULE_PUBLIC_SHARING="SYNO.SDS.VideoStation.Application.Sharing.legacy.conf"

CONTROLLER_NAME="VideoController"
CONTROLLER_DIR="${PACKAGE_DIR}/target/ui/controller"
CONTROLLER_WEBAPI_DIR="${CONTROLLER_DIR}/webapi"
CONTROLLER_API_FILE="VideoController.api"
DTV_SETTING_CONF="${PACKAGE_DIR}/etc/dtv_setting.conf"

CreateWebapiLink()
{
	ln -sf ${PACKAGE_WEBAPI_DIR}/${PACKAGE_AUTH_FILE} ${SYSTEM_WEBAPI_DIR}/${PACKAGE_AUTH_FILE}
	ln -sf ${PACKAGE_WEBAPI_DIR}/${PACKAGE_API_FILE} ${SYSTEM_WEBAPI_DIR}/${PACKAGE_API_FILE}
	ln -sf ${PACKAGE_WEBAPI_DIR} ${SYSTEM_WEBAPI_DIR}/${SYNOPKG_PKGNAME}
	ln -sf ${PACKAGE_WEBAPI5_DIR}/${VIDEO_STATION_WEBAPI5_DESC} ${SYSTEM_WEBAPI_DIR}/${VIDEO_STATION_WEBAPI5_DESC}
	ln -sf ${REWRITE_RULE_DIR}/${REWRITE_RULE_SUBTITLE_FILE} ${SYSTEM_REWRITE_RULE_DIR}/${REWRITE_RULE_SUBTITLE_FILE}
	ln -sf ${REWRITE_RULE_DIR}/${REWRITE_RULE_PUBLIC_SHARING} ${SYSTEM_REWRITE_RULE_DIR}/${REWRITE_RULE_PUBLIC_SHARING}

	ln -sf ${CONTROLLER_WEBAPI_DIR}/${CONTROLLER_API_FILE} ${SYSTEM_WEBAPI_DIR}/${CONTROLLER_API_FILE}
	ln -sf ${CONTROLLER_WEBAPI_DIR} ${SYSTEM_WEBAPI_DIR}/${CONTROLLER_NAME}
}

RemoveWebapiLink()
{
	rm -rf ${SYSTEM_WEBAPI_DIR}/${PACKAGE_AUTH_FILE}
	rm -rf ${SYSTEM_WEBAPI_DIR}/${PACKAGE_API_FILE}
	rm -rf ${SYSTEM_WEBAPI_DIR}/${SYNOPKG_PKGNAME}
	rm -rf ${SYSTEM_WEBAPI_DIR}/${VIDEO_STATION_WEBAPI5_DESC}
	rm -rf ${SYSTEM_REWRITE_RULE_DIR}/${REWRITE_RULE_SUBTITLE_FILE}
	rm -rf ${SYSTEM_REWRITE_RULE_DIR}/${REWRITE_RULE_PUBLIC_SHARING}

	rm -rf ${SYSTEM_WEBAPI_DIR}/${CONTROLLER_API_FILE}
	rm -rf ${SYSTEM_WEBAPI_DIR}/${CONTROLLER_NAME}
}

start()
{
	#check_and_update_db_recover
	${PACKAGE_DIR}/target/scripts/sql.sh

	CreateWebapiLink
	/usr/syno/bin/synoindex_package.sh enable $SYNOPKG_PKGNAME
	if [ -n "$SYNOPKG_PKG_STATUS" ]; then
		# setup video share
		${SYNO_SERVICE_TOOL} --setshare video
		# index help and add help to dsm
		${DSM_INDEX_ADD} ${PKG_APP_PATH}/index.conf ${PKG_INDEXDB_PATH}/appindexdb
		${DSM_INDEX_ADD} ${PKG_APP_PATH}/helptoc.conf ${PKG_INDEXDB_PATH}/helpindexdb

		if [ "START" == "$SYNOPKG_PKG_STATUS" ] || [ "INSTALL" == "$SYNOPKG_PKG_STATUS" ]; then
			${PACKAGE_DIR}/target/bin/synovideostation > /dev/null 2>&1
		fi
	fi
	${PACKAGE_DIR}/scripts/S86synovideoindexd.sh start
	${PACKAGE_DIR}/scripts/S86synovideometadatad.sh start
	${PACKAGE_DIR}/scripts/S86synovpcd.sh start
	if [ "yes" != "`/bin/get_key_value ${DTV_SETTING_CONF} disable_dtv`" ]; then
		${PACKAGE_DIR}/scripts/synodtv.sh start "$SYNOPKG_PKG_STATUS"
	fi

}

stop()
{
	${PACKAGE_DIR}/scripts/S86synovideoindexd.sh stop
	${PACKAGE_DIR}/scripts/S86synovideometadatad.sh stop
	${PACKAGE_DIR}/scripts/S86synovpcd.sh stop
	if [ "yes" != "`/bin/get_key_value ${DTV_SETTING_CONF} disable_dtv`" ]; then
		${PACKAGE_DIR}/scripts/synodtv.sh stop "$SYNOPKG_PKG_STATUS"
	fi

	/usr/syno/bin/synoindex_package.sh disable $SYNOPKG_PKGNAME
	if [ -n "$SYNOPKG_PKG_STATUS" ]; then
		${DSM_INDEX_DEL} ${PKG_APP_PATH}/index.conf ${PKG_INDEXDB_PATH}/appindexdb
		${DSM_INDEX_DEL} ${PKG_APP_PATH}/helptoc.conf ${PKG_INDEXDB_PATH}/helpindexdb

		RemoveWebapiLink
	fi
}

case $1 in
	start)
		# start routine
		if [ "yes" != "`/bin/get_key_value ${DTV_SETTING_CONF} disable_dtv`" ]; then
			start_conflict_check
			if [ "1" == "$?" ]; then
				if [ -f "${DTV_SETTING_CONF}" ]; then
					sed -i -e's/disable_dtv=no/disable_dtv=yes/' ${DTV_SETTING_CONF}
				else
					echo "disable_dtv=yes" > ${DTV_SETTING_CONF}
				fi
			fi
		fi
		start
		exit 0
	;;
	stop)
		stop
		exit 0
	;;
	status)
		if [ -e ${APP_PATH} ]; then
			exit 0
		else
			exit 1
		fi
	;;
	killall)
        ;;
	log)
		exit 0
	;;
esac

