rustdesk-server/spk/scripts/installer
2021-04-03 23:52:29 +08:00

158 lines
6.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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
}