addons.sh 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://linuxeye.com
  4. #
  5. # Notes: OneinStack for CentOS/RedHat 7+ Debian 9+ and Ubuntu 16+
  6. #
  7. # Project home page:
  8. # https://oneinstack.com
  9. # https://github.com/oneinstack/oneinstack
  10. export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
  11. clear
  12. printf "
  13. #######################################################################
  14. # OneinStack for CentOS/RedHat 7+ Debian 9+ and Ubuntu 16+ #
  15. # Install/Uninstall Extensions #
  16. # For more information please visit https://oneinstack.com #
  17. #######################################################################
  18. "
  19. # Check if user is root
  20. # shellcheck disable=SC2046
  21. [ $(id -u) != '0' ] && { echo "${CFAILURE}Error: You must be root to run this script${CEND}"; exit 1; }
  22. oneinstack_dir=$(dirname "`readlink -f $0`")
  23. # shellcheck disable=SC2164
  24. pushd ${oneinstack_dir} > /dev/null
  25. # get the out ip country
  26. OUTIP_STATE=$(./include/ois.${ARCH} ip_state)
  27. . ./versions.txt
  28. . ./options.conf
  29. . ./include/color.sh
  30. . ./include/check_os.sh
  31. . ./include/download.sh
  32. . ./include/get_char.sh
  33. . ./include/composer.sh
  34. . ./include/python.sh
  35. . ./include/fail2ban.sh
  36. . ./include/ngx_lua_waf.sh
  37. # shellcheck disable=SC2154
  38. Show_Help() {
  39. echo
  40. echo "Usage: $0 command ...
  41. --help, -h Show this help message
  42. --install, -i Install
  43. --uninstall, -u Uninstall
  44. --composer Composer
  45. --fail2ban Fail2ban
  46. --ngx_lua_waf Ngx_lua_waf
  47. --python Python (PATH: ${python_install_dir})
  48. "
  49. }
  50. ARG_NUM=$#
  51. TEMP=`getopt -o hiu --long help,install,uninstall,composer,fail2ban,ngx_lua_waf,python -- "$@" 2>/dev/null`
  52. [ $? != 0 ] && echo "${CWARNING}ERROR: unknown argument! ${CEND}" && Show_Help && exit 1
  53. eval set -- "${TEMP}"
  54. while :; do
  55. [ -z "$1" ] && break;
  56. case "$1" in
  57. -h|--help)
  58. Show_Help; exit 0
  59. ;;
  60. -i|--install)
  61. install_flag=y; shift 1
  62. ;;
  63. -u|--uninstall)
  64. uninstall_flag=y; shift 1
  65. ;;
  66. --composer)
  67. composer_flag=y; shift 1
  68. ;;
  69. --fail2ban)
  70. fail2ban_flag=y; shift 1
  71. ;;
  72. --ngx_lua_waf)
  73. ngx_lua_waf_flag=y; shift 1
  74. ;;
  75. --python)
  76. python_flag=y; shift 1
  77. ;;
  78. --)
  79. shift
  80. ;;
  81. *)
  82. echo "${CWARNING}ERROR: unknown argument! ${CEND}" && Show_Help && exit 1
  83. ;;
  84. esac
  85. done
  86. ACTION_FUN() {
  87. while :; do
  88. echo
  89. echo "Please select an action:"
  90. echo -e "\t${CMSG}1${CEND}. install"
  91. echo -e "\t${CMSG}2${CEND}. uninstall"
  92. read -e -p "Please input a number:(Default 1 press Enter) " ACTION
  93. ACTION=${ACTION:-1}
  94. if [[ ! "${ACTION}" =~ ^[1,2]$ ]]; then
  95. echo "${CWARNING}input error! Please only input number 1~2${CEND}"
  96. else
  97. [ "${ACTION}" == '1' ] && install_flag=y
  98. [ "${ACTION}" == '2' ] && uninstall_flag=y
  99. break
  100. fi
  101. done
  102. }
  103. Menu() {
  104. while :;do
  105. printf "
  106. What Are You Doing?
  107. \t${CMSG}1${CEND}. Install/Uninstall PHP Composer
  108. \t${CMSG}2${CEND}. Install/Uninstall fail2ban
  109. \t${CMSG}3${CEND}. Install/Uninstall ngx_lua_waf
  110. \t${CMSG}4${CEND}. Install/Uninstall Python3.6
  111. \t${CMSG}q${CEND}. Exit
  112. "
  113. read -e -p "Please input the correct option: " Number
  114. if [[ ! "${Number}" =~ ^[1-5,q]$ ]]; then
  115. echo "${CFAILURE}input error! Please only input 1~4 and q${CEND}"
  116. else
  117. case "${Number}" in
  118. 1)
  119. ACTION_FUN
  120. if [ "${install_flag}" = 'y' ]; then
  121. Install_composer
  122. elif [ "${uninstall_flag}" = 'y' ]; then
  123. Uninstall_composer
  124. fi
  125. ;;
  126. 2)
  127. ACTION_FUN
  128. if [ "${install_flag}" = 'y' ]; then
  129. Install_Python
  130. Install_fail2ban
  131. elif [ "${uninstall_flag}" = 'y' ]; then
  132. Uninstall_fail2ban
  133. fi
  134. ;;
  135. 3)
  136. ACTION_FUN
  137. if [ "${install_flag}" = 'y' ]; then
  138. # shellcheck disable=SC2154
  139. [ -e "${nginx_install_dir}/sbin/nginx" ] && Nginx_lua_waf
  140. # shellcheck disable=SC2154
  141. [ -e "${tengine_install_dir}/sbin/nginx" ] && Tengine_lua_waf
  142. enable_lua_waf
  143. elif [ "${uninstall_flag}" = 'y' ]; then
  144. disable_lua_waf
  145. fi
  146. ;;
  147. 4)
  148. ACTION_FUN
  149. if [ "${install_flag}" = 'y' ]; then
  150. Install_Python
  151. elif [ "${uninstall_flag}" = 'y' ]; then
  152. Uninstall_Python
  153. fi
  154. ;;
  155. 5)
  156. ACTION_FUN
  157. if [ "${install_flag}" = 'y' ]; then
  158. Install_Python
  159. Install_Panel
  160. elif [ "${uninstall_flag}" = 'y' ]; then
  161. Uninstall_Panel
  162. fi
  163. ;;
  164. q)
  165. exit
  166. ;;
  167. esac
  168. fi
  169. done
  170. }
  171. if [ ${ARG_NUM} == 0 ]; then
  172. Menu
  173. else
  174. if [ "${composer_flag}" == 'y' ]; then
  175. if [ "${install_flag}" = 'y' ]; then
  176. Install_composer
  177. elif [ "${uninstall_flag}" = 'y' ]; then
  178. Uninstall_composer
  179. fi
  180. fi
  181. if [ "${fail2ban_flag}" == 'y' ]; then
  182. if [ "${install_flag}" = 'y' ]; then
  183. Install_Python
  184. Install_fail2ban
  185. elif [ "${uninstall_flag}" = 'y' ]; then
  186. Uninstall_fail2ban
  187. fi
  188. fi
  189. if [ "${ngx_lua_waf_flag}" == 'y' ]; then
  190. if [ "${install_flag}" = 'y' ]; then
  191. [ -e "${nginx_install_dir}/sbin/nginx" ] && Nginx_lua_waf
  192. [ -e "${tengine_install_dir}/sbin/nginx" ] && Tengine_lua_waf
  193. enable_lua_waf
  194. elif [ "${uninstall_flag}" = 'y' ]; then
  195. disable_lua_waf
  196. fi
  197. fi
  198. if [ "${python_flag}" == 'y' ]; then
  199. if [ "${install_flag}" = 'y' ]; then
  200. Install_Python
  201. elif [ "${uninstall_flag}" = 'y' ]; then
  202. Uninstall_Python
  203. fi
  204. fi
  205. fi