Guest User

gfw3proxy.sh 0.2

a guest
May 9th, 2016
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.68 KB | None | 0 0
  1. #! /bin/bash
  2. # $Author: twfcc@twitter
  3. # $PROG: gfw3proxy.sh
  4. # $description: install gfw.press & 3proxy
  5. # Public domain use as your own risk!
  6. # Test on debian 8 jessie x86_64 Vmware VPS
  7. # You must execute gfw.press by manual
  8. # input: gfw.press/server.sh after script finished.
  9. # $date: May 09, 2016
  10.  
  11. export LANGUAGE=C
  12. export LC_ALL=C
  13. export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  14.  
  15. trap cleanup INT
  16. [ $(pwd) != /root ] && cd $HOME
  17.  
  18. [ $UID -ne 0 ] && {
  19.     echo "Execute this script must be root." >&2 ;
  20.     exit 1 ;
  21. }
  22.  
  23. myip=$(wget -qO - v4.ifconfig.co)
  24.  
  25. cleanup(){
  26.     kill $(ps aux | grep 3proxy | grep -v grep | awk '{print $2}') 2> /dev/null
  27.     rm -rf "$HOME/3proxy" ;
  28.     rm -rf "$HOME/gfw.press" ;
  29.     rm -rf /usr/local/etc/3proxy/ ;
  30.     update-rc.d -f 3proxyinit remove ;
  31.     rm -f /etc/init.d/3proxyinit ;
  32.     exit 1
  33. }
  34.  
  35. 3proxy_install(){
  36.     git clone https://github.com/z3APA3A/3proxy.git ;
  37.     [ $? -eq 0 ] || {
  38.         echo "Clone 3proxy.git failed.exiting..." >&2 ;
  39.         exit 1 ;
  40.     }
  41.     cd 3proxy/ || {
  42.         echo "Cannot change to 3proxy directory." >&2 ;
  43.         exit 1 ;
  44.     }
  45.     make -f Makefile.Linux ;
  46.     [ $? -eq 0 ] && cd src/ ;
  47.     mkdir -p /usr/local/etc/3proxy/bin/ ;
  48.     install 3proxy /usr/local/etc/3proxy/bin/3proxy ;
  49.     install mycrypt /usr/local/etc/3proxy/bin/mycrypt ;
  50.     touch /usr/local/etc/3proxy/3proxy.cfg ;
  51.     mkdir -p /usr/local/etc/3proxy/log/ ;
  52.     chown -R root:root /usr/local/etc/3proxy/ ;
  53.     chown -R 65535 /usr/local/etc/3proxy/log/ ;
  54.     touch /usr/local/etc/3proxy/3proxy.pid ;
  55.     chown 65535 /usr/local/etc/3proxy/3proxy.pid ;
  56.     local cfg
  57.     cfg="/usr/local/etc/3proxy/3proxy.cfg"
  58.     cat >"$cfg"<<EOF
  59. nscache 65536
  60. nserver 8.8.8.8
  61. timeouts 1 5 30 60 180 1800 15 60
  62. daemon
  63. pidfile 3proxy.pid
  64. config 3proxy.cfg
  65. monitor 3proxy.cfg
  66. log log/3proxy.log D
  67. logformat "L%d-%m-%Y %H:%M:%S %z %N.%p %E %U %C:%c %R:%r %O %I %h %T"
  68. rotate 30
  69. auth none
  70. allow * * * 80-88,8080-8088
  71. allow * * * 443,8443
  72. allow * * * 5222,5223,5228
  73. allow * * * 465,587,995
  74. proxy -i127.0.0.1 -a -p3128
  75. flush
  76. chroot /usr/local/etc/3proxy/
  77. setgid 65535
  78. setuid 65535
  79.  
  80. EOF
  81.  
  82.     cd /etc/init.d/ || {
  83.         echo "Cannot change to /etc/init.d/ directory." >&2 ;
  84.         exit 1 ;
  85.     }
  86.     cat >3proxyinit<<EOF
  87. #! /bin/sh
  88. #
  89. ### BEGIN INIT INFO
  90. # Provides: 3Proxy
  91. # Required-Start: $remote_fs $syslog
  92. # Required-Stop: $remote_fs $syslog
  93. # Default-Start: 2 3 4 5
  94. # Default-Stop: 0 1 6
  95. # Short-Description: Initialize 3proxy server
  96. # Description: starts 3proxy
  97. ### END INIT INFO
  98.  
  99. cd /usr/local/etc/3proxy/
  100. case "\$1" in
  101.     start)  echo "Starting 3Proxy" ;
  102.         /usr/local/etc/3proxy/bin/3proxy /usr/local/etc/3proxy/3proxy.cfg
  103.          ;;
  104.      stop)  echo "Stopping 3Proxy" ;
  105.         kill `ps aux | grep 3proxy | grep -v grep | awk '{print \$2}'`
  106.         ;;
  107.         *)  echo Usage: \\\$0 "{start|stop}" ;
  108.         exit 1 ;
  109.         ;;
  110. esac
  111. exit 0
  112.  
  113. EOF
  114.  
  115.     if [ -e 3proxyinit ] ; then
  116.         bash -n 3proxyinit > /dev/null 2>&1 ;
  117.         [ $? -eq 0 ] && {
  118.             chmod +x 3proxyinit ;
  119.             update-rc.d 3proxyinit defaults ;
  120.         } || {
  121.             echo "3proxyinit script is something wrong." >&2 ;
  122.             exit 1 ;
  123.         }
  124.         cd "$HOME" ;
  125.         /etc/init.d/3proxyinit start ;
  126.     else
  127.         echo "3proxyinit script is not exist." >&2 ;
  128.         exit 1
  129.     fi
  130. }
  131.  
  132. gfw_press_install() {
  133.     git clone https://github.com/chinashiyu/gfw.press.git ;
  134.     [ $? -eq 0 ] && cd gfw.press || {
  135.         echo "Clone gfw.press failed.exiting..." >&2 ;
  136.         exit 1 ;
  137.     }
  138.     pw=$(genpass)
  139.     port=$(genport)
  140.     echo "$port $pw" > user.txt ;
  141.     cp -f server.sh server.org ;
  142.     sed -i 's/ -Xm[a-z][0-9]\{1,4\}M//g' server.sh ;
  143.     chmod +x server.sh
  144. }
  145.  
  146. genpass(){
  147.     local i j l u d c count pw
  148.     i=0
  149.     j=1
  150.     u=0
  151.     l=0
  152.     d=0
  153.     pw=$(openssl rand -base64 32 | tr -d '+/0oO=' | cut -c3-18)
  154.     count=${#pw}
  155.     while true ; do
  156.          c=${pw:$i:1}
  157.         [[ "$c" =~ [A-Z] ]] && ((u++))
  158.         [[ "$c" =~ [a-z] ]] && ((l++))
  159.         [[ "$c" =~ [0-9] ]] && ((d++))
  160.         if (($u > 0)) && (($l > 0)) && (($d > 0)) ; then
  161.             break
  162.         fi
  163.         ((i++))
  164.         ((j++))
  165.         if ((j == count)) ; then
  166.             unset pw i j u l c d count
  167.             local i j u l c d count pw
  168.             i=0
  169.             j=1
  170.             u=0
  171.             l=0
  172.             d=0
  173.             pw=$(openssl rand -base64 32 | tr -d '/+0oO' |cut -c3-18)
  174.             count=${#pw}
  175.         fi
  176.     done
  177.     echo "$pw"
  178. }
  179.  
  180. genport(){
  181.     local pick count port
  182.     pick=($(for i in {19901..19999} ;do echo $i ;done))
  183.     count=${#pick[@]}
  184.     port=${pick[$((RANDOM%count-1))]}
  185.     echo "$port"
  186. }
  187.  
  188. apt-get update && apt-get upgrade -y
  189. apt-get install openssl openjdk-7-jre git build-essential libssl-dev -y
  190. 3proxy_install
  191. gfw_press_install
  192. echo ""
  193. echo "Public IP: $myip"
  194. echo "Port: $port"
  195. echo "Password: $pw"
  196. echo ""
  197. echo "Runing gfw.press by manual,"
  198. echo "input: gfw.press/server.sh"
  199. echo "Check gfw.press server status,"
  200. echo "input: cat gfw.press/server.log or"
  201. echo "input: netstat -nlp "
  202. echo "Enjoy"
  203. exit 0
Add Comment
Please, Sign In to add comment