Guest User

ss-libev-install.sh

a guest
May 15th, 2016
455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.50 KB | None | 0 0
  1. #! /bin/bash
  2. # $author: twfcc@twitter
  3. # $PROG: ss-libev-install.sh
  4. # $description: install ss-libev on debian base os
  5. # $date: May 14, 2016
  6. # Public domain use as your own risk!
  7. # works on ubuntu 14.04/15.04 debian 7/8
  8. # $usage: $0 {-n|-s}
  9. # -n install ss-libev on nat share ipv4 vps
  10. # -s install ss-libev on standard dedicated ip vps
  11.  
  12. cleanup(){
  13.         rm -rf $HOME/shadowsocks-libev ;
  14.         rm -f $HOME/shadowsocks-libev*.deb ;
  15.         exit 1 ;
  16. }
  17.  
  18. trap cleanup INT
  19.  
  20. [ $UID -ne 0 ] && {
  21.         echo "Execute this script must be root." >&2 ;
  22.         exit 1 ;
  23. }
  24.  
  25. [ $(pwd) != "/root" ] && cd "$HOME"
  26.  
  27. case "$1" in
  28.         -n) flag=0 ;;
  29.         -s) flag=1 ;;
  30.          *) echo "Usage: ${0##*/} {-n|-s}" >&2 ;
  31.             echo "-n means install ss-libev on nat vps" >&2 ;
  32.             echo "-s means install ss-libev on standard vps" >&2
  33.             exit 1 ;
  34.             ;;
  35. esac
  36.  
  37. myip=$(wget -qO - v4.ifconfig.co)
  38. myos=$(lsb_release -c | awk '{print $2}')
  39. pw=$(head -c 512 /dev/urandom | md5sum | base64 | cut -c4-19)
  40. source_list="/etc/apt/sources.list"
  41. ss_config="/etc/shadowsocks-libev/config.json"
  42.  
  43. if [ $flag -eq 0 ] ; then
  44.         internal_ip=$(ifconfig venet0:0 \
  45.         | awk -F: '$2 ~ /[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/{print $2}' \
  46.         | cut -d" " -f1)
  47.         port=${internal_ip##*.}01
  48. else
  49.         pick=($(for i in {18801..18899} ;do echo $i ;done))
  50.         count=${#pick[@]}
  51.         port=${pick[$((RANDOM%count-1))]}
  52. fi
  53.  
  54. case "$myos" in
  55.         wheezy) echo "deb http://ftp.debian.org/debian wheezy-backports main" \
  56.                 >> "$source_list"
  57.                 ;;
  58.         jessie) echo "deb http://ftp.debian.org/debian jessie-backports main" \
  59.                 >> "$source_list"
  60.                 ;;
  61.         trusty) :
  62.                 ;;
  63.          vivid) :
  64.                 ;;
  65.              *) echo "This script works on debian base os only." >&2 ;
  66.                 exit 1 ;
  67.                 ;;
  68. esac
  69.  
  70. apt-get update && apt-get upgrade -y
  71. apt-get install git build-essential autoconf libtool libssl-dev \
  72.                 gawk debhelper dh-systemd init-system-helpers pkg-config -y
  73.  
  74. if git clone https://github.com/shadowsocks/shadowsocks-libev.git
  75.         then
  76.                 cd shadowsocks-libev
  77.                 dpkg-buildpackage -us -uc -i
  78.                 cd ..
  79.                 dpkg -i shadowsocks-libev*.deb
  80.         else
  81.                 echo "Clone shadowsocks-libev.git failed." >&2
  82.                 exit 1
  83. fi
  84.  
  85. echo "{" > "$ss_config"
  86. if [ $flag -eq 0 ] ; then
  87.         echo -e "\t\"server\":\"${internal_ip}\"," >> "$ss_config"
  88. else
  89.         echo -e "\t\"server\":\"0.0.0.0\"," >> "$ss_config"
  90. fi
  91. echo -e "\t\"server_port\":${port},"  >> "$ss_config"
  92. echo -e "\t\"local_port\":1080," >> "$ss_config"
  93. echo -e "\t\"password\":\"${pw}\"," >> "$ss_config"
  94. echo -e "\t\"timeout\":300," >> "$ss_config"
  95. echo -e "\t\"method\":\"chacha20\"" >> "$ss_config"
  96. echo "}" >> "$ss_config"
  97.  
  98. /etc/init.d/shadowsocks-libev restart
  99.  
  100. if [ $flag -eq 0 ] ; then
  101.         netstat -nlp | grep -q "${internal_ip}:${port}"
  102.         ret=$?
  103. else
  104.         netstat -nlp | grep -q "0.0.0.0:${port}"
  105.         ret=$?
  106. fi
  107.  
  108. if [ $ret -eq 0 ] ; then
  109.         echo "Here is shadowsocks clinet info as below."
  110.         echo ""
  111.         echo "Public IP:  $myip"
  112.         echo "Port:  $port"
  113.         echo "Method:  chacha20"
  114.         echo "Password:  $pw"
  115.         echo ""
  116.         echo "Enjoy."
  117. else
  118.         echo "Install shadowsocks-libev failed." >&2
  119.         exit 1
  120. fi
  121. exit 0
Advertisement
Add Comment
Please, Sign In to add comment