Advertisement
Guest User

gfw3proxy_init.sh problem

a guest
May 30th, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.97 KB | None | 0 0
  1. #! /bin/bash
  2. # $author: twfcc@twitter
  3. # $PROG: gfwproxy-init.sh
  4. # $description: Install gfw.press & 3proxy as system service
  5. # $Usage: $0
  6. # Works on Debian 7/8 and Ubuntu 14.04/15.04
  7. # Public domain use as your own risk!
  8.  
  9. trap cleanup 2
  10.  
  11. export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  12. export LANGUAGE=C
  13. export LC_ALL=C
  14. PATTERN="java -Dfile.encoding=utf-8 -Dsun.jnu.encoding=utf-8 -Duser.timezone=Asia/Shanghai -classpath"
  15.  
  16. cleanup(){
  17.     kill $(ps aux | grep 3proxy | grep -v grep | awk '{print $2}') 2> /dev/null
  18.     rm -rf "$HOME/3proxy" 2> /dev/null
  19.     rm -rf /usr/local/etc/gfw.press/ 2> /dev/null
  20.     rm -rf /usr/local/etc/3proxy/ 2> /dev/null
  21.     update-rc.d -f 3proxyinit remove 2> /dev/null
  22.     rm -f /etc/init.d/3proxyinit 2> /dev/null
  23.     update-rc.d -f gfw.press remove 2> /dev/null
  24.     kill -9 $(ps aux | grep "$PATTERN" | grep -v grep | awk '{print $2}') 2> /dev/null
  25.     rm -f /etc/init.d/gfw.press 2> /dev/null
  26.     exit 1
  27. }
  28.  
  29. [ $UID -ne 0 ] && {
  30.     echo "Execute this script must be root." >&2
  31.     exit 1
  32. }
  33.  
  34. [ $(pwd) != "/root" ] && cd "$HOME"
  35.  
  36. 3proxy_install(){
  37.     git clone https://github.com/z3APA3A/3proxy.git ;
  38.     [ $? -eq 0 ] || {
  39.         echo "Clone 3proxy.git failed.exiting..." >&2 ;
  40.         exit 1 ;
  41.     }
  42.     cd 3proxy/ || {
  43.         echo "Cannot change to 3proxy directory." >&2 ;
  44.         exit 1 ;
  45.     }
  46.     make -f Makefile.Linux ;
  47.     [ $? -eq 0 ] && cd src/ ;
  48.     mkdir -p /usr/local/etc/3proxy/bin/ ;
  49.     install 3proxy /usr/local/etc/3proxy/bin/3proxy ;
  50.     install mycrypt /usr/local/etc/3proxy/bin/mycrypt ;
  51.     touch /usr/local/etc/3proxy/3proxy.cfg ;
  52.     mkdir -p /usr/local/etc/3proxy/log/ ;
  53.     chown -R root:root /usr/local/etc/3proxy/ ;
  54.     chown -R 65535 /usr/local/etc/3proxy/log/ ;
  55.     touch /usr/local/etc/3proxy/3proxy.pid ;
  56.     chown 65535 /usr/local/etc/3proxy/3proxy.pid ;
  57.     local cfg
  58.     cfg="/usr/local/etc/3proxy/3proxy.cfg"
  59.     cat >"$cfg"<<EOF
  60. nscache 65536
  61. nserver 8.8.8.8
  62. nserver 8.8.4.4
  63. timeouts 1 5 30 60 180 1800 15 60
  64. daemon
  65. pidfile 3proxy.pid
  66. config 3proxy.cfg
  67. monitor 3proxy.cfg
  68. log log/3proxy.log D
  69. logformat "L%d-%m-%Y %H:%M:%S %z %N.%p %E %U %C:%c %R:%r %O %I %h %T"
  70. rotate 30
  71. auth none
  72. allow * * * 80-88,8080-8088
  73. allow * * * 443,8443
  74. allow * * * 5222,5223,5228
  75. allow * * * 465,587,995
  76. proxy -i127.0.0.1 -a -p3128
  77. flush
  78. chroot /usr/local/etc/3proxy/
  79. setgid 65535
  80. setuid 65535
  81.  
  82. EOF
  83.  
  84.     cd /etc/init.d/ || {
  85.         echo "Cannot change to /etc/init.d/ directory." >&2 ;
  86.         exit 1 ;
  87.     }
  88.     cat >3proxyinit<<EOF
  89. #! /bin/sh
  90. #
  91. ### BEGIN INIT INFO
  92. # Provides: 3Proxy
  93. # Required-Start: \$remote_fs \$syslog
  94. # Required-Stop: \$remote_fs \$syslog
  95. # Default-Start: 2 3 4 5
  96. # Default-Stop: 0 1 6
  97. # Short-Description: Initialize 3proxy server
  98. # Description: starts 3proxy
  99. ### END INIT INFO
  100.  
  101. cd /usr/local/etc/3proxy/
  102. case "\$1" in
  103.     start)  echo "Starting 3Proxy" ;
  104.         /usr/local/etc/3proxy/bin/3proxy /usr/local/etc/3proxy/3proxy.cfg
  105.          ;;
  106.      stop)  echo "Stopping 3Proxy" ;
  107.         kill \`ps aux | grep 3proxy | grep -v grep | awk '{print \$2}'\`
  108.         ;;
  109.         *)  echo Usage: \\\$0 "{start|stop}" ;
  110.         exit 1 ;
  111.         ;;
  112. esac
  113. exit 0
  114.  
  115. EOF
  116.  
  117.     if [ -e 3proxyinit ] ; then
  118.         bash -n 3proxyinit > /dev/null 2>&1 ;
  119.         [ $? -eq 0 ] && {
  120.             chmod +x 3proxyinit ;
  121.             update-rc.d 3proxyinit defaults ;
  122.         } || {
  123.             echo "3proxyinit script is something wrong." >&2 ;
  124.             exit 1 ;
  125.         }
  126.         cd "$HOME" ;
  127.         /etc/init.d/3proxyinit start ;
  128.     else
  129.         echo "3proxyinit script is not exist." >&2 ;
  130.         exit 1
  131.     fi
  132. }
  133.  
  134. gen_pass_matrix(){
  135.     local  matrix i pick pass count j
  136.     matrix=($(for i in {0..9} {a..z} {A..Z} ; do echo "$i" ;done))
  137.     count=${#matrix[@]}
  138.     for (( j=1 ; j<=16 ; j++ )) ;do
  139.         pick=${matrix[$((RANDOM%count-1))]}
  140.         pass="$pass$pick"
  141.     done
  142.     echo "$pass"
  143. }
  144.  
  145. genpass(){
  146.     local pass lower upper digit
  147.     pass=$(gen_pass_matrix)
  148.  
  149.     while true ; do
  150.         lower=${pass//[!a-z]/}
  151.         upper=${pass//[!A-Z]/}
  152.         digit=${pass//[!0-9]/}
  153.  
  154.         if [ -n "$lower" ] && [ -n "$upper" ] && [ -n "$digit" ]
  155.             then
  156.                 break
  157.             else
  158.                 unset pass
  159.                 pass=$(gen_pass_matrix)
  160.         fi
  161.     done
  162.  
  163.     echo "$pass"
  164. }
  165.  
  166. genport(){
  167.     local pick count port
  168.     pick=($(for i in {19901..19999} ;do echo $i ;done))
  169.     count=${#pick[@]}
  170.     port=${pick[$((RANDOM%count-1))]}
  171.     echo "$port"
  172. }
  173.  
  174. gfw_press_install(){
  175.     cd /usr/local/etc/ || {
  176.     echo "Could not change to /usr/local/etc" >&2 ;
  177.     exit 1 ;
  178.     }
  179.  
  180.     git clone https://github.com/chinashiyu/gfw.press.git ;
  181.     [ $? -eq 0 ] && cd gfw.press || {
  182.         echo "Clone gfw.press failed.exiting..." >&2 ;
  183.         exit 1 ;
  184.     }
  185.  
  186.     pw=$(genpass)
  187.     port=$(genport)
  188.     echo "$port $pw" > user.txt ;
  189.     cp -f server.sh server.org ;
  190.     sed -i 's/ -Xm[a-z][0-9]\{1,4\}M//g' server.sh ;
  191.     chmod +x server.sh
  192.  
  193.     cd /etc/init.d/ || {
  194.         echo "Could not change to /etc/init.d " >&2 ;
  195.         exit 1 ;
  196.     }
  197.  
  198.     cat >gfw.press<<EOF
  199. #! /bin/sh
  200. #
  201. ### BEGIN INIT INFO
  202. # Provides: gfw.press
  203. # Required-Start: \$remote_fs \$syslog
  204. # Required-Stop: \$remote_fs \$syslog
  205. # Default-Start: 2 3 4 5
  206. # Default-Stop: 0 1 6
  207. # Short-Description: Initialize gfw.press
  208. # Description: start gfw.press
  209. ### END INIT INFO
  210.  
  211. PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  212. PATTERN="java -Dfile.encoding=utf-8 -Dsun.jnu.encoding=utf-8 -Duser.timezone=Asia/Shanghai -classpath"
  213. PROGNAME=\`basename \$0\`
  214. RETURN_STATUS=
  215. export PATH PATTERN PROGNAME RETURN_STATUS
  216.  
  217. do_start(){
  218.     do_status
  219.     cd /usr/local/etc/gfw.press/
  220.     if test \$RETURN_STATUS -ne 0 ; then
  221.         _java="java -Dfile.encoding=utf-8 -Dsun.jnu.encoding=utf-8 -Duser.timezone=Asia/Shanghai "
  222.         _java="\${_java}-classpath \`find ./lib/*.jar | xargs echo | sed 's/ /:/g'\`:./bin"
  223.         _pack="press.gfw"
  224.         echo "Strating \$PROGNAME ..."
  225.         \$_java \$_pack.Server >> server.log
  226.     else
  227.         echo "\$PROGNAME is running."
  228.     fi
  229. }
  230.  
  231. do_stop(){
  232.     PIDs=\`ps aux | grep "\$PATTERN" | grep -v grep | awk '{print \$2}'\`
  233.     echo "Stopping \$PROGNAME ..."
  234.     if test "x\$PIDs" != "x" ; then
  235.         kill -9 "\$PIDs"
  236.     else
  237.         echo "\$PROGNAME is not running." >&2
  238.     fi
  239. }
  240.  
  241. do_restart(){
  242.     do_stop
  243.     do_start
  244. }
  245.  
  246. do_status(){
  247.     if ps aux | grep "\$PATTERN" | grep -qv grep ; then
  248.         echo "\$PROGNAME is running."
  249.         RETURN_STATUS=0
  250.     else
  251.         echo "\$PROGNAME is not running."
  252.         RETURN_STATUS=1
  253.     fi
  254. }
  255.  
  256. case "\$1" in
  257.     start) do_start
  258.         ;;
  259.     stop) do_stop
  260.         ;;
  261.     restart) do_restart
  262.         ;;
  263.     status) do_status
  264.         ;;
  265.     *) echo "Usage: \$PROGNAME {start|stop|restart|status}" >&2 ; exit 99
  266.         ;;
  267. esac
  268. exit 0
  269.  
  270. EOF
  271.  
  272. if [ -f "gfw.press" ] ; then
  273.     chmod +x gfw.press ;
  274.     update-rc.d gfw.press defaults ;
  275. else
  276.     echo "gfw.press: no such file or directory." >&2
  277. fi
  278.  
  279. cd "$HOME"
  280. /etc/init.d/gfw.press start
  281. }
  282.  
  283. myip=$(wget -qO - v4.ifconfig.co)
  284. apt-get update && apt-get upgrade -y
  285. apt-get install openssl openjdk-7-jre git build-essential libssl-dev -y
  286. 3proxy_install
  287. gfw_press_install
  288.  
  289. if ps aux | grep "$PATTERN" | grep -qv grep && netstat -nlp | grep -q '3proxy'
  290.     then
  291.         echo "gfw.press is running."
  292.         echo ""
  293.         echo "Public IP: $myip"
  294.         echo "Port: $port"
  295.         echo "Password: $pw"
  296.         echo ""
  297.         echo "Enjoy."
  298.     else
  299.         echo "Install gfw.press failed. cleaning up .." >&2
  300.         cleanup
  301. fi
  302. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement