File: //var/packages/QuickConnect/scripts/start-stop-status
#!/bin/sh
# Copyright (c) 2000-2022 Synology Inc. All rights reserved.
PKG_PATH="/var/packages/QuickConnect"
PKG_TARGET_PATH="${PKG_PATH}/target"
DSM_MAJOR_VERSION=`get_key_value /etc.defaults/VERSION majorversion`
DSM_MINOR_VERSION=`get_key_value /etc.defaults/VERSION minorversion`
SHARED_OBJECT_FILE_DIR="/usr/syno/lib"
SHARED_OBJECT_FILE_NAME_PREFIX="libsynorelayd.so"
SHARED_OBJECT_FILE_NAME=${SHARED_OBJECT_FILE_NAME_PREFIX}
SHARED_OBJECT_FILE=${SHARED_OBJECT_FILE_NAME}.${DSM_MAJOR_VERSION}.${DSM_MINOR_VERSION}
PKG_SHARED_OBJECT_FILE=${PKG_TARGET_PATH}${SHARED_OBJECT_FILE_DIR}/${SHARED_OBJECT_FILE_NAME}.${DSM_MAJOR_VERSION}
SYNOSYSTEMCTL=/usr/syno/bin/synosystemctl
RELAYD_BIN_PATH="/usr/syno/sbin/synorelayd"
WEBRTCPROXY_BIN_PATH="/usr/syno/sbin/webrtcproxy"
WEBRTC_JS_PKG_DIR="${PKG_TARGET_PATH}/synowebrtc"
WEBRTC_CACHE_PKG_DIR="${WEBRTC_JS_PKG_DIR}/WebrtcCacher"
WEBROOT_DIR="/usr/syno/synoman"
WEBRTC_JSLIB_PATH="${WEBROOT_DIR}/scripts/synowebrtc"
DSM_USR_LIB_DIR="/usr/lib"
record_pkg_stop_event()
{
# Prepare parameters
CONFIG_FILE="/usr/syno/etc/synorelayd/synorelayd.conf"
if [[ ! -f $CONFIG_FILE ]]; then
echo "Configuration file not found: $CONFIG_FILE"
return
fi
SERVER_ID=$(jq -r '.serverID' "$CONFIG_FILE")
HOST=$(jq -r '.server_control.host' "$CONFIG_FILE")
KEY=$(synocloudserviceauth -a get)
if [[ -z "$SERVER_ID" || -z "$HOST" || -z "$KEY" ]]; then
echo "Invalid configuration: host, serverID, or key is missing"
return
fi
# Send the POST request using curl
RESPONSE=$(curl -s -X POST "https://"$HOST"/Serv.php" \
-H "Content-Type: application/json" \
--connect-timeout 5 -m 10 \
-d '{"version": 1,"command": "log_disconnect_event","serverID": "'$SERVER_ID'", "reason": "Package stop", "key": "'$KEY'"}')
}
start()
{
pushd ${DSM_USR_LIB_DIR}
ln -sf ${SHARED_OBJECT_FILE_NAME}.${DSM_MAJOR_VERSION} ${SHARED_OBJECT_FILE_NAME}
ln -sf ${PKG_SHARED_OBJECT_FILE} ${SHARED_OBJECT_FILE_NAME}.${DSM_MAJOR_VERSION}
popd
ln -sf ${PKG_TARGET_PATH}${RELAYD_BIN_PATH} ${RELAYD_BIN_PATH}
if [[ -L ${WEBRTC_JSLIB_PATH} || -d ${WEBRTC_JSLIB_PATH} ]]; then
rm -rf ${WEBRTC_JSLIB_PATH}
fi
ln -sf ${WEBRTC_JS_PKG_DIR} ${WEBRTC_JSLIB_PATH}
ln -sf ${PKG_TARGET_PATH}${WEBRTCPROXY_BIN_PATH} ${WEBRTCPROXY_BIN_PATH}
ln -sf ${WEBRTC_CACHE_PKG_DIR}/cacheSW.min.js ${WEBROOT_DIR}/cacheSW.min.js
ln -sf ${WEBRTC_CACHE_PKG_DIR}/cacheLauncher.html ${WEBROOT_DIR}/cacheLauncher.html
synosystemctl enable pkg-synorelayd.service
if [ `${RELAYD_BIN_PATH} -q status` == 'on' ]; then
${RELAYD_BIN_PATH} -q on
fi
if [ `${RELAYD_BIN_PATH} -c status` == 'on' ]; then
synosystemctl start pkg-synosupauthd
synosystemctl start pkg-synorelayd.service
fi
}
stop()
{
synosystemctl stop pkg-synorelayd.service
synosystemctl disable pkg-synorelayd.service
rm -f ${WEBRTC_JSLIB_PATH}
rm -f ${WEBRTCPROXY_BIN_PATH}
rm -f ${WEBROOT_DIR}/cacheSW.min.js
rm -f ${WEBROOT_DIR}/cacheLauncher.html
}
case $1 in
start)
start
exit 0
;;
stop)
record_pkg_stop_event
stop
exit 0
;;
status)
if [ -e ${APP_PATH} ]; then
exit 0
else
exit 1
fi
;;
esac