#!/bin/sh
PRIVATE_LOCATION="/var/packages/CardDAVServer/target"
CAL_PID="/var/packages/CardDAVServer/target/var/run/caldavd.pid"
CALENDAR_MODULES="calendarserver contrib twext twistedcaldav txdav"
CALENDAR_TWISTED_PLUGIN="caldav.py kqueuereactor.py"
PYTHON_MODULE_PATH="/usr/local/lib/python2.7/site-packages"
PKG_INDEXDB_PATH="${PRIVATE_LOCATION}/indexdb"
PKG_APP_PATH="${PRIVATE_LOCATION}/app"
DSM_INDEX_ADD="/usr/syno/bin/pkgindexer_add"
DSM_INDEX_DEL="/usr/syno/bin/pkgindexer_del"
DSM_VERSION=${SYNOPKG_DSM_VERSION_MAJOR}${SYNOPKG_DSM_VERSION_MINOR}
PYTHON_PATH="/usr/bin/python"

stop_package()
{
	# 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
	${PRIVATE_LOCATION}/tools/calendarserver_start_stop.sh stop
	
	rm -f /usr/bin/twistd

	for module in $CALENDAR_MODULES; do
		rm -rf ${PYTHON_MODULE_PATH}/$module
	done
	for plugin in $CALENDAR_TWISTED_PLUGIN; do
		rm -rf ${PYTHON_MODULE_PATH}/twisted/plugins/$plugin
		rm -rf ${PYTHON_MODULE_PATH}/twisted/plugins/"${plugin}c"
	done

	rm -f /usr/local/etc/logrotate.d/calendarserver
	rm -f /usr/syno/synoman/webapi/SYNO.ContactAndCalendar.lib
	rm -f /usr/local/libexec/dirsvs_leave/synocarddav_dirsvs_hook.sh
	rm -f /usr/local/libexec/dirsvs_join/synocarddav_dirsvs_hook.sh
	exit 0
}
start_package()
{
	LIBC_NAME=`ls /lib | grep libc.so.`
	sed -i "s/@LIBC_NAME@/${LIBC_NAME}/g" /var/packages/CardDAVServer/target/usr/lib/python2.7/site-packages/twistedcaldav/util.py

	ln -sf /var/packages/PythonModule/target/usr/bin/twistd /usr/bin/twistd

	for module in $CALENDAR_MODULES; do
		ln -sf ${PRIVATE_LOCATION}/usr/lib/python2.7/site-packages/${module} ${PYTHON_MODULE_PATH}
	done
	
	ln -sf ${PRIVATE_LOCATION}/usr/lib/python2.7/site-packages/twisted/plugins/* ${PYTHON_MODULE_PATH}/twisted/plugins/
	ln -sf ${PRIVATE_LOCATION}/etc/calendarserver.logrotate /usr/local/etc/logrotate.d/calendarserver
	
	#install DB schema
	${PYTHON_PATH} ${PRIVATE_LOCATION}/usr/bin/calendarserver_bootstrap_database
	
	${PRIVATE_LOCATION}/tools/calendarserver_start_stop.sh start
	
	if [ ! -d /usr/local/libexec/dirsvs_leave ]; then
		mkdir -p /usr/local/libexec/dirsvs_leave
	fi
	if [ ! -d /usr/local/libexec/dirsvs_join ]; then
		mkdir -p /usr/local/libexec/dirsvs_join
	fi

	ln -sf ${PRIVATE_LOCATION}/app/webapi/SYNO.ContactAndCalendar.lib /usr/syno/synoman/webapi/SYNO.ContactAndCalendar.lib
	ln -sf ${PRIVATE_LOCATION}/tools/synocarddav_dirsvs_hook.sh /usr/local/libexec/dirsvs_leave
	ln -sf ${PRIVATE_LOCATION}/tools/synocarddav_dirsvs_hook.sh /usr/local/libexec/dirsvs_join

	# 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
	exit 0
}

case $1 in
        start)
                start_package
                exit 0
                ;;
        stop)
                stop_package
                exit 0
                ;;
        status)
                if [ -f ${CAL_PID} ]; then
                        exit 0
                else
                        exit 1
                fi
                ;;
        log)
                exit 0
                ;;
esac

