tunnel.sh

· antonio's pastes · raw

expires: never

 1tunnel() {
 2    TUNNEL_TYPE=""
 3    TUNNEL_ENDPOINT=""
 4    TUNNEL_ARGS=""
 5
 6    case $1 in
 7        http|https)
 8            TUNNEL_TYPE="-R"
 9            TUNNEL_ENDPOINT="$([[ $1 == "http" ]] && echo "80" || echo "443"):"
10
11            if [ -z $2 ]; then
12                echo "Tunnel provided incorrect port. Usage: tunnel $1 <port>"
13                return
14            fi
15
16            if [ ! -z $3 ]; then
17                TUNNEL_ENDPOINT="$3:${TUNNEL_ENDPOINT}"
18            fi
19
20            LOCAL_PORT=$2
21            if [[ $LOCAL_PORT != *":"* ]]; then
22                LOCAL_PORT="localhost:$2"
23            fi
24
25            TUNNEL_ENDPOINT+="$LOCAL_PORT"
26            echo "Starting ${1^^} tunnel to $LOCAL_PORT"
27            ;;
28        tcp)
29            TUNNEL_TYPE="-R"
30            TUNNEL_ENDPOINT="${3:-0}:"
31
32            if [ -z $2 ]; then
33                echo "Tunnel provided incorrect port. Usage: tunnel $1 <port>"
34                return
35            fi
36
37            LOCAL_PORT=$2
38            if [[ $LOCAL_PORT != *":"* ]]; then
39                LOCAL_PORT="localhost:$2"
40            fi
41
42            TUNNEL_ENDPOINT+="$LOCAL_PORT"
43            echo "Starting ${1^^} tunnel to $LOCAL_PORT"
44            ;;
45        *)
46            echo "unknown tunnel"
47            return
48            ;;
49    esac
50
51    ssh $TUNNEL_TYPE $TUNNEL_ENDPOINT tuns.sh $TUNNEL_ARGS
52}