diff --git a/spk/INFO b/spk/INFO new file mode 100755 index 0000000..49671af --- /dev/null +++ b/spk/INFO @@ -0,0 +1,19 @@ +package="RustDesk Server" +version="1.1.3" +description="RustDesk是一款可以完全由用户定义的远程桌面软件。您可以使用RustDesk服务器自建中继服务器,先尝试打洞加密直连,不行再由服务器转发。此服务需要三个端口,NAT测试端口:21115(tcp),ID/注册端口:21116(tcp/udp) ,中继端口:21117(tcp)。" +displayname="RustDesk服务器" +maintainer="CarrieZ Studio" +maintainer_url="https://rustdesk.com/zh/" +distributor="RustDesk & 裙下孤魂" +support_url="https://rustdesk.com/contact/" +arch="apollolake avoton braswell broadwell broadwellnk bromolow cedarview denverton dockerx64 geminilake grantley kvmx64 purley v1000 x86 x86_64" +os_min_ver="6.1" +reloadui="yes" +startable="yes" +thirdparty="yes" +install_reboot="no" +install_dep_packages="" +install_conflict_packages="" +checksum="b66b5f9f889229092ed76e42b23878e4" +extractsize="" +checkport="no" diff --git a/spk/PACKAGE_ICON.PNG b/spk/PACKAGE_ICON.PNG new file mode 100755 index 0000000..c6c0367 Binary files /dev/null and b/spk/PACKAGE_ICON.PNG differ diff --git a/spk/PACKAGE_ICON_256.PNG b/spk/PACKAGE_ICON_256.PNG new file mode 100755 index 0000000..a80abd5 Binary files /dev/null and b/spk/PACKAGE_ICON_256.PNG differ diff --git a/spk/WIZARD_UIFILES/install_uifile b/spk/WIZARD_UIFILES/install_uifile new file mode 100755 index 0000000..ce55fab --- /dev/null +++ b/spk/WIZARD_UIFILES/install_uifile @@ -0,0 +1,34 @@ +[{ + "step_title": "Install Settings", + "items": [{ + "type": "textfield", + "desc": "RustDesk中继服务器端口", + "subitems": [{ + "key": "hbbr_port", + "desc": "TCP", + "defaultValue": "21117", + "validator": { + "allowBlank": false, + "regex": { + "expr": "/^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/", + "errorText": "端口号必须为数字" + } + } + }] + }, { + "type": "textfield", + "desc": "RustDesk ID/注册服务器端口", + "subitems": [{ + "key": "hbbs_port", + "desc": "ID/注册服务端口TCP/UDP", + "defaultValue": "21116", + "validator": { + "allowBlank": false, + "regex": { + "expr": "/^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/", + "errorText": "端口号必须为数字" + } + } + }] + } + }] diff --git a/spk/pubkey b/spk/pubkey new file mode 100644 index 0000000..5ba935b --- /dev/null +++ b/spk/pubkey @@ -0,0 +1,30 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.11 (GNU/Linux) + +mQENBFPXh7wBCAClaiu5REwBu9ow0OYam+wWp3PTHIcuy1KAuOJaOoGAPPpJ+df1 +xvVpql5bMlUWLE6OiWHPdSojrw0T6yx47R5F6rPVyT19+/uKrWpVoLQHu4WZRAIF +yhd1ptbClvdJGu3h1YGXsGNCMB4L1Ytbzg3mIatsqJwwY6H0fc88/HbSwnF5xyM2 +C6r6AzHwVNl0RPYzOrMMaizaYIHEIC0xvOvL94paqPZPfMZ8S2PsiHD8rhpZ46+k +pbrpCNgeas7i6ix1I8mT/pGmjhqcPhsT0OK8gqKWfa8ZVltX5fkL6g3M+g6BKsYT +Qr+II8wQGX0ZHfFUjqFcPBPekiksixkwbHgPABEBAAG0GVN5bm9sb2d5IEluYy4g +KFRpbWVzdGFtcCmJATgEEwECACIFAlPXh7wCGwMGCwkIBwMCBhUIAgkKCwQWAgMB +Ah4BAheAAAoJEDjoaiswnoiw2U0H/jIsC7fkF6B1TSYPntmZ/DTAIDPvH5GX3a5O +XugCbBpFlLYgbrDf9ZD6iu8lYWwdIYlGiNnIpJ+aw/F6hClc1/sfwBIjW9AtWLWI +GPOsrqlcEETcAooCnAV8wsQ6cIBPxQJmZRoQYI71IrY/mXsrFh1MNc3nMoiMC/Hx +dKcWFUSVeHE3goWkZ8k68c466blj8nQZ5IKA64qt0s3WkwG2k3bheh5KxFwX4Uyq +QWPAHhTzepJvJi5DMMla+JN6+PtDsQXyqWmJy/W0Aes7BvcY1ilnKRQj7P0BvVk5 +Lv2eBz4tSBb7WvwU+VRHufLSqhJrEnS8RcRPci2+jNXqq3trnwu5AQ0EU9eHvAEI +ALugjXKwQqSSecmsOaDtT/3jGIr/xtGX/cNfmhOR7cqrf30E2F+3POjpiQWAApG4 +twx5tgkv1mOAxpuMYMVb4fbv+mkWYPZvro9+iEqjAUb0ttKdZTUUpb37JNE/3eow +ByRiNq92DIpERzzUsqOPVstxnekp03wTCyJzgW+oBaevbujDdGCuOXFXhSKppCBl +BLVjffJ1QOnCYIAfCQoe+z7F+AbDTrLIdCg5nc8xmgc4C3JYQtk6MzCakbh4TOOU +kMG8Zcm5QEWGB1AXzlrEExTxsZEdxyBR7LtR3r15stCEh9EhixZRYR2jO8xx9A4P +RlCPKYAy7yHl4X6NoYyJ02UAEQEAAYkBHwQYAQIACQUCU9eHvAIbDAAKCRA46Gor +MJ6IsCDHCACI6bacSQFMIf9zUTs6TIUMQFgs52GD5CzEJ4yXmTcldAs8gEnv01zg +sKqSu/MxB8Dox51gesaUrHmX0EBdw37jZSFCE940ErzPEI2zhLzdOwimqXs5+a9H +L7xl9wqQI1awubHnYQTb9rnzcphEhdepN+5Qv/K3mguuLffp1GI8Pa6KdKzvttLi +qAHRMqq1lPAqr8EmwacUYNQ7DTjz5fEw7+SBkLjB+CJFj4gjOTn8s4DYmWrQjUoS +bwXph6pkrn84if8gzY7xJX3+4UGC/U/8O2my2H/XdcmkPkl5shyiDkhb+wDdNqXS +d/I7NIpmY3Pgu1sKNwr1dXBEHGez8ooi +=n+fM +-----END PGP PUBLIC KEY BLOCK----- diff --git a/spk/scripts/RustDesk_Server.sc b/spk/scripts/RustDesk_Server.sc new file mode 100755 index 0000000..37eb1f4 --- /dev/null +++ b/spk/scripts/RustDesk_Server.sc @@ -0,0 +1,23 @@ +[RustDesk_Server_HBBR] +title="RustDesk Server (HBBR_TCP)" +desc="RustDesk Server" +port_forward="yes" +dst.ports="21117/tcp" + +[RustDesk_Server_HBBS_TCP] +title="RustDesk Server (HBBS_TCP)" +desc="RustDesk Server" +port_forward="yes" +dst.ports="21116/tcp" + +[RustDesk_Server_HBBS_UDP] +title="RustDesk Server (HBBS_UDP)" +desc="RustDesk Server" +port_forward="yes" +dst.ports="21116/udp" + +[RustDesk_Server_NAT_TCP] +title="RustDesk Server (NAT_TCP)" +desc="RustDesk Server" +port_forward="yes" +dst.ports="21115/tcp" diff --git a/spk/scripts/installer b/spk/scripts/installer new file mode 100755 index 0000000..af9f033 --- /dev/null +++ b/spk/scripts/installer @@ -0,0 +1,157 @@ +#!/bin/sh + +PACKAGE_NAME="$SYNOPKG_PKGNAME" +PACKAGE_BASE="/var/packages/${PACKAGE_NAME}/target" +PACKAGE_SSS="/var/packages/${PACKAGE_NAME}/scripts/start-stop-status" + +SERVICETOOL="/usr/syno/bin/servicetool" +GETKEYVALUE="/usr/syno/bin/synogetkeyvalue" +SETKEYVALUE="/usr/syno/bin/synosetkeyvalue" +FWFILENAME="RustDesk_Server.sc" + +[ "${hbbr_port}" == "" ] && hbbr_port="21117" +[ "${hbbs_port}" == "" ] && hbbs_port="21116" +nat_port=`expr ${hbbs_port} - 1` + +preinst() { + exit 0 +} + +postinst() { + if [ "${SYNOPKG_PKG_STATUS}" == "INSTALL" ]; then + # 导入另一个RustDesk服务器数据 + import_db="false" + import_all="false" + if [ "${rds_old_import_all}" == "true" ]; then + rds_old_import_db="true" + import_all="true" + elif [ "${rds_import_all}" == "true" ]; then + rds_import_db="true" + import_all="true" + fi + if [ "${rds_old_import_db}" == "true" ]; then + import_db="true" + PACKAGE_IMPORT_DIR="/var/packages/RustDesk_Server" + elif [ "${rds_import_db}" == "true" ]; then + import_db="true" + PACKAGE_IMPORT_DIR="/var/packages/RustDesk Server" + fi + if [ "${import_db}" == "true" ]; then + [ -x "${PACKAGE_IMPORT_DIR}/scripts/start-stop-status" ] \ + && SYNOPKG_PKGNAME="RustDesk Server" "${PACKAGE_IMPORT_DIR}/scripts/start-stop-status" stop 2>&1 + [ -f "${PACKAGE_IMPORT_DIR}/enabled" ] && rm -f "${PACKAGE_IMPORT_DIR}/enabled" + [ -d "${PACKAGE_IMPORT_DIR}/target/hbbs.db" ] && cp -prf "${PACKAGE_IMPORT_DIR}/target/hbbs.db" "${PACKAGE_BASE}" + fi + if [ "${import_all}" == "true" ]; then + [ -d "${PACKAGE_IMPORT_DIR}/target/logs" ] && cp -prf "${PACKAGE_IMPORT_DIR}/target/logs" "${PACKAGE_BASE}" + fi + + # 添加应用配置 + sed -i "s/中继端口:21117/中继端口:${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/INFO" + sed -i "s/ID\/注册端口:21116/ID\/注册端口:${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/INFO" + sed -i "s/NAT测试端口:21115/NAT测试端口:${nat_port}/" "/var/packages/${PACKAGE_NAME}/INFO" + sed -i "s/21117/${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" + sed -i "s/21116/${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" + sed -i "s/21115/${nat_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" + sed -i "s/port=[^ ]*/port=${hbbr_port}/g" "${PACKAGE_BASE}/config/hbbr.conf" + sed -i "s/port=[^ ]*/port=${hbbs_port}/g" "${PACKAGE_BASE}/config/hbbs.conf" + + # 添加防火墙配置 + cat "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" >"/tmp/${FWFILENAME}" + ${SERVICETOOL} --install-configure-file --package "/tmp/${FWFILENAME}" >/dev/null + rm -f "/tmp/${FWFILENAME}" + + # 设置文件权限 + chmod -R 755 "${PACKAGE_BASE}"/* + chmod -R 755 "/var/packages/${PACKAGE_NAME}/scripts"/* + chmod -R 755 "/var/packages/${PACKAGE_NAME}/WIZARD_UIFILES"/* + chmod 644 "/var/packages/${PACKAGE_NAME}/INFO" + fi + + exit 0 +} + +preuninst() { + # 停用套件 + "${PACKAGE_SSS}" stop + + # 删除防火墙配置 + if [ "${SYNOPKG_PKG_STATUS}" == "UNINSTALL" ]; then + ${SERVICETOOL} --remove-configure-file --package "${FWFILENAME}" >/dev/null + fi + + exit 0 +} + +postuninst() { + # 删除不必要的目录... + if [ -d "/usr/syno/etc/packages/${PACKAGE_NAME}" ]; then + rm -rf "/usr/syno/etc/packages/${PACKAGE_NAME}" + fi + + exit 0 +} + +preupgrade() { + # 停用套件 + "${PACKAGE_SSS}" stop + +# Not working yet... +# # 检索旧设置... +# hbbr_port=`${GETKEYVALUE} "${PACKAGE_BASE}/config/hbbr.conf" port` +# hbbs_port=`${GETKEYVALUE} "${PACKAGE_BASE}/config/hbbs.conf" port` +# sed -i "s/21117/${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/WIZARD_UIFILES/upgrade_uifile" +# sed -i "s/21116/${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/WIZARD_UIFILES/upgrade_uifile" +## Not working yet... + + # 备份数据文件... + if [ -d "${SYNOPKG_PKGDEST}" ]; then + DIRS4BACKUP="data logs hbbs.db config" + for DIR in $DIRS4BACKUP; do + if [ -d "${SYNOPKG_PKGDEST}/${DIR}" ]; then + mkdir -p "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}" + mv "${SYNOPKG_PKGDEST}/${DIR}"/* "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}" + rmdir "${SYNOPKG_PKGDEST}/${DIR}" + elif [ -f "${SYNOPKG_PKGDEST}/${DIR}" ]; then + mv "${SYNOPKG_PKGDEST}/${DIR}" "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade" + fi + done + fi + + exit 0 +} + +postupgrade() { + # 恢复数据文件... + if [ -d "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade" ]; then + for DIR in `ls "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade"` + do + if [ -d "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}" ]; then + [ ! -d "${SYNOPKG_PKGDEST}/${DIR}" ] && mkdir "${SYNOPKG_PKGDEST}/${DIR}" + mv "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}"/* "${SYNOPKG_PKGDEST}/${DIR}" + rmdir "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}" + elif [ -f "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}" ]; then + mv "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}" "${SYNOPKG_PKGDEST}" + fi + done + rmdir "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade" + fi + + # 恢复设置... + hbbr_port=`${GETKEYVALUE} "${PACKAGE_BASE}/config/hbbr.conf" port` >>/tmp/wakko.txt + hbbs_port=`${GETKEYVALUE} "${PACKAGE_BASE}/config/hbbs.conf" port` >>/tmp/wakko.txt + nat_port=`expr ${hbbs_port} - 1` + sed -i "s/中继端口:21117/中继端口:${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/INFO" >>/tmp/wakko.txt + sed -i "s/ID\/注册端口:21116/ID\/注册端口:${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/INFO" >>/tmp/wakko.txt + sed -i "s/NAT测试端口:21115/NAT测试端口:${nat_port}/" "/var/packages/${PACKAGE_NAME}/INFO" >>/tmp/wakko.txt + sed -i "s/21117/${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" >>/tmp/wakko.txt + sed -i "s/21116/${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" >>/tmp/wakko.txt + sed -i "s/21115/${nat_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" >>/tmp/wakko.txt + + # 设置文件权限 + chmod -R 755 "/var/packages/${PACKAGE_NAME}/scripts"/* + chmod -R 755 "/var/packages/${PACKAGE_NAME}/WIZARD_UIFILES"/* + chmod 644 "/var/packages/${PACKAGE_NAME}/INFO" + + exit 0 +} diff --git a/spk/scripts/postinst b/spk/scripts/postinst new file mode 100755 index 0000000..f6c4bd9 --- /dev/null +++ b/spk/scripts/postinst @@ -0,0 +1,3 @@ +#!/bin/sh +. "`dirname \"$0\"`/installer" +`basename "$0"` >$SYNOPKG_TEMP_LOGFILE diff --git a/spk/scripts/postuninst b/spk/scripts/postuninst new file mode 100755 index 0000000..f6c4bd9 --- /dev/null +++ b/spk/scripts/postuninst @@ -0,0 +1,3 @@ +#!/bin/sh +. "`dirname \"$0\"`/installer" +`basename "$0"` >$SYNOPKG_TEMP_LOGFILE diff --git a/spk/scripts/postupgrade b/spk/scripts/postupgrade new file mode 100755 index 0000000..f6c4bd9 --- /dev/null +++ b/spk/scripts/postupgrade @@ -0,0 +1,3 @@ +#!/bin/sh +. "`dirname \"$0\"`/installer" +`basename "$0"` >$SYNOPKG_TEMP_LOGFILE diff --git a/spk/scripts/preinst b/spk/scripts/preinst new file mode 100755 index 0000000..f6c4bd9 --- /dev/null +++ b/spk/scripts/preinst @@ -0,0 +1,3 @@ +#!/bin/sh +. "`dirname \"$0\"`/installer" +`basename "$0"` >$SYNOPKG_TEMP_LOGFILE diff --git a/spk/scripts/preuninst b/spk/scripts/preuninst new file mode 100755 index 0000000..f6c4bd9 --- /dev/null +++ b/spk/scripts/preuninst @@ -0,0 +1,3 @@ +#!/bin/sh +. "`dirname \"$0\"`/installer" +`basename "$0"` >$SYNOPKG_TEMP_LOGFILE diff --git a/spk/scripts/preupgrade b/spk/scripts/preupgrade new file mode 100755 index 0000000..f6c4bd9 --- /dev/null +++ b/spk/scripts/preupgrade @@ -0,0 +1,3 @@ +#!/bin/sh +. "`dirname \"$0\"`/installer" +`basename "$0"` >$SYNOPKG_TEMP_LOGFILE diff --git a/spk/scripts/start-stop-status b/spk/scripts/start-stop-status new file mode 100755 index 0000000..ea0bf88 --- /dev/null +++ b/spk/scripts/start-stop-status @@ -0,0 +1,156 @@ +#!/bin/sh + + +sError="ERROR: " +[ ! -z "$SYNOPKG_PKGNAME" ] && sError="
${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="${PACKAGE_BASE}/logs/hbbr.log" +HBBS_BIN="${PACKAGE_BASE}/bin/hbbs" +HBBS_PORT=`synogetkeyvalue "${PACKAGE_BASE}/config/hbbs.conf" port` +HBBS_LOG="${PACKAGE_BASE}/logs/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 > "$HBBR_LOG" 2>&1 &) && (nohup "$HBBS_BIN" -r 127.0.0.1 -p $HBBS_PORT > "$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进程已死" | tee -a $SYNOPKG_TEMP_LOGFILE + stop + return 1 + fi + + # 检查hbbs进程状态 + if ! running_hbbs ; then + echo -e "${sError}hbbs进程已死" | 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}无法关闭hbbr进程 (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}套件没有开启" | tee -a $SYNOPKG_TEMP_LOGFILE + exit 0 + fi + + # 检查hbbr进程状态 + if ! running_hbbr ; then + echo "${sError}hbbr进程已死" | tee -a $SYNOPKG_TEMP_LOGFILE + exit 1 + fi + + # 检查hbbs进程状态 + if ! running_hbbs ; then + echo "${sError}hbbs进程已死" | tee -a $SYNOPKG_TEMP_LOGFILE + exit 1 + fi + + exit 0 + ;; + log) + echo "$PACKAGE_BASE/logs/server.log" + exit 0 + ;; +esac diff --git a/spk/syno_signature.asc b/spk/syno_signature.asc new file mode 100644 index 0000000..e69de29