installer 7.2 KB

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