installer 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. #!/bin/sh
  2. PACKAGE_NAME="$SYNOPKG_PKGNAME"
  3. PACKAGE_BASE="/var/packages/${PACKAGE_NAME}/target"
  4. PACKAGE_SSS="/var/packages/${PACKAGE_NAME}/scripts/start-stop-status"
  5. SERVICETOOL="/usr/syno/bin/servicetool"
  6. GETKEYVALUE="/usr/syno/bin/synogetkeyvalue"
  7. SETKEYVALUE="/usr/syno/bin/synosetkeyvalue"
  8. FWFILENAME="RustDesk_Server.sc"
  9. [ "${hbbr_port}" == "" ] && hbbr_port="21117"
  10. [ "${hbbs_port}" == "" ] && hbbs_port="21116"
  11. [ "${key}" == "" ] && key=""
  12. nat_port=`expr ${hbbs_port} - 1`
  13. preinst() {
  14. exit 0
  15. }
  16. postinst() {
  17. if [ "${SYNOPKG_PKG_STATUS}" == "INSTALL" ]; then
  18. # 导入另一个RustDesk服务器数据
  19. import_db="false"
  20. import_all="false"
  21. if [ "${rds_old_import_all}" == "true" ]; then
  22. rds_old_import_db="true"
  23. import_all="true"
  24. elif [ "${rds_import_all}" == "true" ]; then
  25. rds_import_db="true"
  26. import_all="true"
  27. fi
  28. if [ "${rds_old_import_db}" == "true" ]; then
  29. import_db="true"
  30. PACKAGE_IMPORT_DIR="/var/packages/RustDesk_Server"
  31. elif [ "${rds_import_db}" == "true" ]; then
  32. import_db="true"
  33. PACKAGE_IMPORT_DIR="/var/packages/RustDesk Server"
  34. fi
  35. if [ "${import_db}" == "true" ]; then
  36. [ -x "${PACKAGE_IMPORT_DIR}/scripts/start-stop-status" ] \
  37. && SYNOPKG_PKGNAME="RustDesk Server" "${PACKAGE_IMPORT_DIR}/scripts/start-stop-status" stop 2>&1
  38. [ -f "${PACKAGE_IMPORT_DIR}/enabled" ] && rm -f "${PACKAGE_IMPORT_DIR}/enabled"
  39. [ -d "${PACKAGE_IMPORT_DIR}/target/hbbs.db" ] && cp -prf "${PACKAGE_IMPORT_DIR}/target/hbbs.db" "${PACKAGE_BASE}"
  40. fi
  41. if [ "${import_all}" == "true" ]; then
  42. [ -d "${PACKAGE_IMPORT_DIR}/target/logs" ] && cp -prf "${PACKAGE_IMPORT_DIR}/target/logs" "${PACKAGE_BASE}"
  43. fi
  44. # 添加应用配置
  45. sed -i "s/relay port: 21117/relay port: ${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/INFO"
  46. sed -i "s/ID\/rendezvous port: 21116/ID\/rendezvous port: ${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/INFO"
  47. sed -i "s/NAT test port: 21115/NAT test port: ${nat_port}/" "/var/packages/${PACKAGE_NAME}/INFO"
  48. sed -i "s/Key: ()/Key: (${key})/" "/var/packages/${PACKAGE_NAME}/INFO"
  49. sed -i "s/21117/${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}"
  50. sed -i "s/21116/${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}"
  51. sed -i "s/21115/${nat_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}"
  52. sed -i "s/port=[^ ]*/port=${hbbr_port}/g" "${PACKAGE_BASE}/config/hbbr.conf"
  53. sed -i "s/port=[^ ]*/port=${hbbs_port}/g" "${PACKAGE_BASE}/config/hbbs.conf"
  54. sed -i "s/key=[^ ]*/key=${key}/g" "${PACKAGE_BASE}/config/hbbs.conf"
  55. # 添加防火墙配置
  56. cat "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" >"/tmp/${FWFILENAME}"
  57. ${SERVICETOOL} --install-configure-file --package "/tmp/${FWFILENAME}" >/dev/null
  58. rm -f "/tmp/${FWFILENAME}"
  59. # 设置文件权限
  60. chmod -R 755 "${PACKAGE_BASE}"/*
  61. chmod -R 755 "/var/packages/${PACKAGE_NAME}/scripts"/*
  62. chmod -R 755 "/var/packages/${PACKAGE_NAME}/WIZARD_UIFILES"/*
  63. chmod 644 "/var/packages/${PACKAGE_NAME}/INFO"
  64. fi
  65. exit 0
  66. }
  67. preuninst() {
  68. # 停用套件
  69. "${PACKAGE_SSS}" stop
  70. # 删除防火墙配置
  71. if [ "${SYNOPKG_PKG_STATUS}" == "UNINSTALL" ]; then
  72. ${SERVICETOOL} --remove-configure-file --package "${FWFILENAME}" >/dev/null
  73. fi
  74. exit 0
  75. }
  76. postuninst() {
  77. # 删除不必要的目录...
  78. if [ -d "/usr/syno/etc/packages/${PACKAGE_NAME}" ]; then
  79. rm -rf "/usr/syno/etc/packages/${PACKAGE_NAME}"
  80. fi
  81. exit 0
  82. }
  83. preupgrade() {
  84. # 停用套件
  85. "${PACKAGE_SSS}" stop
  86. # Not working yet...
  87. # # 检索旧设置...
  88. # hbbr_port=`${GETKEYVALUE} "${PACKAGE_BASE}/config/hbbr.conf" port`
  89. # hbbs_port=`${GETKEYVALUE} "${PACKAGE_BASE}/config/hbbs.conf" port`
  90. # sed -i "s/21117/${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/WIZARD_UIFILES/upgrade_uifile"
  91. # sed -i "s/21116/${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/WIZARD_UIFILES/upgrade_uifile"
  92. ## Not working yet...
  93. # 备份数据文件...
  94. if [ -d "${SYNOPKG_PKGDEST}" ]; then
  95. DIRS4BACKUP="data logs hbbs.db config"
  96. for DIR in $DIRS4BACKUP; do
  97. if [ -d "${SYNOPKG_PKGDEST}/${DIR}" ]; then
  98. mkdir -p "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}"
  99. mv "${SYNOPKG_PKGDEST}/${DIR}"/* "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}"
  100. rmdir "${SYNOPKG_PKGDEST}/${DIR}"
  101. elif [ -f "${SYNOPKG_PKGDEST}/${DIR}" ]; then
  102. mv "${SYNOPKG_PKGDEST}/${DIR}" "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade"
  103. fi
  104. done
  105. fi
  106. exit 0
  107. }
  108. postupgrade() {
  109. # 恢复数据文件...
  110. if [ -d "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade" ]; then
  111. for DIR in `ls "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade"`
  112. do
  113. if [ -d "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}" ]; then
  114. [ ! -d "${SYNOPKG_PKGDEST}/${DIR}" ] && mkdir "${SYNOPKG_PKGDEST}/${DIR}"
  115. mv "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}"/* "${SYNOPKG_PKGDEST}/${DIR}"
  116. rmdir "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}"
  117. elif [ -f "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}" ]; then
  118. mv "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade/${DIR}" "${SYNOPKG_PKGDEST}"
  119. fi
  120. done
  121. rmdir "${SYNOPKG_PKGDEST}/../${PACKAGE_NAME}_upgrade"
  122. fi
  123. # 恢复设置...
  124. hbbr_port=`${GETKEYVALUE} "${PACKAGE_BASE}/config/hbbr.conf" port` >>/tmp/wakko.txt
  125. hbbs_port=`${GETKEYVALUE} "${PACKAGE_BASE}/config/hbbs.conf" port` >>/tmp/wakko.txt
  126. nat_port=`expr ${hbbs_port} - 1`
  127. key=`${GETKEYVALUE} "${PACKAGE_BASE}/config/hbbs.conf" key` >>/tmp/wakko.txt
  128. sed -i "s/relay port: 21117/relay port: ${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/INFO" >>/tmp/wakko.txt
  129. sed -i "s/ID\/rendezvous port: 21116/ID\/rendezvous port: ${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/INFO" >>/tmp/wakko.txt
  130. sed -i "s/NAT test port: 21115/NAT test port: ${nat_port}/" "/var/packages/${PACKAGE_NAME}/INFO" >>/tmp/wakko.txt
  131. sed -i "s/Key: ()/Key: (${key})/" "/var/packages/${PACKAGE_NAME}/INFO"
  132. sed -i "s/21117/${hbbr_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" >>/tmp/wakko.txt
  133. sed -i "s/21116/${hbbs_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" >>/tmp/wakko.txt
  134. sed -i "s/21115/${nat_port}/" "/var/packages/${PACKAGE_NAME}/scripts/${FWFILENAME}" >>/tmp/wakko.txt
  135. # 设置文件权限
  136. chmod -R 755 "/var/packages/${PACKAGE_NAME}/scripts"/*
  137. chmod -R 755 "/var/packages/${PACKAGE_NAME}/WIZARD_UIFILES"/*
  138. chmod 644 "/var/packages/${PACKAGE_NAME}/INFO"
  139. exit 0
  140. }