#!/bin/sh
# Copyright (c) 2000-2012 Synology Inc. All rights reserved.

# customized items of package
if [ -z "$SYNOPKG_PKGNAME" ]; then
	# prior DSM 3.2, start script will be run without environment variable
	#  at boot time, thus we need a workaround to gather name and version info
	PACKAGE_NAME="DownloadStation"
	PACKAGE_VER=`get_key_value "/var/packages/${PACKAGE_NAME}/INFO" "version"`
else
	PACKAGE_NAME=$SYNOPKG_PKGNAME
	PACKAGE_VER=$SYNOPKG_PKGVER
fi

SCRIPTSPATH="/var/packages/${PACKAGE_NAME}/target/scripts"
APP_PATH="/usr/syno/synoman/webman/3rdparty/$PACKAGE_NAME"

LIMIT_CONFIG="/etc/synopackageslimit.conf"
DSM_INDEX_ADD="/usr/syno/bin/pkgindexer_add"
DSM_INDEX_DEL="/usr/syno/bin/pkgindexer_del"
PACKAGE_DIR="/var/packages/${PACKAGE_NAME}"
PKG_APP_PATH="${PACKAGE_DIR}/target/ui"
PKG_INDEXDB_PATH="${PACKAGE_DIR}/target/indexdb"
PACKAGE_ENABLED="${PACKAGE_DIR}/enabled"
PACKAGE_LIMIT=`get_key_value ${LIMIT_CONFIG} ${PACKAGE_NAME}`
SYNO_SERVICE_TOOL="/usr/syno/sbin/synoservice"

SYSTEM_WEBAPI_DIR="/usr/syno/synoman/webapi"
PACKAGE_WEBAPI_DIR="${PACKAGE_DIR}/target/webapi"
PACKAGE_API_FILE="DownloadStation.api"
PACKAGE_AUTH_FILE="downloadstation.auth"
AUTH_API_FILE="Auth.api"
WEBAPIV5_TASK_LIB="SYNO.DownloadStation2.Task.lib"
WEBAPIV5_BT_TASK_LIB="SYNO.DownloadStation2.Task.BT.lib"
WEBAPIV5_THUMBNAIL_LIB="SYNO.DownloadStation2.Thumbnail.lib"

pkg_get_dsm_version() {
	local version_file="/etc.defaults/VERSION"

	if [ ! -f "$version_file" ]; then
		echo "pkg_get_dsm_version: can not find version file '$version_file'"
		return 1
	fi
	local buildnumber=`grep -s ^buildnumber ${version_file} | head -1 | awk -F \" '{print $2}' | sed 's/ //g'`
	echo ${buildnumber}
}

DSM_BUILD_NUM=$(pkg_get_dsm_version)
AUTH_API_MIN_SUPPORT=2239

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}/${PACKAGE_NAME}

	if [ ${DSM_BUILD_NUM} -lt ${AUTH_API_MIN_SUPPORT} ]; then
		ln -sf ${PACKAGE_WEBAPI_DIR}/${AUTH_API_FILE} ${SYSTEM_WEBAPI_DIR}/${AUTH_API_FILE}
	fi

	ln -sf ${PACKAGE_WEBAPI_DIR}/${WEBAPIV5_TASK_LIB} ${SYSTEM_WEBAPI_DIR}/${WEBAPIV5_TASK_LIB}
	ln -sf ${PACKAGE_WEBAPI_DIR}/${WEBAPIV5_BT_TASK_LIB} ${SYSTEM_WEBAPI_DIR}/${WEBAPIV5_BT_TASK_LIB}
	ln -sf ${PACKAGE_WEBAPI_DIR}/${WEBAPIV5_THUMBNAIL_LIB} ${SYSTEM_WEBAPI_DIR}/${WEBAPIV5_THUMBNAIL_LIB}
}

RemoveWebapiLink()
{
	rm -rf ${SYSTEM_WEBAPI_DIR}/${PACKAGE_AUTH_FILE}
	rm -rf ${SYSTEM_WEBAPI_DIR}/${PACKAGE_API_FILE}
	rm -rf ${SYSTEM_WEBAPI_DIR}/${PACKAGE_NAME}

	if [ ${DSM_BUILD_NUM} -lt ${AUTH_API_MIN_SUPPORT} ]; then
		rm -rf ${SYSTEM_WEBAPI_DIR}/${AUTH_API_FILE}
	fi

	rm -rf ${SYSTEM_WEBAPI_DIR}/${WEBAPIV5_TASK_LIB}
	rm -rf ${SYSTEM_WEBAPI_DIR}/${WEBAPIV5_BT_TASK_LIB}
	rm -rf ${SYSTEM_WEBAPI_DIR}/${WEBAPIV5_THUMBNAIL_LIB}
}

start()
{
	# create @download folder and service link
	${SYNO_SERVICE_TOOL} --setshare download

	rm ${PACKAGE_DIR}/etc/download/settings.json
	rm ${PACKAGE_DIR}/etc/amule/statistics.dat

	if [ ! -f "/lib/libsynotrigger.so" ]; then
		ln -s "${PACKAGE_DIR}"/target/lib/libsynotrigger.so /lib/libsynotrigger.so
	fi

	# start services
	$SCRIPTSPATH/S25download.sh start

	if [ -n "$SYNOPKG_PKG_STATUS" ]; then
		# 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

		$SCRIPTSPATH/ReloadThirdPartyPath.sh add
		$SCRIPTSPATH/ReloadThirdPartyPath.sh hupapache
	fi

	CreateWebapiLink
}

stop()
{
	RemoveWebapiLink

	# stop services
	$SCRIPTSPATH/S25download.sh stop

	if [ -n "$SYNOPKG_PKG_STATUS" ]; then
		# remove index and help entry
		${DSM_INDEX_DEL} ${PKG_APP_PATH}/index.conf ${PKG_INDEXDB_PATH}/appindexdb
		${DSM_INDEX_DEL} ${PKG_APP_PATH}/helptoc.conf ${PKG_INDEXDB_PATH}/helpindexdb

		$SCRIPTSPATH/ReloadThirdPartyPath.sh delete
		if [ "UPGRADE" != "$SYNOPKG_PKG_STATUS" ]; then
			$SCRIPTSPATH/ReloadThirdPartyPath.sh hupapache &
		fi
	fi

}

case $1 in
	start)
		# check enabled
		if [ ! -f $PACKAGE_ENABLED ]; then
			exit 0;
		fi

		# start routine
		start

		exit 0
	;;
	stop)
		stop
		exit 0
	;;
	status)
		if [ -e ${APP_PATH} ]; then
			exit 0
		else
			exit 1
		fi
	;;
	killall)
        ;;
	log)
		exit 0
	;;
esac

