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