vicf

install-brook

Jan 8th, 2019
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.96 KB | None | 0 0
  1. #! /bin/sh
  2. # $PROG: shell script for installing brook server on asus router.
  3. # $REQUIRE: Asuswrt-merlin installed and entware-ng is installed on /mnt/sda1
  4. # assume router's DDNS service is active
  5. # Tested on asus RT-AC68U powered by asuswrt-merlin version 384.8_2
  6. # No guarantee & responsibility to the author. Use at your own risk.
  7.  
  8. myip=$(wget -qO- ifconfig.co)
  9. p="24$(head -n 30 /dev/urandom | tr -dc "0123456789" | head -c3)"
  10. pw="$(openssl rand -base64 32 | tr -d '+/0oO' | cut -c3-12)"
  11.  
  12.  
  13. url="https://github.com/txthinking/brook/releases/download/v20181212/brook_linux_arm5"
  14.  
  15. if cd /opt/bin/ ; then
  16.         wget --no-check-certificate -qO brook "$url"
  17.         chmod 755 brook
  18. else
  19.         echo "Cannot change path to /opt/bin/." >&2
  20.         echo "Exit install progress..." >&2
  21.         exit 1
  22. fi
  23.  
  24. cd /jffs/scripts/ || {
  25.         echo "Cannot change path to /jffs/scripts/." >&2 ;
  26.         echo "Exit install progress..." >&2 ;
  27.         exit 1
  28. }
  29.  
  30.  
  31. cat >brook-init<<EOF
  32. #! /bin/sh
  33.  
  34. ARG=\$1
  35. RET=0
  36. port="$(echo $p)"
  37. password="$(echo $pw)"
  38.  
  39.  
  40. do_start(){
  41.         /usr/bin/nohup /opt/bin/brook server -l ":\${port}" -p "\$password" 2>> /dev/null >> /dev/null &
  42.         if [ \$? -eq 0 ] ; then
  43.                 echo "Brook server is up."
  44.         else
  45.                 echo "Fail to starting brook server." >&2
  46.         fi
  47. }
  48.  
  49. do_stop(){
  50.         kill \$(ps w | awk '\$5 ~ /brook/{print \$1}') 2> /dev/null
  51. }
  52.  
  53.  
  54. case "\$ARG" in
  55.         start)  do_start ;;
  56.         stop)   do_stop ;;
  57.         *)      echo "Usage: \$(basename \$0) [start|stop]" >&2
  58.                 exit 1 ;;
  59. esac
  60.  
  61. exit \$RET
  62.  
  63. EOF
  64.  
  65. if [ -f "firewall-start" ] ; then
  66.         echo "iptables -I INPUT -p tcp --dport $p -j ACCEPT" >> firewall-start
  67.         echo "iptables -I INPUT -p udp --dport $p -j ACCEPT" >> firewall-start
  68.         echo "ip6tables -I INPUT -p tcp --dport $p -j ACCEPT" >> firewall-start
  69.         echo "ip6tables -I INPUT -p udp --dport $p -j ACCEPT" >> firewall-start
  70. else
  71.         echo "#! /bin/sh" > firewall-start
  72.         echo "iptables -I INPUT -p tcp --dport $p -j ACCEPT" >> firewall-start
  73.         echo "iptables -I INPUT -p udp --dport $p -j ACCEPT" >> firewall-start
  74.         echo "ip6tables -I INPUT -p tcp --dport $p -j ACCEPT" >> firewall-start
  75.         echo "ip6tables -I INPUT -p udp --dport $p -j ACCEPT" >> firewall-start
  76. fi
  77.  
  78.  
  79. if [ -e brook-init ] ; then
  80.         chmod 755 brook-init
  81.         echo "/jffs/scripts/brook-init start" >> services-start
  82.         echo "/jffs/scripts/brook-init stop" >> services-stop
  83. else
  84.         echo "Cannot create brook-init system start/stop script." >&2
  85.         echo "Exit install progress..." >&2
  86.         exit 1
  87. fi
  88.  
  89. ./firewall-start ; sleep 1
  90.  
  91. ./brook-init start ; RET=$? ; sleep 1
  92.  
  93. if [ $RET -eq 0 ] ; then
  94.         echo "Setup is completed."
  95.         echo "Your IP:  $myip"
  96.         echo "Server port:      $p"
  97.         echo "Password: $pw"
  98. else
  99.         echo "Install brook server failed." >&2
  100.         exit 1
  101. fi
  102.  
  103. exit 0
Add Comment
Please, Sign In to add comment