1
0

addons.sh 5.9 KB

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