#!/bin/sh
# Copyright (c) 2000-2014 Synology Inc. All rights reserved.
echo ${SYNOPKG_PKGNAME}

#Include common scripts
SURVEILLANCE_INC_SCRP=/var/packages/SurveillanceStation/target/scripts/SurveillanceStationCommon.sh
. ${SURVEILLANCE_INC_SCRP}

# 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="SurveillanceStation"
	PACKAGE_VER=$(get_key_value "/var/packages/${PACKAGE_NAME}/INFO" "version")
else
	PACKAGE_NAME=$SYNOPKG_PKGNAME
	PACKAGE_VER=$SYNOPKG_PKGVER
fi

PACKAGE_DEST=$SYNOPKG_PKGDEST
PACKAGE_DIR="/var/packages/${PACKAGE_NAME}"
SCRIPTS_DIR="/var/packages/${PACKAGE_NAME}/target/scripts"
APP_PATH="/usr/syno/synoman/webman/3rdparty/$PACKAGE_NAME"
DSM_INDEX_ADD="/usr/syno/bin/pkgindexer_add"
DSM_INDEX_DEL="/usr/syno/bin/pkgindexer_del"
UI_PATH="/usr/syno/synoman/surveillance"
SCR_PATH="/usr/syno/synoman/scripts"
PKG_APP_PATH="${PACKAGE_DIR}/target/ui"
PKG_INDEXDB_PATH="${PACKAGE_DIR}/target/indexdb"
PACKAGE_ENABLED="${PACKAGE_DIR}/enabled"
SYNO_DATE_TOOL="/usr/syno/sbin/synodate"
SYNO_SERVICE_CFG_TOOL="/usr/syno/sbin/synoservicecfg"
RET_SYNO_SERVICE_ENABLED=1
DSM_STRINGS_FILE="/usr/syno/synoman/webman/texts/${SYNOPKG_DSM_LANGUAGE}/strings"
PKG_STRINGS_FILE="${PACKAGE_DIR}/target/ui/texts/${SYNOPKG_DSM_LANGUAGE}/strings"

SYSTEM_WEBAPI_DIR="/usr/syno/synoman/webapi"
PACKAGE_WEBAPI_DIR="${PACKAGE_DIR}/target/webapi"
PACKAGE_AUTH_FILE="surveillancestation.auth"
PACKAGE_API_FILE="SurveillanceStation.api"
PACKAGE_SURVEILLANCE_API_FILE="`/bin/ls -d ${PACKAGE_WEBAPI_DIR}/*/ | cut -d'/' -f7`"

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}"

	for each in ${PACKAGE_SURVEILLANCE_API_FILE}; do
		ln -sf ${PACKAGE_WEBAPI_DIR}/${each}/conf/*.lib ${SYSTEM_WEBAPI_DIR}/
	done

	ln -sf "${PACKAGE_WEBAPI_DIR}" "${SYSTEM_WEBAPI_DIR}/${PACKAGE_NAME}"
}

RemoveWebapiLink()
{
	rm -rf "${SYSTEM_WEBAPI_DIR}/${PACKAGE_AUTH_FILE}"
	rm -rf "${SYSTEM_WEBAPI_DIR}/${PACKAGE_API_FILE}"
	rm -rf ${SYSTEM_WEBAPI_DIR}/SYNO.SurveillanceStation.*.lib
	rm -rf "${SYSTEM_WEBAPI_DIR}/${PACKAGE_NAME}"
}

CheckNTPEnabled()
{
	${SYNO_SERVICE_CFG_TOOL} --is-enabled ntpd-server
	local Ret=$?

	if [ ${Ret} -ne ${RET_SYNO_SERVICE_ENABLED} ] && [ -x $SYNO_DATE_TOOL ]; then
		SSDebugLog "Run ntpd-server before ss starts."
		$SYNO_DATE_TOOL --startNTPServer
		echo "$(PkgGetString "${DSM_STRINGS_FILE}" time ss_enable_warning)" > $SYNOPKG_TEMP_LOGFILE
	fi
}

CheckSsdRunning()
{
	if [ -n "$(pidof ssd)" -a "x" = "x$SYNOPKG_PKG_STATUS" ]; then
		SSDebugLog "Surveillance Station is already running."
		exit 0
	fi
}

EnableApacheModule()
{
    local blEnable="$1"
    local ConfFile="ssliveview.alias.conf"
    local ModuleFile="mod_ssliveview.so"
    local ModuleSourceDir="${SS_TARGET_DIR}/ui/apache_module"
    local ConfSourcePath="${ModuleSourceDir}/${ConfFile}"
    local ModuleSourcePath="${ModuleSourceDir}/${ModuleFile}"
    local ConfInstallPath="/etc/httpd/sites-enabled/${ConfFile}"
    local ModuleInstallPath="/lib/httpd/modules/${ModuleFile}"

    rm -f ${ConfInstallPath}
    rm -f ${ModuleInstallPath}

    if [ true == ${blEnable} ]; then
	ln -s ${ConfSourcePath} ${ConfInstallPath}
	ln -s ${ModuleSourcePath} ${ModuleInstallPath}
    fi

    # Notify apache httpd to reload conf
    kill -SIGUSR1 `cat /run/httpd/httpd-sys.pid` > /dev/null
}

EnableHelpIndex()
{
	local blEnable="$1"
	local BinFile

	if [ true == ${blEnable} ]; then
		BinFile="${DSM_INDEX_ADD}"
	else
		BinFile="${DSM_INDEX_DEL}"
	fi

	${BinFile} ${PKG_APP_PATH}/index.conf ${PKG_INDEXDB_PATH}/appindexdb
}

CheckS82StartRet()
{
	local Ret=$1

	if [ 0 -ne "${Ret}" ]; then
		SSDebugLog "Failed to run S82surveillance.sh, ret: ${Ret}."
		exit 1
	fi
}

start()
{
	if [ ! -f $PACKAGE_ENABLED ]; then
		exit 0;
	fi

	CheckNTPEnabled
	CheckSsdRunning

	${SCRIPTS_DIR}/S82surveillance.sh start
	CheckS82StartRet $?

	EnableApacheModule true
	EnableHelpIndex true
	CreateWebapiLink

	exit 0
}

stop()
{
	RemoveWebapiLink
	EnableHelpIndex false
	EnableApacheModule false

	${SCRIPTS_DIR}/S82surveillance.sh stop
	
	exit 0
}

main()
{
	case $1 in
		start)
			SSDebugLog "start"
			start
			exit 0
		;;
		stop)
			SSDebugLog "stop"
			stop
			exit 0
		;;
		status)
			if [ -e ${APP_PATH} ]; then
				exit 0
			else
				exit 1
			fi
		;;
		killall)
		;;
		log)
			exit 0
		;;
	esac
}

main "$@"
