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}