36 lines
1.1 KiB
Bash
36 lines
1.1 KiB
Bash
#!/bin/sh
|
|
# -*- mode: sh; tab-width: 8; coding: utf-8-unix -*-
|
|
# https://unix.stackexchange.com/questions/293304/using-netcat-for-port-forwarding
|
|
|
|
prog=$( basename $0 .bash )
|
|
PREFIX=/usr/local
|
|
ROLE=proxy
|
|
. /usr/local/bin/usr_local_tput.bash || exit 2
|
|
|
|
if [ ! -d /run/tmp ] ; then
|
|
sudo mkdir /run/tmp
|
|
sudo chown 1777 /run/tmp
|
|
fi
|
|
|
|
[ -z "$MODE" ] && MODE=$(/usr/local/bin/proxy_ping_lib.bash proxy_ping_mode )
|
|
IP=`grep ' external$' /etc/hosts|sed -e 's/ .*//'`
|
|
retval=$?
|
|
if [ $retval -ne 0 ] || [ -z "$IP" ] ; then
|
|
exit $retval
|
|
fi
|
|
if [ "$MODE" = tor -o "$MODE" = gateway -o "$MODE" = selektor ] ; then
|
|
socat -L/run/socat.lck udp-l:53,bind=$IP,fork,reuseaddr udp:127.0.0.1:9053 >/dev/null || \
|
|
WARN 53,bind=$IP in use
|
|
for elt in 9050 9128 ; do
|
|
netstat -nle4 | grep -q $IP:$elt && {
|
|
ERROR $IP:$elt already bound
|
|
continue # exit 1
|
|
}
|
|
DBUG socat -L/run/tmp/socat$elt.lck tcp-l:$elt,bind=${IP},fork,reuseaddr tcp:127.0.0.1:$elt
|
|
socat -L/run/tmp/socat$elt.lck tcp-l:$elt,bind=${IP},fork,reuseaddr tcp:127.0.0.1:$elt &
|
|
done
|
|
#else
|
|
# WARN $MODE
|
|
#fi
|
|
|