mirror of
https://github.com/rustdesk/rustdesk-server.git
synced 2024-12-18 13:37:47 +08:00
158 lines
4.2 KiB
Bash
Executable File
158 lines
4.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
|
|
sError="ERROR: "
|
|
[ ! -z "$SYNOPKG_PKGNAME" ] && sError="<br />${sError}"
|
|
TIMEOUT=120
|
|
PACKAGE_NAME="RustDesk Server"
|
|
PACKAGE_BASE="/var/packages/${PACKAGE_NAME}/target"
|
|
HBBR_BIN="${PACKAGE_BASE}/bin/hbbr"
|
|
HBBR_PORT=`synogetkeyvalue "${PACKAGE_BASE}/config/hbbr.conf" port`
|
|
HBBR_LOG="/var/log/hbbr.log"
|
|
HBBS_BIN="${PACKAGE_BASE}/bin/hbbs"
|
|
HBBS_PORT=`synogetkeyvalue "${PACKAGE_BASE}/config/hbbs.conf" port`
|
|
KEY=`synogetkeyvalue "${PACKAGE_BASE}/config/hbbs.conf" key`
|
|
HBBS_LOG="/var/log/hbbs.log"
|
|
PACKAGE_ENABLED="/var/packages/${PACKAGE_NAME}/enabled"
|
|
PS_CMD="/bin/ps -w"
|
|
DSM_MAJORVERSION=`synogetkeyvalue /etc.defaults/VERSION majorversion`
|
|
if [[ $DSM_MAJORVERSION -gt 5 ]]; then
|
|
PS_CMD="$PS_CMD -x"
|
|
fi
|
|
|
|
CheckIfDaemonAlive() {
|
|
local PID="$1"
|
|
PROCESS_ALIVE="0"
|
|
[ -z "$PID" ] && return 1
|
|
|
|
kill -0 "$PID"
|
|
[ "0" == "$?" ] && PROCESS_ALIVE="1"
|
|
}
|
|
|
|
running_hbbr() {
|
|
local PID=$(${PS_CMD} | sed -e 's/^[ \t]*//' | grep -v grep | grep hbbr | grep "${PACKAGE_NAME}" | head -n1 | cut -f1 -d' ')
|
|
CheckIfDaemonAlive $PID
|
|
[ "0" == "$PROCESS_ALIVE" ] && return 1
|
|
return 0
|
|
}
|
|
|
|
running_hbbs() {
|
|
local PID=$(${PS_CMD} | sed -e 's/^[ \t]*//' | grep -v grep | grep hbbs | grep "${PACKAGE_NAME}" | head -n1 | cut -f1 -d' ')
|
|
CheckIfDaemonAlive $PID
|
|
[ "0" == "$PROCESS_ALIVE" ] && return 1
|
|
return 0
|
|
}
|
|
|
|
start() {
|
|
[ "$SYNOPKG_TEMP_LOGFILE" == "" ] && SYNOPKG_TEMP_LOGFILE="/var/log/rustdeskserver.start.log"
|
|
LANG=C cd "$PACKAGE_BASE" && (nohup "$HBBR_BIN" -p $HBBR_PORT -k "$KEY" > "$HBBR_LOG" 2>&1 &) && (nohup "$HBBS_BIN" -p $HBBS_PORT -k "$KEY" > "$HBBS_LOG" 2>&1 &)
|
|
|
|
|
|
i=0
|
|
while true; do
|
|
if ! running_hbbr || ! running_hbbs ; then
|
|
# echo "WAIT: ${i}s of ${TIMEOUT}s"
|
|
sleep 5s
|
|
i=$((i+5))
|
|
else
|
|
break
|
|
fi
|
|
[ $i -ge $TIMEOUT ] && break
|
|
done
|
|
|
|
# 检查hbbr进程状态
|
|
if ! running_hbbr ; then
|
|
echo -e "${sError}hbbr process not running" | tee -a $SYNOPKG_TEMP_LOGFILE
|
|
stop
|
|
return 1
|
|
fi
|
|
|
|
# 检查hbbs进程状态
|
|
if ! running_hbbs ; then
|
|
echo -e "${sError}hbbs process not running" | tee -a $SYNOPKG_TEMP_LOGFILE
|
|
stop
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
stop() {
|
|
[ "$SYNOPKG_TEMP_LOGFILE" == "" ] && SYNOPKG_TEMP_LOGFILE="/var/log/rustdeskserver.stop.log"
|
|
# 检查hbbr进程状态
|
|
if running_hbbr ; then
|
|
local PID=$(${PS_CMD} | sed -e 's/^[ \t]*//' | grep -v grep | grep hbbr | grep "${PACKAGE_NAME}" | head -n1 | cut -f1 -d' ')
|
|
[ -z "$PID" ] && return 0
|
|
kill -15 $PID
|
|
sleep 5s
|
|
|
|
# 检查hbbr进程状态
|
|
if running_hbbr ; then
|
|
kill -9 $PID
|
|
sleep 5s
|
|
if running_hbbr ; then
|
|
echo "${sError}Failed to kill hbbr process(pid=$PID)!" | tee -a $SYNOPKG_TEMP_LOGFILE
|
|
return 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# 检查hbbs进程状态
|
|
if running_hbbs ; then
|
|
local PID=$(${PS_CMD} | sed -e 's/^[ \t]*//' | grep -v grep | grep hbbs | grep "${PACKAGE_NAME}" | head -n1 | cut -f1 -d' ')
|
|
[ -z "$PID" ] && return 0
|
|
kill -15 $PID
|
|
sleep 5s
|
|
|
|
# 检查hbbs进程状态
|
|
if running_hbbs ; then
|
|
kill -9 $PID
|
|
sleep 5s
|
|
if running_hbbs ; then
|
|
echo "${sError}无法关闭hbbs进程 (pid=$PID)!" | tee -a $SYNOPKG_TEMP_LOGFILE
|
|
return 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
case $1 in
|
|
start)
|
|
# 启动服务器
|
|
start
|
|
exit $?
|
|
;;
|
|
stop)
|
|
# 关闭服务器
|
|
stop
|
|
exit $?
|
|
;;
|
|
status)
|
|
# 检查套件开关
|
|
if [ ! -f "${PACKAGE_ENABLED}" ]; then
|
|
echo "${sError}package not started" | tee -a $SYNOPKG_TEMP_LOGFILE
|
|
exit 0
|
|
fi
|
|
|
|
# 检查hbbr进程状态
|
|
if ! running_hbbr ; then
|
|
echo "${sError}hbbr process killed" | tee -a $SYNOPKG_TEMP_LOGFILE
|
|
exit 1
|
|
fi
|
|
|
|
# 检查hbbs进程状态
|
|
if ! running_hbbs ; then
|
|
echo "${sError}hbbs process killed" | tee -a $SYNOPKG_TEMP_LOGFILE
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|
|
;;
|
|
log)
|
|
echo "$PACKAGE_BASE/logs/server.log"
|
|
exit 0
|
|
;;
|
|
esac
|