Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /bin/sh
- # $PROG: shell script for installing brook server on asus router.
- # $REQUIRE: Asuswrt-merlin installed and entware-ng is installed on /mnt/sda1
- # assume router's DDNS service is active
- # Tested on asus RT-AC68U powered by asuswrt-merlin version 384.8_2
- # No guarantee & responsibility to the author. Use at your own risk.
- myip=$(wget -qO- ifconfig.co)
- p="24$(head -n 30 /dev/urandom | tr -dc "0123456789" | head -c3)"
- pw="$(openssl rand -base64 32 | tr -d '+/0oO' | cut -c3-12)"
- url="https://github.com/txthinking/brook/releases/download/v20181212/brook_linux_arm5"
- if cd /opt/bin/ ; then
- wget --no-check-certificate -qO brook "$url"
- chmod 755 brook
- else
- echo "Cannot change path to /opt/bin/." >&2
- echo "Exit install progress..." >&2
- exit 1
- fi
- cd /jffs/scripts/ || {
- echo "Cannot change path to /jffs/scripts/." >&2 ;
- echo "Exit install progress..." >&2 ;
- exit 1
- }
- cat >brook-init<<EOF
- #! /bin/sh
- ARG=\$1
- RET=0
- port="$(echo $p)"
- password="$(echo $pw)"
- do_start(){
- /usr/bin/nohup /opt/bin/brook server -l ":\${port}" -p "\$password" 2>> /dev/null >> /dev/null &
- if [ \$? -eq 0 ] ; then
- echo "Brook server is up."
- else
- echo "Fail to starting brook server." >&2
- fi
- }
- do_stop(){
- kill \$(ps w | awk '\$5 ~ /brook/{print \$1}') 2> /dev/null
- }
- case "\$ARG" in
- start) do_start ;;
- stop) do_stop ;;
- *) echo "Usage: \$(basename \$0) [start|stop]" >&2
- exit 1 ;;
- esac
- exit \$RET
- EOF
- if [ -f "firewall-start" ] ; then
- echo "iptables -I INPUT -p tcp --dport $p -j ACCEPT" >> firewall-start
- echo "iptables -I INPUT -p udp --dport $p -j ACCEPT" >> firewall-start
- echo "ip6tables -I INPUT -p tcp --dport $p -j ACCEPT" >> firewall-start
- echo "ip6tables -I INPUT -p udp --dport $p -j ACCEPT" >> firewall-start
- else
- echo "#! /bin/sh" > firewall-start
- echo "iptables -I INPUT -p tcp --dport $p -j ACCEPT" >> firewall-start
- echo "iptables -I INPUT -p udp --dport $p -j ACCEPT" >> firewall-start
- echo "ip6tables -I INPUT -p tcp --dport $p -j ACCEPT" >> firewall-start
- echo "ip6tables -I INPUT -p udp --dport $p -j ACCEPT" >> firewall-start
- fi
- if [ -e brook-init ] ; then
- chmod 755 brook-init
- echo "/jffs/scripts/brook-init start" >> services-start
- echo "/jffs/scripts/brook-init stop" >> services-stop
- else
- echo "Cannot create brook-init system start/stop script." >&2
- echo "Exit install progress..." >&2
- exit 1
- fi
- ./firewall-start ; sleep 1
- ./brook-init start ; RET=$? ; sleep 1
- if [ $RET -eq 0 ] ; then
- echo "Setup is completed."
- echo "Your IP: $myip"
- echo "Server port: $p"
- echo "Password: $pw"
- else
- echo "Install brook server failed." >&2
- exit 1
- fi
- exit 0
Add Comment
Please, Sign In to add comment