File: //proc/25635/root/volume1/@appstore/CMS/scripts/start-stop-status
#!/bin/sh
# Copyright (c) 2000-2013 Synology Inc. All rights reserved.
if [ -z "$SYNOPKG_PKGNAME" ]; then
SYNOPKG_PKGNAME=CMS
fi
PACKAGE_DIR="/var/packages/${SYNOPKG_PKGNAME}"
PACKAGE_TARGET="${PACKAGE_DIR}/target"
PACKAGE_VAR="${PACKAGE_DIR}/var"
PKG_TOOLS_DIR="${PACKAGE_DIR}/target/tools"
PKG_TOOLS_SYNOCMSGPO="${PKG_TOOLS_DIR}/synocmsgpo"
APP_PATH="/usr/syno/synoman/webman/3rdparty/$SYNOPKG_PKGNAME"
SYNOCMSTASKD="pkg-CMS-synocmstaskd"
SYNOCMSD="pkg-CMS-synocmsd"
DB_FILE="${PACKAGE_VAR}/db/cms_db.sqlite"
DB_LOG_FILE="${PACKAGE_VAR}/db/cmslog_db.sqlite"
DB_NC_FILE="${PACKAGE_VAR}/db/nc_db.sqlite"
DB_TASK_FILE="${PACKAGE_VAR}/db/cmstask_db.sqlite"
DB_TABLE_CREATE_SQL_FILE="${PACKAGE_DIR}/scripts/sql/create_table.sql"
DB_LOG_TABLE_CREATE_SQL_FILE="${PACKAGE_DIR}/scripts/sql/create_log_table.sql"
DB_MSG_TABLE_CREATE_SQL_FILE="${PACKAGE_DIR}/scripts/sql/create_msg_table.sql"
DB_TASK_TABLE_CREATE_SQL_FILE="${PACKAGE_DIR}/scripts/sql/create_task_table.sql"
DB_GPO_VIEW_CREATE_SQL_FILE="${PACKAGE_DIR}/scripts/sql/create_gpo_view.sql"
CRON_JOB_CONF="${PACKAGE_TARGET}/config/CMS.cron"
CRON_JOB_INSTALL_PATH="/etc/cron.d/CMS"
UPDATE_CLIENT_CRED_SCRIPT="${PACKAGE_DIR}/scripts/CMSUpdateCred.sh"
RECOVER_UPDATE_FLAG=/tmp/CMS-recover-update
SYNOSYSTEMCTL=/usr/syno/bin/synosystemctl
CHMOD=/bin/chmod
CHOWN=/bin/chown
FIND=/bin/find
XARGS=/bin/xargs
ECHO=/bin/echo
SQLITE3=/usr/bin/sqlite3
CP=/bin/cp
RM=/bin/rm
LOGGER=/usr/bin/logger
SYNOCMSUTILS=/var/packages/CMS/target/tools/synocmsutils
CreateDBTable()
{
$SQLITE3 ${DB_FILE} < ${DB_TABLE_CREATE_SQL_FILE}
$SQLITE3 ${DB_FILE} < ${DB_GPO_VIEW_CREATE_SQL_FILE}
$SQLITE3 ${DB_LOG_FILE} < ${DB_LOG_TABLE_CREATE_SQL_FILE}
$SQLITE3 ${DB_NC_FILE} < ${DB_MSG_TABLE_CREATE_SQL_FILE}
$SQLITE3 ${DB_TASK_FILE} < ${DB_TASK_TABLE_CREATE_SQL_FILE}
$CHOWN root ${DB_FILE}
$CHOWN root ${DB_LOG_FILE}
$CHOWN root ${DB_NC_FILE}
$CHOWN root ${DB_TASK_FILE}
$CHMOD 600 ${DB_FILE}
$CHMOD 600 ${DB_LOG_FILE}
$CHMOD 600 ${DB_NC_FILE}
$CHMOD 600 ${DB_TASK_FILE}
}
ChmodExistConfig()
{
$CHMOD 0644 "${PACKAGE_VAR}/data/unread_notification" >/dev/null 2>&1
$CHOWN root "${PACKAGE_VAR}/data/unread_notification" >/dev/null 2>&1
for currDir in $($ECHO "dsinfo" "packages"); do
$CHMOD 0755 "${PACKAGE_VAR}/$currDir" >/dev/null 2>&1
$CHOWN root "${PACKAGE_VAR}/$currDir" >/dev/null 2>&1
$FIND "${PACKAGE_VAR}/$currDir" -type f | $XARGS $CHMOD 0644 >/dev/null 2>&1
$FIND "${PACKAGE_VAR}/$currDir" -type f | $XARGS $CHOWN root >/dev/null 2>&1
$FIND "${PACKAGE_VAR}/$currDir" -type d | $XARGS $CHMOD 0755 >/dev/null 2>&1
$FIND "${PACKAGE_VAR}/$currDir" -type d | $XARGS $CHOWN root >/dev/null 2>&1
done
}
InstallCronConfig()
{
$CP -f "${CRON_JOB_CONF}" "${CRON_JOB_INSTALL_PATH}"
$CHOWN root ${CRON_JOB_INSTALL_PATH}
$CHMOD 644 "${CRON_JOB_INSTALL_PATH}"
}
UninstallCronConfig()
{
if [ -f "${CRON_JOB_INSTALL_PATH}" ]; then
$RM -f "${CRON_JOB_INSTALL_PATH}"
fi
}
RecoverUpdate()
{
if ! $SYNOCMSUTILS --recover-update; then
$LOGGER -p err "Failed to do recover update"
return 1
fi
$RM "$RECOVER_UPDATE_FLAG"
}
start()
{
ChmodExistConfig
CreateDBTable
InstallCronConfig
if [ -e "$RECOVER_UPDATE_FLAG" ]; then
RecoverUpdate &
else
${UPDATE_CLIENT_CRED_SCRIPT} --post
fi
${PKG_TOOLS_SYNOCMSGPO} --notifyfetch
$SYNOSYSTEMCTL start "${SYNOCMSTASKD}" "${SYNOCMSD}"
}
stop()
{
$SYNOSYSTEMCTL stop "${SYNOCMSTASKD}" "${SYNOCMSD}"
UninstallCronConfig
}
case $1 in
start)
start
exit 0
;;
stop)
stop
exit 0
;;
status)
if [ -e ${APP_PATH} ] &&
[ "active" = "$($SYNOSYSTEMCTL get-active-status ${SYNOCMSTASKD})" ] &&
[ "active" = "$($SYNOSYSTEMCTL get-active-status ${SYNOCMSD})" ]; then
exit 0
else
exit 1
fi
;;
killall)
;;
log)
exit 0
;;
esac