amy4Server.sh 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. #!/bin/bash
  2. #Stop amy4Server & delete amy4Server files.
  3. Delete() {
  4. systemctl disable amy4Server.service
  5. chkconfig --del amy4Server
  6. /etc/init.d/amy4Server disable
  7. if [ -f "${amy4Server_install_dir:=/usr/local/amy4Server}/amy4Server.init" ]; then
  8. "$amy4Server_install_dir"/amy4Server.init stop
  9. rm -rf "$amy4Server_install_dir"
  10. fi
  11. rm -f /etc/init.d/amy4Server /lib/systemd/system/amy4Server.service /etc/rc.d/rc5.d/S99amy4Server /etc/rc.d/S99amy4Server /etc/rc5.d/S99amy4Server
  12. }
  13. #Print error message and exit.
  14. Error() {
  15. echo $echo_e_arg "\033[41;37m$1\033[0m"
  16. echo -n "remove amy4Server?[y]: "
  17. read remove
  18. echo "$remove"|grep -qi 'n' || Delete
  19. exit 1
  20. }
  21. #Make amy4Server start cmd
  22. Config() {
  23. if [ -z "$amy4Server_install_dir" ]; then #Variables come from the environment
  24. echo "搭建脚本由快盾CDN提供支持:https://cdn.quicknet.cyou/"
  25. echo -n "请输入内部账号(如果没有请忽略): "
  26. read amy4Server_auth_secret
  27. echo -n "请输入内部密码(如果没有请忽略): "
  28. read amy4Server_secret_password
  29. echo -n "请输入amy4Server服务端口: "
  30. read amy4Server_port
  31. echo -n "请输入amy4Server连接密码(ClientKey): "
  32. read amy4Server_clientkey
  33. echo -n "服务器是否支持IPV6[n]: "
  34. read ipv6_support
  35. echo -n "请输入安装目录(默认/usr/local/amy4Server): " #安装目录
  36. read amy4Server_install_dir
  37. echo "${amy4Server_install_dir:=/usr/local/amy4Server}"|grep -q '^/' || amy4Server_install_dir="$PWD/$amy4Server_install_dir"
  38. echo -n "安装UPX压缩版本?[n]: "
  39. read amy4Server_UPX
  40. echo "$amy4Server_UPX"|grep -qi '^y' && amy4Server_UPX="upx" || amy4Server_UPX=""
  41. echo -n "是否使用HTTP代理拉取amy4Server配置(1.百度 2.联通UC):"
  42. read amy4Server_proxy_opt
  43. fi
  44. [ -z "$amy4Server_auth_secret" ] && amy4Server_auth_secret='free'
  45. [ -z "$amy4Server_secret_password" ] && amy4Server_secret_password='free'
  46. echo "$ipv6_support"|grep -qi '^y' && ipv6_support="true" || ipv6_support="false"
  47. if [ "$amy4Server_proxy_opt" = '1' ]; then
  48. export http_proxy="157.0.148.53:443"
  49. elif [ "$amy4Server_proxy_opt" = '2' ]; then
  50. export http_proxy="101.71.140.5:8128"
  51. elif [ "$amy4Server_proxy_opt" != 'n' -a -n "$amy4Server_proxy_opt" ]; then
  52. export http_proxy="amy4Server_proxy_opt"
  53. fi
  54. }
  55. GetAbi() {
  56. machine=`uname -m`
  57. #mips[...] use 'le' version
  58. if echo "$machine"|grep -q 'mips64'; then
  59. shContent=`cat "$SHELL"`
  60. [ "${shContent:5:1}" = `echo $echo_e_arg "\x01"` ] && machine='mips64le' || machine='mips64'
  61. elif echo "$machine"|grep -q 'mips'; then
  62. shContent=`cat "$SHELL"`
  63. [ "${shContent:5:1}" = `echo $echo_e_arg "\x01"` ] && machine='mipsle' || machine='mips'
  64. elif echo "$machine"|grep -Eq 'i686|i386'; then
  65. machine='386'
  66. elif echo "$machine"|grep -Eq 'armv7|armv6'; then
  67. machine='arm'
  68. elif echo "$machine"|grep -Eq 'armv8|aarch64'; then
  69. machine='arm64'
  70. elif echo "$machine"|grep -q 's390x'; then
  71. machine='s390x'
  72. else
  73. machine='amd64'
  74. fi
  75. }
  76. #install amy4Server files
  77. InstallFiles() {
  78. GetAbi
  79. if echo "$machine" | grep -q '^mips'; then
  80. cat /proc/cpuinfo | grep -qiE 'fpu|neon|vfp|softfp|asimd' || softfloat='_softfloat'
  81. fi
  82. mkdir -p "$amy4Server_install_dir" || Error "Create amy4Server install directory failed."
  83. cd "$amy4Server_install_dir" || exit 1
  84. download_tool amy4Server http://binary.quicknet.cyou/amy4Server/${amy4Server_UPX}/linux_${machine}${softfloat} || Error "amy4Server download failed."
  85. download_tool amy4Server.init http://binary.quicknet.cyou/amy4Server/amy4Server.init || Error "amy4Server.init download failed."
  86. [ -f '/etc/rc.common' ] && rcCommon='/etc/rc.common'
  87. sed -i "s~#!/bin/sh~#!$SHELL $rcCommon~" amy4Server.init
  88. sed -i "s~\[amy4Server_install_dir\]~$amy4Server_install_dir~g" amy4Server.init
  89. sed -i "s~\[amy4Server_tcp_port_list\]~$amy4Server_port~g" amy4Server.init
  90. ln -s "$amy4Server_install_dir/amy4Server.init" /etc/init.d/amy4Server
  91. cat >amy4Server.json <<-EOF
  92. {
  93. "ListenAddr": ":${amy4Server_port}",
  94. "IPV6Support": ${ipv6_support},
  95. "PidFile": "${amy4Server_install_dir}/run.pid",
  96. "ClientKeys": ["$amy4Server_clientkey"],
  97. "AmyVerifyServer": {
  98. "authUser": "${amy4Server_auth_secret}",
  99. "authPass": "${amy4Server_secret_password}",
  100. "proxyAddr": "$http_proxy"
  101. }
  102. }
  103. EOF
  104. chmod -R +rwx "$amy4Server_install_dir" /etc/init.d/amy4Server
  105. if type systemctl && [ -z "$(systemctl --failed|grep -q 'Host is down')" ]; then
  106. download_tool /lib/systemd/system/amy4Server.service http://binary.quicknet.cyou/amy4Server/amy4Server.service || Error "amy4Server.service download failed."
  107. chmod +rwx /lib/systemd/system/amy4Server.service
  108. sed -i "s~\[amy4Server_install_dir\]~$amy4Server_install_dir~g" /lib/systemd/system/amy4Server.service
  109. systemctl daemon-reload
  110. fi
  111. }
  112. #install initialization
  113. InstallInit() {
  114. echo -n "make a update?[n]: "
  115. read update
  116. PM=`type apt-get || type yum`
  117. PM=`echo "$PM" | grep -o '/.*'`
  118. echo "$update"|grep -qi 'y' && $PM -y update
  119. $PM -y install curl wget unzip sed
  120. if type curl; then
  121. download_tool() {
  122. curl --header "Proxy-Authorization: Basic dWMxMC43LjE2My4xNDQ6MWY0N2QzZWY1M2IwMzU0NDM0NTFjN2VlNzg3M2ZmMzg=" --header "X-T5-Auth: 1967948331" --user-agent "curl baiduboxapp" -L -ko $@
  123. }
  124. else
  125. download_tool() {
  126. wget --header "Proxy-Authorization: Basic dWMxMC43LjE2My4xNDQ6MWY0N2QzZWY1M2IwMzU0NDM0NTFjN2VlNzg3M2ZmMzg=" --header "X-T5-Auth: 1967948331" --user-agent "curl baiduboxapp" --no-check-certificate -O $@
  127. }
  128. fi
  129. }
  130. AddAutoStart() {
  131. if [ -n "$rcCommon" ]; then
  132. if /etc/init.d/amy4Server enable; then
  133. echo '已添加开机自启, 如需关闭请执行: /etc/init.d/amy4Server disable'
  134. return
  135. fi
  136. fi
  137. if type systemctl &>/dev/null && [ -z "$(systemctl --failed|grep -q 'Host is down')" ]; then
  138. if systemctl enable amy4Server &>/dev/null; then
  139. echo '已添加开机自启, 如需关闭请执行: systemctl disable amy4Server'
  140. return
  141. fi
  142. fi
  143. if type chkconfig &>/dev/null; then
  144. if chkconfig --add amy4Server &>/dev/null && chkconfig amy4Server on &>/dev/null; then
  145. echo '已添加开机自启, 如需关闭请执行: chkconfig amy4Server off'
  146. return
  147. fi
  148. fi
  149. if [ -d '/etc/rc.d/rc5.d' -a -f '/etc/init.d/amy4Server' ]; then
  150. if ln -s '/etc/init.d/amy4Server' '/etc/rc.d/rc5.d/S99amy4Server'; then
  151. echo '已添加开机自启, 如需关闭请执行: rm -f /etc/rc.d/rc5.d/S99amy4Server'
  152. return
  153. fi
  154. fi
  155. if [ -d '/etc/rc5.d' -a -f '/etc/init.d/amy4Server' ]; then
  156. if ln -s '/etc/init.d/amy4Server' '/etc/rc5.d/S99amy4Server'; then
  157. echo '已添加开机自启, 如需关闭请执行: rm -f /etc/rc5.d/S99amy4Server'
  158. return
  159. fi
  160. fi
  161. if [ -d '/etc/rc.d' -a -f '/etc/init.d/amy4Server' ]; then
  162. if ln -s '/etc/init.d/amy4Server' '/etc/rc.d/S99amy4Server'; then
  163. echo '已添加开机自启, 如需关闭请执行: rm -f /etc/rc.d/S99amy4Server'
  164. return
  165. fi
  166. fi
  167. echo '没有添加开机自启, 如需开启请手动添加'
  168. }
  169. Install() {
  170. Config
  171. Delete >/dev/null 2>&1
  172. InstallInit
  173. InstallFiles
  174. ret=`"${amy4Server_install_dir}/amy4Server.init" start`
  175. if ! echo "$ret"|grep -q 'OK' || echo "$ret"|grep -q 'FAILED'; then
  176. Error "amy4Server install failed."
  177. fi
  178. type systemctl && [ -z "$(systemctl --failed|grep -q 'Host is down')" ] && systemctl restart amy4Server
  179. echo $echo_e_arg \
  180. "\033[44;37mamy4Server install success.\033[0;34m
  181. \r amy4Server server port:\033[35G${amy4Server_port}
  182. \r amy4Server auth secret:\033[35G${amy4Server_auth_secret}
  183. \r amy4Server client key:\033[35G${amy4Server_clientkey}
  184. \r`[ -f /etc/init.d/amy4Server ] && /etc/init.d/amy4Server usage || \"$amy4Server_install_dir/amy4Server.init\" usage`
  185. \r`AddAutoStart`\033[0m"
  186. }
  187. Uninstall() {
  188. if [ -z "$amy4Server_install_dir" ]; then
  189. echo -n "Please input amy4Server install directory(default is /usr/local/amy4Server): "
  190. read amy4Server_install_dir
  191. fi
  192. Delete >/dev/null 2>&1 && \
  193. echo $echo_e_arg "\n\033[44;37mamy4Server uninstall success.\033[0m" || \
  194. echo $echo_e_arg "\n\033[41;37mamy4Server uninstall failed.\033[0m"
  195. }
  196. #script initialization
  197. ScriptInit() {
  198. emulate bash 2>/dev/null #zsh emulation mode
  199. if echo -e ''|grep -q 'e'; then
  200. echo_e_arg=''
  201. echo_E_arg=''
  202. else
  203. echo_e_arg='-e'
  204. echo_E_arg='-E'
  205. fi
  206. }
  207. ScriptInit
  208. echo $*|grep -qi uninstall && Uninstall || Install