i.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #!/usr/bin/env bash
  2. CDN=https://cdn.jsdelivr.net/gh/etherdream/jsproxy-bin@master
  3. JSPROXY_VER=0.0.9
  4. OPENRESTY_VER=1.15.8.1
  5. SUPPORTED_OS="Linux-x86_64"
  6. OS="$(uname)-$(uname -m)"
  7. NGX_DIR="$HOME/openresty"
  8. COLOR_RESET="\033[0m"
  9. COLOR_RED="\033[31m"
  10. COLOR_GREEN="\033[32m"
  11. COLOR_YELLOW="\033[33m"
  12. output() {
  13. local color=$1
  14. shift 1
  15. local sdata=$@
  16. local stime=$(date "+%H:%M:%S")
  17. printf "$color[jsproxy $stime]$COLOR_RESET $sdata\n"
  18. }
  19. log() {
  20. output $COLOR_GREEN $1
  21. }
  22. warn() {
  23. output $COLOR_YELLOW $1
  24. }
  25. err() {
  26. output $COLOR_RED $1
  27. }
  28. install() {
  29. log "下载 nginx 程序 ..."
  30. curl -O $CDN/$OS/openresty-$OPENRESTY_VER.tar.gz
  31. tar zxf openresty-$OPENRESTY_VER.tar.gz
  32. rm -f openresty-$OPENRESTY_VER.tar.gz
  33. local ngx_exe="$NGX_DIR/nginx/sbin/nginx"
  34. local ngx_ver=$($ngx_exe -v 2>&1)
  35. if [[ "$ngx_ver" != *"nginx version:"* ]]; then
  36. err "$ngx_exe 无法执行!尝试编译安装"
  37. exit 1
  38. fi
  39. log "$ngx_ver"
  40. log "nginx path: $NGX_DIR"
  41. log "下载代理服务 ..."
  42. curl -s -O $CDN/server-$JSPROXY_VER.tar.gz
  43. if [ -x ./server/run.sh ]; then
  44. warn "尝试停止当前服务 ..."
  45. ./server/run.sh quit
  46. fi
  47. if [ -d "server" ]; then
  48. backup="$PWD/bak/$(date +%Y_%m_%d_%H_%M_%S)"
  49. warn "当前 server 目录备份到 $backup"
  50. mkdir -p $backup
  51. mv server $backup
  52. fi
  53. tar zxf server-$JSPROXY_VER.tar.gz
  54. rm -f server-$JSPROXY_VER.tar.gz
  55. log "启动服务 ..."
  56. ./server/run.sh
  57. log "服务已开启。后续维护参考 https://github.com/EtherDream/jsproxy"
  58. }
  59. main() {
  60. if [[ "$SUPPORTED_OS" != *"$OS"* ]]; then
  61. err "当前系统 $OS 不支持自动安装。尝试编译安装"
  62. exit 1
  63. fi
  64. if [[ "$USER" != "root" ]]; then
  65. err "自动安装需要 root 权限。如果无法使用 root,尝试编译安装"
  66. exit 1
  67. fi
  68. if ! id -u jsproxy > /dev/null 2>&1 ; then
  69. log "创建用户 jsproxy ..."
  70. groupadd nobody > /dev/null 2>&1
  71. useradd jsproxy -g nobody --create-home
  72. fi
  73. local src=$0
  74. local dst=/home/jsproxy/i.sh
  75. warn "当前脚本移动到 $dst"
  76. mv -f $src $dst
  77. chmod +x $dst
  78. log "切换到 jsproxy 用户,执行安装脚本 ..."
  79. su - jsproxy -c "$dst install"
  80. }
  81. if [[ "$1" == "install" ]]; then
  82. install
  83. else
  84. main
  85. fi