Skip to content

Instantly share code, notes, and snippets.

@oakaigh
Last active February 22, 2019 12:14
Show Gist options
  • Save oakaigh/47782ea25240b28d569505ebc8f91576 to your computer and use it in GitHub Desktop.
Save oakaigh/47782ea25240b28d569505ebc8f91576 to your computer and use it in GitHub Desktop.
Standard init.d aghostd client
#!/bin/sh /etc/rc.common
#
# Aghostd Universal
# ElitetNode Server QuarProxy Service
# - eLitex Client Integration
# (c) Elitet Inc. 2018-2019
# Jared Hillier, Lindsay J. Gibson
#
# Service Settings
# - Constants
tarSrvPort=53
ELTXTOK="http://elitex.w3.ext.caraconnects.us:5122"
# Systemd Configuration
START=100
# < --------------------------------- >
branding="QuarProxy Service Extension"
copyright="(c) eLitet Inc. 2018-2019"
estSrvAddr=`sed -n '/nameserver/p' /etc/resolv.conf | head -1`
indent() { sed 's/^/ /' ; }
status() {
ansi() { echo -e "\e[${1}m${@:2}\e[0m"; }
b() { ansi 1 "$@"; }
d() { ansi 2 "$@"; }
i() { ansi 3 "$@"; }
u() { ansi 4 "$@"; }
_() { echo -e "($(u $@))"; }
red() { ansi 31 "$@"; }
green() { ansi 32 "$@"; }
yellow() { ansi 33 "$@"; }
chain_exists()
{
local chain_name="$1" ; shift
[ $# -eq 1 ] && local table="--table $1"
iptables $table -n --list "$chain_name" >/dev/null 2>&1
}
statusCode=$(red "Service undeployed")
stats=$(d "- iptables-based traffic routing not configured")
if [ $@ == '-' ]; then
statusCode=$(green "Settings applied")
stats=$({
printf " Resolver querying\n$(d $tarSrvInLang)" ;
printf " Port redirection\n($tarPortInDst->$tarPortInSrc) $(d $tarAddrInLang)" ;
})
elif $(chain_exists ELTX_OUTPUT) && $(chain_exists ELTX_PREROUTING) ; then
statusCode=$(yellow "Service deployed")
stats=$({
iptables -L ELTX_OUTPUT -t nat ;
iptables -L ELTX_PREROUTING -t nat ;
})
fi
printf "$branding\n ● Status | %s\n Statistics >\n%s\n" $statusCode $stats
}
usage() {
echo
echo -e "$branding"
echo -e "$copyright"
echo -e "- LEDE init.d client integration"
echo -e "Syntax: $0 {start|stop|restart}"
echo
}
stop() {
iptables -t nat -F ELTX_OUTPUT
iptables -t nat -F ELTX_PREROUTING
}
start() {
tarSrvInLang=`wget -qO- $ELTXTOK/nameservers`
tarPortInLang=`wget -qO- $ELTXTOK/ports`
tarAddrInLang=`wget -qO- $ELTXTOK/candidates`
tarPortInDst=`echo $tarPortInLang | cut -d "-" -f 1`
tarPortInSrc=`echo $tarPortInLang | cut -d "-" -f 2`
iptables -t nat -N ELTX_OUTPUT
iptables -t nat -N ELTX_PREROUTING
for tarAddr in $tarAddrInLang
do
iptables -t nat -A ELTX_OUTPUT -d $tarAddr -p tcp --dport $tarPortInDst -j DNAT --to-destination $tarAddr:$tarPortInSrc
iptables -t nat -A ELTX_PREROUTING -d $tarAddr -p tcp --dport $tarPortInDst -j DNAT --to-destination $tarAddr:$tarPortInSrc
done
for tarAddr in $tarSrvInLang
do
if [ `echo $tarAddr | xargs` == "self" ]; then
ELTXTOK_=`echo $ELTXTOK | awk -F[/:] '{print $4}'`
tarAddr=`nslookup $ELTXTOK_ | awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH);}{print ip}' | awk 'NF' | tail -n1`
fi
iptables -t nat -A ELTX_OUTPUT -p udp --dport $tarSrvPort -j DNAT --to $tarAddr:$tarSrvPort
done
iptables -t nat -A OUTPUT -j ELTX_OUTPUT
iptables -t nat -A PREROUTING -j ELTX_PREROUTING
status - | indent
}
case "$1" in
start) start ;;
stop) stop ;;
retart) stop ; start ;;
*) usage | indent ;;
esac
@oakaigh
Copy link
Author

oakaigh commented Feb 22, 2019

opkg update
opkg install kmod-tcp-bbr

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment