addons.sh 5.7 KB

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