HEX
Server: Apache/2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
System: Linux Kou-Etsu-Dou 4.4.59+ #25556 SMP PREEMPT Thu Mar 4 18:03:46 CST 2021 x86_64
User: hosam (1026)
PHP: 7.2.29
Disabled: NONE
Upload Files
File: //var/packages/SynologyApplicationService/scripts/start-stop-status
#!/bin/sh

. /var/packages/SynologyApplicationService/scripts/utils
. /var/packages/SynologyApplicationService/scripts/db_functions

killDaemons()
{
	killall session_watcher
	killall notification_send
	rm -f  /var/run/notification_send*
	rm -f /var/run/SynologyApplicationService/session_watcher*
}

prepareHookDir()
{
	local dir=$1
	rm -rf "${dir}"
	mkdir -p "${dir}"
	chown SynologyApplicationService:SynologyApplicationService "${dir}"
	chmod 755 "${dir}"
}

checkAndRegenVapidSendKey()
{
	NODE_PACKAGE=Node.js_v12
	NODE_BIN="/var/packages/$NODE_PACKAGE/target/usr/local/bin/node"
	PUBLIC_KEY="/usr/syno/etc/packages/SynologyApplicationService/vapid/public.key"
	PRIVATE_KEY="/usr/syno/etc/packages/SynologyApplicationService/vapid/private.key"

	# if public key or private key not exists, re-gen keys & delete existing browser push pairs
	if [ ! -s $PUBLIC_KEY ] || [ ! -s $PRIVATE_KEY ]; then
		$NODE_BIN /var/packages/SynologyApplicationService/target/node_libs/GenVAPIDKey.js
		/bin/sqlite3 /usr/syno/etc/notification/notification_db_daemon.sqlite "DELETE FROM devices WHERE type = 'browser_webpush';"
	fi
}

startFn()
{
	SynoSetVolume
	# Check DB
	if ! CreateSchema || ! UpdateSchema; then
		return 1
	fi

	if [ ! -d "/var/run/SynologyApplicationService" ]; then
		/bin/mkdir -p "/var/run/SynologyApplicationService"
	fi
	killDaemons

	if [ ! -d "/usr/local/etc/nginx/conf.d" ]; then
		/bin/mkdir -p "/usr/local/etc/nginx/conf.d"
	fi
	if [ -L "/usr/local/etc/nginx/conf.d/dsm.SynologyApplicationService.conf" ]; then
		rm /usr/local/etc/nginx/conf.d/dsm.SynologyApplicationService.conf
	fi
	ln -sf /var/packages/SynologyApplicationService/target/etc/www/dsm.SynologyApplicationService.conf /usr/local/etc/nginx/conf.d/dsm.SynologyApplicationService.conf
	/bin/nginx -s reload

	prepareHookDir "/var/packages/SynologyApplicationService/target/hook/"
	prepareHookDir "/var/packages/SynologyApplicationService/target/hook/profile_change/"

	SynoService status pgsql
	if (( $? != 0 )); then
		echo "PostgresSQL is not running" > "$SYNOPKG_TEMP_LOGFILE"
		return 1
	fi

	SynoService start pkg-SynologyApplicationService-notification_send "test -S /var/run/notification_send.sock"
	if (( $? != 0 )); then
		echo "Failed to start service [notification send]" > "$SYNOPKG_TEMP_LOGFILE"
		return 1
	fi

	SynoService start pkg-SynologyApplicationService-pgbouncer "test -S /run/SynologyApplicationService/.s.PGSQL.6432"
	if (( $? != 0 )); then
		echo "Failed to start service [pgbouncer]" > "$SYNOPKG_TEMP_LOGFILE"
		return 1
	fi

	checkAndRegenVapidSendKey
	SynoService start pkg-SynologyApplicationService-VapidSendServer "test -S /var/run/vapid_send_server.sock"
	if (( $? != 0 )); then
		echo "Failed to start service [Vapid Send Server]" > "$SYNOPKG_TEMP_LOGFILE"
		return 1
	fi

	SynoService start pkg-SynologyApplicationService-session_watcher "test -S /var/run/SynologyApplicationService/session_watcher.sock"
	if (( $? != 0 )); then
		echo "Failed to start service [session watcher]" > "$SYNOPKG_TEMP_LOGFILE"
		return 1
	fi

	/usr/local/bin/synoscimprofile --migrate
	if [ -f /usr/syno/etc/packages/SynologyApplicationService/need_scim_generator_thumb ]; then
		/usr/local/bin/synoscimprofile --genthumb
		rm -f /usr/syno/etc/packages/SynologyApplicationService/need_scim_generator_thumb
	fi

	return 0
}

stopFn()
{
	if [ -f "/usr/local/etc/nginx/conf.d/dsm.SynologyApplicationService.conf" ]; then
		rm /usr/local/etc/nginx/conf.d/dsm.SynologyApplicationService.conf
	fi
	/bin/nginx -s reload

	SynoService stop pkg-SynologyApplicationService-notification_send
	SynoService stop pkg-SynologyApplicationService-pgbouncer
	SynoService stop pkg-SynologyApplicationService-VapidSendServer
	SynoService stop pkg-SynologyApplicationService-session_watcher

	killDaemons
	return 0
}

statusFn()
{
	if [ -f $PACKAGE_ENABLED ]; then
		SynoService status pkg-SynologyApplicationService-notification_send
		if (( $? != 0 )); then
			exit 1
		fi
		# SynoService status pkg-SynologyApplicationService-session_watcher
		# if (( $? != 0 )); then
		# 	exit 1
		# fi
		SynoService status pkg-SynologyApplicationService-pgbouncer
		if (( $? != 0 )); then
			exit 1
		fi
		exit 0
	else
		SynoService status pkg-SynologyApplicationService-notification_send
		if (( $? == 0 )); then
			exit 0
		fi
		# SynoService status pkg-SynologyApplicationService-session_watcher
		# if (( $? == 0 )); then
		# 	exit 0
		# fi
		SynoService status pkg-SynologyApplicationService-pgbouncer
		if (( $? == 0 )); then
			exit 0
		fi
		exit 1
	fi
}

case $1 in
	start)
		if [ ! -f $PACKAGE_ENABLED ]; then
			exit 0;
		fi
		startFn
		exit $?
	;;
	stop)
		stopFn
		if (( $? != 0 )); then
			exit 1
		fi
		exit $?
	;;
	status)
		statusFn
		exit $?
	;;
	*)
		exit 0
	;;
esac