150 lines
4.7 KiB
Bash
Executable File
150 lines
4.7 KiB
Bash
Executable File
#!/bin/sh
|
|
CONF=/etc/config/qpkg.conf
|
|
QPKG_NAME="RoonServer"
|
|
QPKG_ROOT=`/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF}`
|
|
|
|
QCS_NAME="container-station"
|
|
QCS_QPKG_DIR=$(/sbin/getcfg $QCS_NAME Install_Path -f $CONF)
|
|
DOCKER_CMD=$QCS_QPKG_DIR/bin/system-docker
|
|
CONT_NAME="qnap-roonserver"
|
|
|
|
WEB_PATH="/home/httpd"
|
|
WEBUI=$(/sbin/getcfg $QPKG_NAME webUI -f ${CONF});
|
|
|
|
ROONONNAS_DIR=`/sbin/getcfg $QPKG_NAME DB_Path -f /etc/config/qpkg.conf`
|
|
ROON_DATAROOT="${ROONONNAS_DIR}/RoonOnNAS"
|
|
ROON_TMP_DIR="${QPKG_ROOT}/tmp"
|
|
ROON_ID_DIR="${QPKG_ROOT}/id"
|
|
|
|
QNAP_QTS_VER=$(/sbin/getcfg system version)
|
|
QNAP_QTS_BUILD=$(/sbin/getcfg system 'Build Number')
|
|
QNAP_MEMTOTAL=`awk '/MemTotal/ {print $2}' /proc/meminfo`
|
|
QNAP_MEMFREE=`awk '/MemFree/ {print $2}' /proc/meminfo`
|
|
QPKG_VERSION=`/sbin/getcfg $QPKG_NAME Version -f ${CONF}`
|
|
MAJOR_QTS_VER=`echo "$QNAP_QTS_VER" | tr -d '.' | cut -c1-2`
|
|
ARCH=$(uname -m)
|
|
|
|
QNAP_MODEL=`/sbin/getsysinfo model`
|
|
QNAP_SERIAL=`/sbin/get_hwsn`
|
|
ROON_DATABASE_DIR_FS=`df -PThi "${ROON_DATAROOT}" | awk '{print $2}' | tail -1`
|
|
ROON_DATABASE_DIR_FREE_INODES=`df -PThi "${ROON_DATAROOT}" | awk '{print $5}' | tail -1`
|
|
ROON_FFMPEG_DIR="${ROON_DATAROOT}/bin"
|
|
ROON_LOG_FILE="${ROON_DATAROOT}/RoonOnNAS.log.txt"
|
|
|
|
ST_COLOR="\033[38;5;34m"
|
|
HL_COLOR="\033[38;5;197m"
|
|
REG_COLOR="\033[0m"
|
|
|
|
## Log Function
|
|
echolog () {
|
|
TIMESTAMP=$(date +%d.%m.%y-%H:%M:%S)
|
|
if [[ $# == 2 ]]; then
|
|
PARAMETER1=$1
|
|
PARAMETER2=$2
|
|
echo -e "${ST_COLOR}${TIMESTAMP}${REG_COLOR} --- ${HL_COLOR}${PARAMETER1}:${REG_COLOR} ${PARAMETER2}"
|
|
echo "${TIMESTAMP} --- ${PARAMETER1}: ${PARAMETER2}" >> "$ROON_LOG_FILE"
|
|
elif [[ $# == 1 ]]; then
|
|
PARAMETER1=$1
|
|
echo -e "${ST_COLOR}${TIMESTAMP}${REG_COLOR} --- ${PARAMETER1}"
|
|
echo "${TIMESTAMP} --- ${PARAMETER1}" >> "$ROON_LOG_FILE"
|
|
else
|
|
echo -e "The echolog function requires 1 or 2 parameters."
|
|
fi
|
|
}
|
|
|
|
info ()
|
|
{
|
|
## Echoing System Info
|
|
echolog "ROON_DATABASE_DIR" "${ROON_DATAROOT} - [`[ -d \"${ROON_DATAROOT}\" ] && echo \"available\" || echo \"not available\"`]"
|
|
echolog "ROON_DATABASE_DIR_FS" "${ROON_DATABASE_DIR_FS}"
|
|
echolog "ROON_ID_DIR" "$ROON_ID_DIR - [`[ -d \"$ROON_ID_DIR\" ] && echo \"available\" || echo \"not available\"`]"
|
|
echolog "Free Inodes" "${ROON_DATABASE_DIR_FREE_INODES}"
|
|
echolog "ROON_DIR" "${QPKG_ROOT}"
|
|
echolog "Model" "${QNAP_MODEL}"
|
|
echolog "Architecture" "${ARCH}"
|
|
echolog "Total Memory" "${QNAP_MEMTOTAL}"
|
|
echolog "Available Memory" "${QNAP_MEMFREE}"
|
|
echolog "QTS Version" "${QNAP_QTS_VER} - Build: ${QNAP_QTS_BUILD}"
|
|
echolog "PKG Version" "${QPKG_VERSION}"
|
|
echolog "Hostname" "${HOSTNAME}"
|
|
}
|
|
|
|
RoonOnNAS_folderCheck ()
|
|
{
|
|
if [ -d "${ROONONNAS_DIR}" ]; then
|
|
[ -d "${ROONONNAS_DIR}/RoonOnNAS" ] || mkdir "${ROONONNAS_DIR}/RoonOnNAS"
|
|
[ -d "${ROONONNAS_DIR}/RoonOnNAS/bin" ] || mkdir "${ROONONNAS_DIR}/RoonOnNAS/bin"
|
|
fi
|
|
}
|
|
|
|
start_RoonServer () {
|
|
if [ "${ROON_DATAROOT}" != "/RoonOnNAS" ] && [ -d "${ROON_DATAROOT}" ]; then
|
|
|
|
export ROON_DATAROOT
|
|
export ROON_ID_DIR
|
|
|
|
export QNAP_MODEL
|
|
export QNAP_SERIAL
|
|
export QNAP_QTS_VER
|
|
|
|
## Creating required directories, if they do not exist
|
|
[ -d "$ROON_ID_DIR" ] || mkdir "$ROON_ID_DIR"
|
|
[ -d "$ROON_TMP_DIR" ] || mkdir "$ROON_TMP_DIR"
|
|
|
|
${DOCKER_CMD} compose -f $QPKG_ROOT/docker/docker-compose.yml -f $QPKG_ROOT/docker/qnap.yml up -d
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
start_daemon ()
|
|
{
|
|
info
|
|
#Launch the service in the background if RoonServer share exists.
|
|
ln -sfn "${QPKG_ROOT}/web" "${WEB_PATH}${WEBUI}"
|
|
start_RoonServer
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
|
|
RoonOnNAS_folderCheck
|
|
if [ "$ENABLED" != "TRUE" ]; then
|
|
echolog "$QPKG_NAME is disabled."
|
|
exit 1
|
|
fi
|
|
if [ -z `$DOCKER_CMD compose ps -q $CONT_NAME` ] || [ -z `$DOCKER_CMD ps -q --no-trunc | grep $($DOCKER_CMD compose ps -q $CONT_NAME)` ]; then
|
|
start_daemon
|
|
else
|
|
echolog "${QPKG_NAME} is already running with..."
|
|
fi
|
|
;;
|
|
|
|
stop)
|
|
if [ -z `$DOCKER_CMD compose ps -q $CONT_NAME` ] || [ -z `$DOCKER_CMD ps -q --no-trunc | grep $($DOCKER_CMD compose ps -q $CONT_NAME)` ]; then
|
|
echolog "${QPKG_NAME} is not running."
|
|
else
|
|
echolog "Stopping RoonServer..."
|
|
${DOCKER_CMD} compose -f $QPKG_ROOT/docker/docker-compose.yml -f $QPKG_ROOT/docker/qnap.yml down
|
|
if [[ $2 != "keepwebalive" ]]; then
|
|
rm -rf "${QPKG_ROOT}/web/tmp"/*
|
|
rm "${WEB_PATH}${WEBUI}"
|
|
fi
|
|
echolog "RoonServer has been stopped."
|
|
fi
|
|
${DOCKER_CMD} compose -f $QPKG_ROOT/docker/docker-compose.yml -f $QPKG_ROOT/docker/qnap.yml down
|
|
;;
|
|
|
|
restart)
|
|
isRestart=true
|
|
$0 stop
|
|
$0 start
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 {start|stop|restart}"
|
|
exit 1
|
|
esac
|
|
|
|
exit 0
|