2022-07-15 11:34:43 +08:00

124 lines
2.3 KiB
Bash
Executable File

#!/bin/sh
# Author Xiaobao(xiaobao@linkease.com)
ACTION=${1}
WRLOCK=/var/lock/nastools.lock
LOGFILE=/var/log/nastools.log
LOGEND="XU6J03M6"
shift 1
IMAGE_NAME='jxxghp/nas-tools'
check_params() {
if [ -z "${WRLOCK}" ]; then
echo "lock file not found"
exit 1
fi
if [ -z "${LOGFILE}" ]; then
echo "logger file not found"
exit 1
fi
}
lock_run() {
local lock="$WRLOCK"
exec 300>$lock
flock -n 300 || return
do_run
flock -u 300
return
}
run_action() {
if check_params; then
lock_run
fi
}
do_install() {
local CONFIG_PATH=`uci get nastools.@nastools[0].config_path 2>/dev/null`
local HTTP_PORT=`uci get nastools.@nastools[0].http_port 2>/dev/null`
local AUTO_UPDATE=`uci get nastools.@nastools[0].auto_upgrade 2>/dev/null`
if [ -z "${CONFIG_PATH}" ]; then
echo "config path is empty!" >${LOGFILE}
exit 1
fi
if [ -z "${HTTP_PORT}" ]; then
HTTP_PORT=3003
fi
if [ -z "${AUTO_UPDATE}" ]; then
AUTO_UPDATE=0
fi
UPDATE_BOOL=false
if [ "${AUTO_UPDATE}" = "1" ]; then
UPDATE_BOOL=true
fi
echo "docker pull ${IMAGE_NAME}" >${LOGFILE}
docker pull ${IMAGE_NAME} >>${LOGFILE} 2>&1
docker rm -f nastools
local mntv="/mnt:/mnt"
mountpoint -q /mnt && mntv="$mntv:rslave"
docker run -d \
--name=nastools \
--dns=172.17.0.1 \
--hostname nastools \
-p ${HTTP_PORT}:3000 \
-v ${CONFIG_PATH}:/config -v ${mntv} \
-e UMASK=000 \
-e NASTOOL_AUTO_UPDATE=${UPDATE_BOOL} \
--restart unless-stopped \
$IMAGE_NAME >>${LOGFILE} 2>&1
RET=$?
if [ "${RET}" = "0" ]; then
# mark END, remove the log file
echo ${LOGEND} >> ${LOGFILE}
sleep 5
rm -f ${LOGFILE}
else
# reserve the log
echo "docker run ${IMAGE_NAME} failed" >>${LOGFILE}
echo ${LOGEND} >> ${LOGFILE}
fi
exit ${RET}
}
# run in lock
do_run() {
case ${ACTION} in
"install")
do_install
;;
"upgrade")
do_install
;;
esac
}
usage() {
echo "usage: wxedge sub-command"
echo "where sub-command is one of:"
echo " install Install the nastools"
echo " upgrade Upgrade the nastools"
echo " remove Remove the nastools"
}
case ${ACTION} in
"install")
run_action
;;
"upgrade")
run_action
;;
"remove")
docker rm -f nastools
;;
*)
usage
;;
esac